Principe:
Débugger un exécutable pour trouver quelle entrée nous donnera un shell, et l'exploiter pour lire le flag
Infos (cf menu latéral):
🚩 Flaggué! +100 points gagnés —
💾 Téléchargez les fichiers du challenge
404CTF{C_7r0P_F4C113_D3_PWN_14_H411384rD3}
Le challenge
edb
Dans edb, il vous faudra utiliser F8 pour avancer lorsque le programme se lance ("next instruction"). Si vous utilisez F9 ("Continue") alors l'exécution avancera jusqu'au fgets, attendra votre entrée, la lira et continuera immédiatement jusqu'au return, dépassant les deux cmp et vous louperez l'information essentielle.
Donc, favorisez le plus possible les "Step into" (utile en cas de call) et les step out si vous êtes déjà dans une lib.
0xcafebebe et 0xdeadbeefCes valeurs m'ont fait marrer: Café bébé et Dead Beef! Ce sont d'ailleurs des valeurs qu'on retrouve dans des exemples sur internet
0xefbeadde en dessous de la vue CPU!
cafebebedeadbeef, les 5 lignes * 8chars précédents semblent ignorésScript et exploit
On voit alors que le programme nous ouvre un /bin/bash (un shell) qu'on pourra exploiter pour lire le flag
J'ai toujours galéré à livrer mes payloads pour les exploitations de binaires, car le shell se referme immédiatement généralement. Le pattern {cat payload.dat;cat} semble bien marcher pour éviter cela
Flag: 404CTF{C_7r0P_F4C113_D3_PWN_14_H411384rD3}