Méthodologie Reverse en CTF
★★★★★
Checklist d'analyse
# 1. Analyse rapide
file ./binary
checksec ./binary
strings -n 8 ./binary | grep -iE "flag|key|pass|input"
ldd ./binary
# 2. Analyse statique
Ghidra/Radare2/IDA -> chercher main()
Identifier les fonctions de vérification
Tracer le flux : input -> traitement -> comparaison
# 3. Analyse dynamique
GDB : breakpoint avant la comparaison finale
Frida : hooker strcmp/memcmp -> voir le flag
strace : quels fichiers/syscalls ?
# 4. Types de challenges courants
checking : vérification de flag (comparer octets)
keygen : générer un serial valide
cryptography : algo custom à reverser
VM : machine virtuelle maison à émulent Cas particuliers courants
# Algorithme de vérification inversé
# 1. Trouver la fonction compare
# 2. Comprendre la transformation : flag -> encoded
# 3. Inverser la transformation : encoded -> flag
# Exemple XOR
# Si : encoded[i] = flag[i] XOR key[i]
# Alors : flag[i] = encoded[i] XOR key[i]
# Angr (résolution symbolique automatique)
python3 -c "
import angr
p = angr.Project('./binary')
sim = p.factory.simgr()
sim.explore(find=0x401234, avoid=0x401567) # adresse succes/echec
print(sim.found[0].posix.dumps(0)) # affiche le flag
"