mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
34 lines
2.6 KiB
Markdown
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}}
|