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

6.5 KiB

WWW2Exec - GOT/PLT

Jifunze kuhusu udukuzi wa 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 Kimataifa

Jedwali la Kielekezi cha Kimataifa (GOT) ni mbinu inayotumiwa katika programu za kielekezi za kudumu kusimamia anwani za kazi za nje. Kwa kuwa anwani hizi hazijulikani hadi wakati wa uendeshaji (kutokana na kielekezi cha 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 Uhusiano wa Taratibu

Jedwali la Uhusiano 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 kielekezi cha kudumu kusuluhisha anwani ya kazi ikiwa haijatatuliwa tayari. Baada ya anwani kutatuliwa, 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 suluhisho la awali la anwani hizi kupitia kielekezi 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 0xDIR_GOT

Kwa kutumia GEF unaweza kuanza kikao cha kudebugi 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 kudumu 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

Kuingia za GOT za libc

GOT ya libc kawaida inakusanywa na RELRO ya sehemu, ikifanya iwe lengo zuri kwa hii ikidhani inawezekana 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 Full RELRO inalenga kulinda dhidi ya mbinu hii kwa kutatua 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 udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks: