Pet Companion
Dernière mise à jour
Cet article vous a-t-il été utile ?
Dernière mise à jour
Cet article vous a-t-il été utile ?
Catégorie: Pwn Difficulté: easy Flag: HTB{c0nf1gur3_w3r_d0g}
Pet companion is an easy difficulty challenge that features ret2csu
vulnerability in glibc-2.27
.
Ce challenge tourne sur un docker, disponible sur
On a le buffer user_input
qui fait 64 bytes (8 x 8 puisque local_40
jusque local_10
sont la suite du buffer)
Plus loin on read
0x100 soit 256 bytes, on a donc un dépassement de tampon de 256 - 64 = 192 bytes
Avec checksec
on peut regarder les propriétés de l’exécutable
Il n’y a pas de canary donc le buffer overflow sera plus simple à exploiter
Il n’y a pas de PIE, donc même si les adresses des librairies changent, celles du programme resteront les mêmes
Pour ça on va utiliser la GOT (Global Offset Table) qui contient les adresses des variables globales et des fonctions utilisées par le programme, mais dont l'emplacement exact dans la mémoire n'est pas connu au moment de la compilation. Dedans on trouvera les adresses des fonctions read
et write
de la libc par exemple
Les étapes à faire :
Faire un ROP Chain pour leak l’adresse d’une fonction de la libc qui se trouve dans la GOT puis retourner dans le main pour repasser dans la fonction read
Déduire l’adresse de la libc à partir de ce leak
Utiliser l’adresse de la libc pour choper celle de la fonction system
Utiliser notre 2nd input pour faire un nouvel ROP Chain sur system(”/bin/sh”)
Une fois le shell obtenu, il suffit de faire un cat flag.txt
pour récupérer le flag