6.5 KiB
WWW2Exec - GOT/PLT
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @hacktricks_live.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
GOT: Globalna tabela offseta
Globalna tabela offseta (GOT) je mehanizam koji se koristi u dinamički povezanim binarnim fajlovima za upravljanje adresama spoljnih funkcija. Pošto ove adrese nisu poznate do vremena izvršavanja (zbog dinamičkog povezivanja), GOT pruža način da se dinamički ažuriraju adrese ovih spoljnih simbola nakon što budu rešene.
Svaki unos u GOT-u odgovara simbolu u spoljnim bibliotekama koje binarni fajl može pozvati. Kada se funkcija prvi put pozove, njena stvarna adresa se rešava dinamičkim povezivačem i čuva u GOT-u. Naknadni pozivi iste funkcije koriste adresu sačuvanu u GOT-u, čime se izbegava trošak ponovnog rešavanja adrese.
PLT: Tabela vezivanja postupka
Tabela vezivanja postupka (PLT) tesno sarađuje sa GOT-om i služi kao trambolina za rukovanje pozivima spoljnih funkcija. Kada binarni fajl pozove spoljnu funkciju prvi put, kontrola se prenosi na unos u PLT-u koji je povezan sa tom funkcijom. Taj PLT unos je odgovoran za pozivanje dinamičkog povezivača da reši adresu funkcije ako već nije rešena. Nakon što se adresa reši, čuva se u GOT-u.
Stoga, unosi u GOT-u se direktno koriste kada se adresa spoljne funkcije ili promenljive reši. Unosi u PLT-u se koriste za olakšavanje početne rezolucije ovih adresa putem dinamičkog povezivača.
Dobijanje izvršenja
Provera GOT-a
Dobijte adresu tabele GOT pomoću: objdump -s -j .got ./exec
Primetite kako nakon učitavanja izvršnog fajla u GEF-u možete videti funkcije koje su u GOT-u: gef➤ x/20x 0xDIR_GOT
Koristeći GEF možete zapoceti debugging sesiju i izvršiti got
da biste videli got tabelu:
GOT2Exec
U binarnom fajlu, GOT ima adrese funkcija ili odeljak PLT koji će učitati adresu funkcije. Cilj ovog proizvoljnog pisanja je da se prepiše unos u GOT-u funkcije koja će biti izvršena kasnije sa adresom PLT-a system
funkcije na primer.
Idealno, prepisati ćete GOT neke funkcije koja će biti pozvana sa parametrima koje kontrolišete (tako da ćete moći da kontrolišete parametre poslate funkciji sistema).
Ako system
nije korišćen u skripti, funkcija sistema neće imati unos u PLT-u. U ovom scenariju, moraćete prvo procureti adresu funkcije system
a zatim prebrisati GOT da pokazuje na ovu adresu.
Možete videti adrese PLT-a sa objdump -j .plt -d ./vuln_binary
Unosi GOT-a libc-a
GOT libc-a je obično kompajliran sa delimičnim RELRO-om, čineći ga dobrim ciljem za ovo pod uslovom da je moguće saznati njegovu adresu (ASLR).
Uobičajene funkcije libc-a će pozvati druge interne funkcije čiji bi GOT mogao biti prebrisan kako bi se dobilo izvršenje koda.
Pronađite više informacija o ovoj tehnici ovde.
Jedan Gadget
{% content-ref url="../rop-return-oriented-programing/ret2lib/one-gadget.md" %} one-gadget.md {% endcontent-ref %}
Zaštite
Zaštita Full RELRO je namenjena zaštiti od ovakvih tehnika tako što rešava sve adrese funkcija kada se binarni fajl pokrene i čini GOT tabelu samo za čitanje nakon toga:
{% content-ref url="../common-binary-protections-and-bypasses/relro.md" %} relro.md {% endcontent-ref %}
Reference
- https://ir0nstone.gitbook.io/notes/types/stack/got-overwrite/exploiting-a-got-overwrite
- https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte The PEASS Family, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @hacktricks_live.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.