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

89 lines
6 KiB
Markdown
Raw Normal View History

# WWW2Exec - GOT/PLT
<details>
<summary><strong>Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>
## **Maelezo Msingi**
### **GOT: Jedwali la Kielekezi cha Kijumla**
**Jedwali la Kielekezi cha Kijumla (GOT)** ni mbinu inayotumiwa katika programu zinazounganishwa kwa njia ya kudumu kusimamia **anwani za kazi za nje**. Kwa kuwa **anwani hizi hazijulikani hadi wakati wa uendeshaji** (kutokana na uunganishaji wa kudumu), GOT hutoa njia ya **kusasisha kwa kudumu anwani za alama hizi za nje** mara tu zinapopatikana.
Kila kuingia katika GOT inalingana na alama katika maktaba za nje ambazo programu inaweza kuita. Wakati **kazi inaitwa mara ya kwanza, anwani yake halisi inapatikana na kuhifadhiwa katika GOT**. Wito wa baadaye kwa kazi hiyo hutumia anwani iliyohifadhiwa katika GOT, hivyo kuepuka gharama ya kupata tena anwani hiyo.
### **PLT: Jedwali la Uunganishaji wa Taratibu**
**Jedwali la Uunganishaji wa Taratibu (PLT)** linashirikiana kwa karibu na GOT na hutumika kama trampoline kushughulikia wito kwa kazi za nje. Wakati programu **inaita kazi ya nje kwa mara ya kwanza, udhibiti unapitishwa kwa kuingia katika PLT inayohusiana na kazi hiyo**. Kuingia hii ya PLT inahusika na kuita mchakato wa uunganishaji wa kudumu ili kupata anwani ya kazi ikiwa haijapatikana tayari. Baada ya anwani kupatikana, inahifadhiwa katika **GOT**.
**Hivyo,** kuingia za GOT hutumiwa moja kwa moja mara tu anwani ya kazi au kivinjari cha nje inapopatikana. **Kuingia za PLT hutumiwa kurahisisha upatikanaji wa awali** wa anwani hizi kupitia uunganishaji wa kudumu.
## Pata Utekelezaji
### Angalia GOT
Pata anwani ya jedwali la GOT na: **`objdump -s -j .got ./exec`**
![](<../../.gitbook/assets/image (118).png>)
Tazama jinsi baada ya **kupakia** **programu** katika GEF unaweza **kuona** **kazi** zilizo katika **GOT**: `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>)
Kwa kutumia GEF unaweza **kuanza** kikao cha **kutatua hitilafu** na kutekeleza **`got`** kuona jedwali la got:
![](<../../.gitbook/assets/image (493).png>)
### GOT2Exec
Katika programu ya binary, GOT ina **anwani za kazi au** kwa sehemu ya **PLT** ambayo itapakia anwani ya kazi. Lengo la andishi hili la kiholela ni **kubadilisha kuingia cha GOT** cha kazi ambayo itatekelezwa baadaye **na** **anwani** ya PLT ya **kazi ya** **`system`** kwa mfano.
Kwa kawaida, uta **badilisha** **GOT** ya **kazi** ambayo **itaitwa na parameta zinazodhibitiwa na wewe** (hivyo utaweza kudhibiti parameta zinazotumwa kwa kazi ya mfumo).
Ikiwa **`system`** **haitumiwi** na skripti, kazi ya mfumo **haitakuwa na kuingia katika PLT**. Katika hali hii, utahitaji **kuvuja kwanza anwani** ya kazi ya `system` na kisha kubadilisha GOT ili ielekeze kwenye anwani hii.
Unaweza kuona anwani za PLT na **`objdump -j .plt -d ./vuln_binary`**
## **Kifaa cha Moja**
{% content-ref url="../rop-return-oriented-programing/ret2lib/one-gadget.md" %}
[one-gadget.md](../rop-return-oriented-programing/ret2lib/one-gadget.md)
{% endcontent-ref %}
## **Kinga**
Kinga ya **Full RELRO** inalenga kulinda dhidi ya aina hii ya mbinu kwa kusuluhisha anwani zote za kazi wakati programu inapoanza na kufanya **jedwali la GOT liwe la kusoma tu** baada ya hapo:
{% content-ref url="../common-binary-protections-and-bypasses/relro.md" %}
[relro.md](../common-binary-protections-and-bypasses/relro.md)
{% endcontent-ref %}
## Marejeo
* [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>Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
Njia nyingine za kusaidia HackTricks:
* Ikiwa unataka kuona **kampuni yako ikionekana kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au kikundi cha [**telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
</details>