2.6 KiB
Ret2ret & Reo2pop
{{#include ../../../banners/hacktricks-training.md}}
Ret2ret
Glavni cilj ove tehnike je da pokuša da obiđe ASLR zloupotrebom postojećeg pokazivača na steku.
U suštini, prelivanja steka obično uzrokuju stringovi, a stringovi se završavaju nul bajtom na kraju u memoriji. Ovo omogućava da se pokuša smanjiti mesto na koje pokazuje postojeći pokazivač na steku. Dakle, ako je stek sadržavao 0xbfffffdd
, ovo prelivanje bi moglo da ga transformiše u 0xbfffff00
(obratite pažnju na poslednji nulti bajt).
Ako ta adresa pokazuje na naš shellcode na steku, moguće je usmeriti tok ka toj adresi dodavanjem adresa u ret
instrukciju dok se ne dostigne.
Stoga bi napad izgledao ovako:
- NOP klizaljka
- Shellcode
- Prepisivanje steka iz EIP-a sa adresama do
ret
(RET klizaljka) - 0x00 dodat od stringa modifikujući adresu sa steka tako da pokazuje na NOP klizaljku
Prateći ovu vezu možete videti primer ranjivog binarnog fajla i u ovom eksploataciju.
Ret2pop
U slučaju da možete pronaći savršeni pokazivač na steku koji ne želite da modifikujete (u ret2ret
menjamo poslednji najniži bajt u 0x00
), možete izvesti isti ret2ret
napad, ali dužina RET klizaljke mora biti skraćena za 1 (tako da konačni 0x00
prepisuje podatke neposredno pre savršenog pokazivača), a poslednja adresa RET klizaljke mora pokazivati na pop <reg>; ret
.
Na ovaj način, podatak pre savršenog pokazivača biće uklonjen sa steka (to su podaci pogođeni 0x00
) i konačni ret
će pokazivati na savršenu adresu na steku bez ikakvih promena.
Prateći ovu vezu možete videti primer ranjivog binarnog fajla i u ovom eksploataciju.
References
{{#include ../../../banners/hacktricks-training.md}}