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 0xdeadbeef
Ces 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}