task3
task3
Platform: rev-kids20.forkbomb.ru | Category: Reversing | Type: Challenge | Difficulty: Easy | OS: Linux | Author: XESXOR | Date: 2026-03-09 | Status: Solved Techniques: constraint_solving, disassembly, static_analysis, string_reversal_check
Summary
ELF 32-bit binary that reads from two files (Hello1 and Hello2), performs validation checks, and prints the flag if both checks pass.
task3 — Reverse Kids 2.0
Description
Complete the checks, and app will print the flag.
ELF 32-bit binary that reads from two files (Hello1 and Hello2), performs validation checks, and prints the flag if both checks pass.
Analysis
Reconnaissance
bash read-only • copy allowed$ file task3 task3: ELF 32-bit LSB executable, Intel 80386, dynamically linked, not stripped $ strings task3 Hello1 Hello2 NOOOOO NOT AGAIN! Nope Flag{%s}
The binary is not stripped, revealing function names: main, check, check2.
Reverse Engineering
Three key functions identified:
main(): Opens files Hello1 and Hello2, reads 8-character strings from each, calls check() and check2(), prints flag if both pass.
check(): Verifies that content of Hello2 is the exact reverse of Hello1. Prints "NOOOOO" or "NOT AGAIN!" and exits on failure.
check2(): Enforces 8 character constraints on the string from Hello1:
| Constraint | Result |
|---|---|
char[0] == 0x7a | char[0] = 'z' |
char[1] == 0x66 | char[1] = 'f' |
char[7] == 0x73 | char[7] = 's' |
char[3] == char[7] | char[3] = 's' |
char[2] == char[3] | char[2] = 's' |
char[0] == char[6] | char[6] = 'z' |
char[5] == 0x69 | char[5] = 'i' |
char[5] - char[4] == 8 | char[4] = 0x69 - 8 = 0x61 = 'a' |
| |
Solution
Combining all constraints:
- Position 0: 'z'
- Position 1: 'f'
- Position 2: 's'
- Position 3: 's'
- Position 4: 'a'
- Position 5: 'i'
- Position 6: 'z'
- Position 7: 's'
Hello1: zfssaizs
Hello2 (reverse): sziassfz
bash read-only • copy allowed# Create input files echo -n "zfssaizs" > Hello1 echo -n "sziassfz" > Hello2 # Run binary ./task3 # Output: Flag{REDACTED}