[Junior 34c3CTF]Git Wrapping Factory[pwn]

Voici le write-up d’un challenge de la catégorie « pwn » du Junior 34c3 CTF.

Description du challenge :  Description challenge

Tout d’abord nous lançons le challenge et nous connectons en local,

nous pouvons avoir le menu à l’aide de la commande help :

La commande modinfo nous permet d’avoir l’adresse de base :

Et la fonction wrap nous permets d’envoyer un buffer et de l’afficher dans un cadeau en ascii art :

Regardons maintenant le binaire dans binary ninja (ou autre), nous pouvons voir une fonction « spawn_shell » , il suffira donc de re diriger l’exécution du programme vers cette fonction :

spawn_shell

Nous devons donc abuser de la fonction wrap, pour cela il suffit d’entrer une taille négative, celle ci donnera un nombre positive très grand car l’integer de la taille du read est unsigned.

Envoyons donc -1 et un pattern pour trouver l’offset qui écrasera l’adresse de retour de la fonction :

après le segfault

Nous pouvons voir dans GDB que le programme segfault bien au ret car l’adresse est écrasée par notre pattern et est égale à 0x3765413665413565 qui est à l’offset 136 :

Écriture de l’exploit :

Tout d’abord nous allons nous connecter et recevoir le premier message :

Ensuite nous récupérons l’adresse de base à l’aide de la commande modinfo :

puis nous procédons au buffer overflow :

Lançons notre exploit :

Nous avons le flag !

Voici le code de l’exploit complet :

 

Add a Comment

Votre adresse de messagerie ne sera pas publiée.