Challenges: Reversing ELF (TryHackMe)

Search for a command to run...

No comments yet. Be the first to comment.
Link to the challenge on TryHackMe: Modern Web Stacks Introduction During a time-boxed engagement, the first tester to identify Apache/2.4.49 in a Server: header already knows the exact CVE before the

Link to the challenge/walkthrough on TryHackMe: Broken Authentication Introduction Authentication is the process by which a web application verifies the identity of the user making a request. It typic

Link to the HealthGPT AI security CTF challenge on TryHackMe. Meet HealthGPT, a well-meaning virtual assistant used by a busy healthcare team. It helps clinicians look up procedures, draft notes, and

Link to the section of the AI Odyssey CTF on TryHackMe: Token City. It covers challenges like: ML Sec: The Loan Arranger | AI Sec + DFIR: Rogue Commit | AI Sec + Web App Sec: Sealed Substation | Agent

Link to the Privilege Escalation Challenge on TryHackMe: Linux Privilege Escalation: Automation Introduction By now, you should have an understanding of basic privilege escalation techniques and how t

This series of CrackMe challenges serves as a progressive introduction to binary reverse engineering. Each task gradually increases in complexity, encouraging the use of common tools such as strings, objdump, hexdump, and scripting in Python to analyze executables and recover hidden information. Starting with simple warmups and moving into password recovery and flag extraction, these challenges provide hands-on experience in dissecting binaries and sharpening problem-solving techniques often encountered in Capture the Flag (CTF) exercises and practical reverse engineering.
Let's start with a basic warmup, can you run the binary?
Answer the questions below
What is the flag? flag{not_that_kind_of_elf}
file crackme1
ls -la crackme1
chmod +x crackme1 && ./crackme1
strings crackme1
hexdump -C crackme1 | head -20
strings crackme1 | grep -E "[a-zA-Z]{3,}"
strings crackme1 | grep -v "^_" | grep -v "^\./" | grep -v "^[A-Z]" | grep -v "^[0-9]" | grep -v "^$"
objdump -d crackme1 2>/dev/null | head -50
objdump -d crackme1 2>/dev/null | grep -A 50 "<main>"
objdump -d crackme1 2>/dev/null | grep -A 100 "<main>" | head -100
python3 -c "
values = [0x25, 0x2b, 0x20, 0x26, 0x3a, 0x2d, 0x2e, 0x33, 0x1e, 0x33, 0x27, 0x20, 0x33, 0x1e, 0x2a, 0x28, 0x2d, 0x23, 0x1e, 0x2e, 0x25, 0x1e, 0x24, 0x2b, 0x25, 0x3c, 0xffffffbf & 0xFF]
base = 0x41 # ASCII 'A'
result = ''
for val in values:
char_val = (base + val) & 0xFF
result += chr(char_val)
print('Flag:', result)
"
flag{not_that_kind_of_elf}
Find the super-secret password! and use it to obtain the flag
Answer the questions below
What is the super secret password ? super_secret_password
What is the flag ? flag{if_i_submit_this_flag_then_i_will_get_points}
chmod +x crackme2
file crackme2
strings crackme2
objdump -d crackme2 2>/dev/null | grep -A 50 "<main>"
objdump -d crackme2 2>/dev/null | grep -A 30 "<giveFlag>"
objdump -d crackme2 2>/dev/null | grep -A 50 "<giveFlag>" | tail -30
objdump -s crackme2 2>/dev/null | grep -A 5 -B 5 "super_secret_password"
objdump -s crackme2 2>/dev/null | grep -A 20 "80486"
flag{if_i_submit_this_flag_then_i_will_get_points}
Use basic reverse engineering skills to obtain the flag
Answer the questions below
What is the flag? f0r_y0ur_5ec0nd_le55on_unbase64_4ll_7h3_7h1ng5
Analyze and find the password for the binary?
Answer the questions below
What is the password ? my_m0r3_secur3_pwd
What will be the input of the file to get output Good game ?
Answer the questions below
What is the input ? OfdlDSA|3tXb32~X3tX@sX`4tXtz
Analyze the binary for the easy password
Answer the questions below
What is the password ? 1337_pwd
Analyze the binary to get the flag
Answer the questions below
What is the flag ? flag{much_reversing_very_ida_wow}
Analyze the binary and obtain the flag
Answer the questions below
What is the flag ? flag{at_least_this_cafe_wont_leak_your_credit_card_numbers}
By working through CrackMe1 to CrackMe8, we explored fundamental reverse engineering workflows: inspecting strings, analyzing assembly, identifying hidden logic, and even decoding obfuscated data. The exercises demonstrated how persistence, systematic analysis, and the right tools reveal secrets embedded in executables. While the early levels focused on simple static inspection, later challenges required deeper reasoning and pattern recognition. Collectively, these challenges not only build technical confidence but also prepare us for more advanced reversing scenarios. With these foundations in place, tackling harder CTF problems or real-world reverse engineering tasks becomes far more approachable.