Protostar – format 4

Aujourd’hui nous allons résoudre le challenge format 4 de la VM protostar , voici le lien du challenge https://exploit-exercises.com/protostar/format4/ )

Voici le code source du binaire à exploiter :

La faille de type format string de ce binaire est à la ligne 20, pour corriger cette faille il faut remplacer « printf(buffer) » par « printf(« %s »,buffer) » .

Cette fois ci il faut rediriger l’exécution vers la fonction hello, pour cela nous allons écraser l’adresse de la fonction exit de la Global Offset Table par l’adresse de la fonction hello.

Tout d’abord cherchons à lire l’adresse AAAA que nous entrons :

Il faut donc entrer 4 %x pour lire l’adresse entrée.

Maintenant récupérons l’adresse de exit dans la Global Offset Table, c’est à cette adresse que nous écrirons :

L’adresse à écraser est donc 0x8049724 .

Nous testons donc l’exploit suivant :

 

L’exploit fonctionne correctement , récupérons l’adresse de la fonction hello :

Il faut maintenant écrire 0804 a la place de 84bb , mais comme 84bb est supérieur à 0804 nous écrirons 10804 , le 1 sera tronqué et ne sera donc pas dans l’adresse nous obtiendrons l’adresse 0x80484b4

0x10804 – 0x84bb = 33609 : on obtient 07fd il faut donc écrire 33609 + (0x804-0x07fd) = 33616

nous obtenons la bonne adresse dans gdb :

Testons notre exploit hors gdb :

 

La fonction hello est bien exécutée , le challenge est réussi !

Add a Comment

Votre adresse de messagerie ne sera pas publiée.