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
- Angalia mpango wa usajili!
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za kuvamia kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud github repos.
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
- 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
{% 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
- Angalia mpango wa usajili!
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud github repos.