license-gate
- •
Attribution
- •
Solved by Fauzi Ismail during the competition. These are rn’s study notes based on the teammate’s documented solve, not an independent rn solve.
- •
- •
What it asked
- •
Reverse a small ELF validator and recover the license string compared with user input.
- •
- •
Approach
- •
stringsexposed a hexadecimal blob andVER-ISAKOV. Disassembly showed the program reversing that text toVOKASI-REV, decoding the blob, XORing it with the repeated key, and comparing the result withstrcmp. - •
For decoded ciphertext byte and key length 10, .
- •
Recovering the exact expected input is deterministic; guessing licenses is unnecessary.
- •
- •
Solution
- •
blob = bytes.fromhex( "1d0202111d7156202020333d38240c3d45371a31373b2e1e3d26590d313e3310" "2c34363a5e2f" ) key = b"VOKASI-REV" license_value = bytes(c ^ key[i % len(key)] for i, c in enumerate(blob)).decode() print(license_value) # ./license_gate "$license_value"
- •
- •
Verification
- •
The hex blob decrypts locally to the flag recorded by the document.
- •
- •
Concepts
- •
Static string triage; control-flow confirmation in disassembly; hex decoding; repeated-key XOR.
- •
- •