# 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**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/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`** ![](<../../.gitbook/assets/image (118).png>) 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` ![](<../../.gitbook/assets/image (620) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2) (2) (2).png>) Koristeći GEF možete **zapoceti** **debugging** sesiju i izvršiti **`got`** da biste videli got tabelu: ![](<../../.gitbook/assets/image (493).png>) ### 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**](../common-binary-protections-and-bypasses/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**](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries). ## **Jedan Gadget** {% content-ref url="../rop-return-oriented-programing/ret2lib/one-gadget.md" %} [one-gadget.md](../rop-return-oriented-programing/ret2lib/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](../common-binary-protections-and-bypasses/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/got-overwrite/exploiting-a-got-overwrite) * [https://ir0nstone.gitbook.io/notes/types/stack/one-gadgets-and-malloc-hook](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**](https://github.com/sponsors/carlospolop)! * Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com) * Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family) * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.