hacktricks/binary-exploitation/arbitrary-write-2-exec/aw2exec-got-plt.md

88 lines
6.3 KiB
Markdown

# WWW2Exec - GOT/PLT
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking-truuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>
## **Basiese Inligting**
### **GOT: Globale Verskuiwingstabel**
Die **Globale Verskuiwingstabel (GOT)** is 'n meganisme wat gebruik word in dinamies gekoppelde bineêre lêers om die **adresse van eksterne funksies te bestuur**. Aangesien hierdie **adresse nie bekend is tot tyd van uitvoering** (as gevolg van dinamiese koppeling), bied die GOT 'n manier om die **adresse van hierdie eksterne simbole dinamies op te dateer** sodra hulle opgelos is.
Elke inskrywing in die GOT stem ooreen met 'n simbool in die eksterne biblioteke wat die bineêre lêer mag aanroep. Wanneer 'n **funksie vir die eerste keer geroep word, word sy werklike adres opgelos deur die dinamiese koppelaar en in die GOT gestoor**. Volgende oproepe na dieselfde funksie gebruik die adres wat in die GOT gestoor is, en vermy dus die oorhoofse van die adres weer op te los.
### **PLT: Prosedure Koppelings Tabel**
Die **Prosedure Koppelings Tabel (PLT)** werk nou saam met die GOT en dien as 'n trampolien om oproepe na eksterne funksies te hanteer. Wanneer 'n bineêre **'n eksterne funksie vir die eerste keer aanroep, word beheer oorgedra na 'n inskrywing in die PLT wat met daardie funksie geassosieer is**. Hierdie PLT-inskrywing is verantwoordelik vir die aanroeping van die dinamiese koppelaar om die adres van die funksie op te los indien dit nog nie opgelos is nie. Nadat die adres opgelos is, word dit in die GOT gestoor.
**Daarom** word GOT-inskrywings direk gebruik sodra die adres van 'n eksterne funksie of veranderlike opgelos is. **PLT-inskrywings word gebruik om die aanvanklike oplossing** van hierdie adresse deur die dinamiese koppelaar te fasiliteer.
## Kry Uitvoering
### Kontroleer die GOT
Kry die adres van die GOT-tabel met: **`objdump -s -j .got ./exec`**
![](<../../.gitbook/assets/image (118).png>)
Let op hoe na **die laai** van die **uitvoerbare** in GEF jy die **funksies** kan **sien** wat in die **GOT** is: `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>)
Met GEF kan jy 'n **foutopsporing**-sessie begin en **`got`** uitvoer om die got-tabel te sien:
![](<../../.gitbook/assets/image (493).png>)
### GOT2Exec
In 'n bineêre lêer het die GOT die **adresse van die funksies of** van die **PLT**-afdeling wat die funksie-adres sal laai. Die doel van hierdie willekeurige skryf is om 'n GOT-inskrywing te **oorheers van 'n funksie wat later uitgevoer gaan word **met** die **adres** van die PLT van die **`system`** **funksie** byvoorbeeld.
Ideaal gesproke, sal jy die **GOT** van 'n **funksie oorskryf** wat **geroep gaan word met parameters wat deur jou beheer word** (sodat jy die parameters wat na die stelsel-funksie gestuur word, kan beheer).
As **`system`** **nie gebruik word** deur die skrif nie, sal die stelsel-funksie **nie 'n inskrywing in die PLT hê nie**. In hierdie scenario sal jy **eerstens die adres moet lek** van die `system`-funksie en dan die GOT moet oorskryf om na hierdie adres te verwys.
Jy kan die PLT-adresse sien met **`objdump -j .plt -d ./vuln_binary`**
## **Een 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 %}
## **Beskerming**
Die **FullRELRO**-beskerming is bedoel om teen hierdie soort tegniek te beskerm deur al die adresse van die funksies op te los wanneer die bineêre lêer begin en die **GOT-tabel lees alleen** te maak daarna:
{% content-ref url="../common-binary-protections-and-bypasses/relro.md" %}
[relro.md](../common-binary-protections-and-bypasses/relro.md)
{% endcontent-ref %}
## Verwysings
* [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)
<details>
<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Ander maniere om HackTricks te ondersteun:
* As jy jou **maatskappy geadverteer wil sien in HackTricks** of **HackTricks in PDF wil aflaai** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Kry die [**amptelike PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling van eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou hacking-truuks deur PRs in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
</details>