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

6.5 KiB

WWW2Exec - GOT/PLT

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Maelezo Msingi

GOT: Jedwali la Kielekezi cha Kijumla

Jedwali la Kielekezi cha Kijumla (GOT) ni mbinu inayotumiwa katika programu za kielekezi 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) 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 uunganishaji wa kudumu kusuluhisha anwani ya kazi ikiwa haijasuluhishwa tayari. Baada ya anwani kusuluhishwa, inahifadhiwa katika GOT.

Hivyo, kuingia katika GOT hutumiwa moja kwa moja mara tu anwani ya kazi au kivinjari cha nje inaposuluhishwa. Kuingia katika PLT hutumiwa kurahisisha suluhisho la awali la anwani hizi kupitia uunganishaji wa 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 0xDIR_GOT

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

GOT2Exec

Katika programu ya kielekezi GOT ina anwani za kazi au kwa sehemu ya PLT ambayo itapakia anwani ya kazi. Lengo la andishi hili la kiholela ni kubadilisha kuingia katika GOT ya 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 hati, 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 kwa GOT ya libc

GOT ya libc kawaida inaandikwa na RELRO ya sehemu, ikifanya iwe lengo zuri kwa hili ikiaminika 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.

Kifaa cha Moja

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

Kinga

Kinga ya RELRO kamili inalenga kulinda dhidi ya mbinu hii 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 {% endcontent-ref %}

Marejeo

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks: