[TUCTF 2017]Vuln-chat[pwn]

Voici les write-up des challenges Vuln-chat et Vuln-chat 2 qui valaient 50 et 100 points.

Vuln-chat

Voici le code du binaire :

Posons un breakpoint sur les deux scanf en essayant d’écraser des valeurs utiles dans la pile, nous pouvons voir que la format string du second scanf à été écrasée par l’entrée du premier scanf :

Estimons le nombre d’octet à écrire pour écraser la format string du second scanf en envoyant cette chaîne « Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9 » avec un breakpoint sur le second scanf :

Il faut donc écrire 20 octets, nous pouvons maintenant insérer une format string qui rendra ce second scanf  vulnérable au buffer overflow pour écraser l’adresse de retour dans la pile avec :

 

Nous avons bien changer la format string du second scanf, il est maintenant vulnérable a un buffer overflow classique :

Nous contrôlons bien EIP, il ne reste plus qu’a le rediriger sur la fonction printFlag à l’adresse 0x0804856b est le tour est joué !

voici l’exploit final :

Vuln-chat 2.0

Ce deuxième challenge vaut 100 points.

lançons le programme en entrant « test » dans le premier scanf et un pattern dans le second.

Program received signal SIGSEGV (fault address 0x8043462)

Nous segfaultons à l’adresse 0x8043462, nous pouvons voir que le 3464 a la fin de cette adresse fait parti de notre buffer :

Il faut donc écrire 43 caractère puis les deux caractere vous pour arriver a l’adresse 0x8048672 qui est celle de la fonction printFlag, en little-endian biensur donc « \x72\x86 ».

Voici l’exploit final :

Voilà ! Bonne journée !

Add a Comment

Votre adresse de messagerie ne sera pas publiée.