Ret2plt
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Cilj ove tehnike bi bio da procuri adresa iz funkcije iz PLT-a kako bi se moglo zaobići ASLR. To je zato što, na primer, ako procurite adresu funkcije puts
iz libc-a, možete zatim izračunati gde je baza libc
-a i izračunati ofsete za pristup drugim funkcijama kao što su system
.
Ovo se može uraditi sa pwntools
payload-om kao što je (odavde):
Napomena kako se puts
(koristeći adresu iz PLT-a) poziva sa adresom puts
koja se nalazi u GOT-u (Global Offset Table). To je zato što do trenutka kada puts
ispiše GOT unos puts
, ovaj unos će sadržati tačnu adresu puts
u memoriji.
Takođe, obratite pažnju na to kako se adresa main
koristi u eksploitu, tako da kada puts
završi svoju izvršavanje, binarni program ponovo poziva main
umesto da izlazi (tako da će otkrivena adresa ostati važeća).
Napomena kako da bi ovo funkcionisalo, binarni program ne može biti kompajliran sa PIE ili morate pronaći leak da zaobiđete PIE kako biste znali adresu PLT-a, GOT-a i main. U suprotnom, prvo morate zaobići PIE.
Možete pronaći puni primer ovog zaobilaženja ovde. Ovo je bio konačni exploit iz tog primera:
64 bita, ASLR omogućen, ali bez PIE, prvi korak je popuniti preliv do bajta 0x00 kanarija, a zatim pozvati puts i leak-ovati ga. Sa kanarijom se kreira ROP gadget za pozivanje puts da leak-uje adresu puts iz GOT-a i zatim ROP gadget za pozivanje system('/bin/sh')
64 bita, ASLR omogućen, bez kanarije, stack overflow u main-u iz funkcije deteta. ROP gadget za pozivanje puts da leak-uje adresu puts iz GOT-a, a zatim pozvati jedan gadget.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)