CTF TOPIC · 8 FLAGS · 22 MIN
Reversing fundamentals
Reading a check, strings built at runtime, and undoing a single-byte XOR.
Reverse engineering means working out what a program does, often without its source. Start by reading any logic you can see: client-side password checks reveal their own answer. Watch for flags assembled from parts at runtime to defeat a simple search. And learn XOR: data XOR-ed with a key is recovered by XOR-ing with the same key again. These ideas scale up to real binaries later.
A first example
if (input === expected) ; a + b + c ; byte XOR 0x42 twice = byte.First moves
- Run strings before anything else
- Find the comparison: what is input checked against?
- Trace values built at runtime
- Invert transforms in reverse order
- XOR again with the same key to undo XOR
The challenges
- Read the check backwards · Easy · 20 XP
- Trace every byte · Medium · 30 XP
- Follow the accumulator · Medium · 30 XP
- Read the check · Easy · 20 XP
- Rebuild the string · Easy · 20 XP
- Undo the XOR · Hard · 40 XP
- String.fromCharCode · Medium · 30 XP
- Undo the transforms · Hard · 40 XP
Find the flags yourself.
Sign in to open the evidence, use the in-browser tools and submit flags. Your progress stays with your account.
Open this topic →