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

7.9 KiB

WWW2Exec - GOT/PLT

{% hint style="success" %} Jifunze na zoezi la Kuvamia AWS:Mafunzo ya HackTricks AWS Red Team Expert (ARTE)
Jifunze na zoezi la Kuvamia GCP: Mafunzo ya HackTricks GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Taarifa Msingi

GOT: Jedwali la Kielezo cha Kijumla

Jedwali la Kielezo cha Kijumla (GOT) ni mbinu inayotumiwa katika programu zinazounganishwa kwa njia ya kudumu ili 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 kiunganishi cha kudumu na kuhifadhiwa katika GOT. Wito wa baadaye kwa kazi hiyo hutumia anwani iliyohifadhiwa katika GOT, hivyo kuepuka gharama ya kupata tena anwani.

PLT: Jedwali la Uunganishaji wa Taratibu

Jedwali la Uunganishaji wa Taratibu (PLT) hufanya kazi 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 kiunganishi cha kudumu ili kusuluhisha anwani ya kazi ikiwa haijasuluhishwa tayari. Baada ya anwani kusuluhishwa, inahifadhiwa katika GOT.

Hivyo, kuingia za GOT hutumiwa moja kwa moja mara tu anwani ya kazi au kivinjari cha nje inasuluhishwa. Kuingia za PLT hutumiwa kurahisisha suluhisho la awali la anwani hizi kupitia kiunganishi cha kudumu.

Pata Utekelezaji

Angalia GOT

Pata anwani ya jedwali la GOT na: objdump -s -j .got ./exec

Tazama jinsi baada ya kupakia programu katika GEF unaweza kuona kazi zilizo katika GOT: gef➤ x/20x 0xADDR_GOT

Kwa kutumia GEF unaweza kuanza kikao cha kutatua hitilafu na kutekeleza got kuona jedwali la got:

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, utabatilisha GOT ya kazi ambayo itaitwa na parameta zinazodhibitiwa na wewe (hivyo utaweza kudhibiti parameta zinazotumwa kwa kazi ya mfumo).

Ikiwa system haitumiwi na programu ya binary, 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

Kuingia za GOT za libc

GOT ya libc kawaida inakusanywa na RELRO ya sehemu, ikifanya iwe lengo zuri kwa kudhaniwa ikiwa ni rahisi kugundua anwani yake (ASLR).

Kazi za kawaida za libc zitaita kazi nyingine za ndani ambazo GOT yake inaweza kubadilishwa ili kupata utekelezaji wa kanuni.

Pata maelezo zaidi kuhusu mbinu hii hapa.

Free2system

Katika mashindano ya uchimbaji wa rundo ni kawaida kuweza kudhibiti maudhui ya vipande na wakati mwingine hata kubadilisha jedwali la GOT. Mbinu rahisi ya kupata RCE ikiwa vifaa vya kuchezea havipatikani ni kubadilisha anwani ya free ya GOT ili ielekeze kwa system na kuandika ndani ya kipande "/bin/sh". Kwa njia hii wakati kipande hiki kitakapoachiliwa, itatekeleza system("/bin/sh").

Strlen2system

Mbinu nyingine ya kawaida ni kubadilisha anwani ya GOT ya strlen ili ielekeze kwa system, hivyo ikiwa kazi hii itaitwa na mwingiliano wa mtumiaji ni rahisi kupitisha herufi "/bin/sh" na kupata kifaa cha kuingia.

Zaidi ya hayo, ikiwa puts inatumika na mwingiliano wa mtumiaji, ni rahisi kubadilisha anwani ya GOT ya strlen ili ielekeze kwa system na kupitisha herufi "/bin/sh" ili kupata kifaa cha kuingia kwa sababu puts itaita strlen na mwingiliano wa mtumiaji.

Kifaa cha Kuingia Kimoja

{% content-ref url="../rop-return-oriented-programing/ret2lib/one-gadget.md" %} one-gadget.md {% endcontent-ref %}

Kutumia GOT kutoka kwa Rundo

Njia ya kawaida ya kupata RCE kutoka kwa kasoro ya rundo ni kutumia fastbin ili iwezekane kuongeza sehemu ya jedwali la GOT ndani ya fast bin, hivyo wakati kipande hicho kitakapopewa itawezekana kubadilisha kiashiria cha kazi, kawaida free.
Kisha, kuelekeza free kwa system na kuachilia kipande ambapo imeandikwa /bin/sh\x00 kutatekeleza kifaa cha kuingia.

Inawezekana kupata mfano hapa.

Kinga

Kinga ya Full RELRO inalenga kulinda dhidi ya aina hii ya mbinu kwa kutatua anwani zote za kazi wakati binary inapoanza na kufanya GOT table iwe ya kusoma tu baada ya hapo:

{% content-ref url="../common-binary-protections-and-bypasses/relro.md" %} relro.md {% endcontent-ref %}

Marejeo

{% hint style="success" %} Jifunze & zoezi la Udukuzi wa AWS:Mafunzo ya HackTricks AWS Red Team Expert (ARTE)
Jifunze & zoezi la Udukuzi wa GCP: Mafunzo ya HackTricks GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}