Translated ['reversing-and-exploiting/linux-exploiting-basic-esp/arbitra

This commit is contained in:
Translator 2024-06-17 09:40:19 +00:00
parent 9cca02e0b2
commit cfc5a6ca47

View file

@ -6,9 +6,9 @@
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)!
* 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)
* Otkrijte [**Porodičnu PEASS**](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.
@ -16,39 +16,39 @@ Drugi načini podrške HackTricks-u:
## **Osnovne informacije**
### **GOT: Globalna tabela offseta**
### **GOT: Globalna tabela ofseta**
**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.
**Globalna tabela ofseta (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 postupaka**
### **PLT: Tabela vezivanja postupka**
**Tabela vezivanja postupaka (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**. Ovaj PLT unos je odgovoran za pozivanje dinamičkog povezivača radi rešavanja adrese funkcije ako već nije rešena. Nakon što se adresa reši, čuva se u GOT-u.
**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**. Ovaj 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četnog rešavanja** ovih adresa putem dinamičkog povezivača.
**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.
## Izvršenje
### Provera GOT-a
Dobijte adresu tabele GOT pomoću: **`objdump -s -j .got ./exec`**
Dobijte adresu tabele GOT sa: **`objdump -s -j .got ./exec`**
![](<../../../.gitbook/assets/image (619).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`
Primetite kako nakon **učitavanja** **izvršnog** fajla u GEF-u možete **videti** **funkcije** koje su u **GOT-u**: `gef➤ x/20x 0xADDR_GOT`
![](https://github.com/carlospolop/hacktricks/blob/rs/.gitbook/assets/image%20\(620\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(1\)%20\(5\).png)
![](<../../../.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) (1) (1) (1) (1) (1) (1) (5).png>)
Koristeći GEF možete **zapoceti** sesiju **debugovanja** i izvršiti **`got`** da biste videli tabelu GOT:
Koristeći GEF možete **zapoceti** **debugging** sesiju i izvršiti **`got`** da biste videli got tabelu:
![](<../../../.gitbook/assets/image (621).png>)
### GOT2Exec
U binarnom fajlu, GOT ima **adrese funkcija ili** odeljak **PLT-a** 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 **funkcije** na primer **`system`**.
U binarnom fajlu, GOT ima **adrese funkcija ili** odeljak **PLT-a** 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).
Idealno, prepiš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.
@ -62,7 +62,7 @@ Možete videti adrese PLT-a sa **`objdump -j .plt -d ./vuln_binary`**
## **Zaštite**
Zaštita **FullRELRO** je namenjena da zaštiti ovu vrstu tehnike tako što će rešiti sve adrese funkcija kada se binarni fajl pokrene i napraviti **GOT tabelu samo za čitanje** nakon toga:
Zaštita **Full RELRO** je namenjena da zaštiti ovu vrstu tehnike tako što će rešiti sve adrese funkcija kada se binarni fajl pokrene i napraviti **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)
@ -79,9 +79,9 @@ Zaštita **FullRELRO** je namenjena da zaštiti ovu vrstu tehnike tako što će
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)!
* 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)
* Otkrijte [**Porodičnu PEASS**](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.