34 lines
2.6 KiB
Markdown

# 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**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2ret.c) možete videti primer ranjivog binarnog fajla i [**u ovom**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2retexploit.c) 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**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2pop.c) možete videti primer ranjivog binarnog fajla i [**u ovom**](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/ASLR%20Smack%20and%20Laugh%20reference%20-%20Tilo%20Mueller/ret2popexploit.c) eksploataciju.
## References
- [https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md](https://github.com/florianhofhammer/stack-buffer-overflow-internship/blob/master/NOTES.md)
{{#include ../../../banners/hacktricks-training.md}}