WWW2Exec - GOT/PLT
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Global Offset Table (GOT) ni mekanizma inayotumika katika binaries zilizounganishwa kwa njia ya dynamic ili kudhibiti anwani za kazi za nje. Kwa sababu anwani hizi hazijulikani hadi wakati wa utekelezaji (kwa sababu ya uunganishaji wa dynamic), GOT inatoa njia ya kupdate anwani za alama hizi za nje mara tu zinapokuwa zimepatiwa.
Kila kipengele katika GOT kinahusiana na alama katika maktaba za nje ambazo binary inaweza kuita. Wakati kazi inapoitwa kwa mara ya kwanza, anwani yake halisi inapatikana na linker wa dynamic na kuhifadhiwa katika GOT. Kuitwa kwa kazi hiyo hiyo baadaye kunatumia anwani iliyohifadhiwa katika GOT, hivyo kuepuka mzigo wa kutafuta anwani tena.
Procedure Linkage Table (PLT) inafanya kazi kwa karibu na GOT na inatumika kama trampoline kushughulikia simu za kazi za nje. Wakati binary inapoiita kazi ya nje kwa mara ya kwanza, udhibiti unapelekwa kwa kipengele katika PLT kinachohusiana na kazi hiyo. Kipengele hiki cha PLT kinawajibika kwa kuita linker wa dynamic ili kutafuta anwani ya kazi ikiwa haijapatikana tayari. Baada ya anwani kupatikana, inahifadhiwa katika GOT.
Hivyo, vipengele vya GOT vinatumika moja kwa moja mara tu anwani ya kazi au variable ya nje inapokuwa imepatiwa. Vipengele vya PLT vinatumika kuwezesha kutafuta awali za anwani hizi kupitia linker wa dynamic.
Pata anwani ya jedwali la GOT kwa: objdump -s -j .got ./exec
Tazama jinsi baada ya kupakia executable katika GEF unaweza kuona kazi ambazo ziko katika GOT: gef➤ x/20x 0xADDR_GOT
Kwa kutumia GEF unaweza kuanza kikao cha debugging na kutekeleza got
ili kuona jedwali la got:
Katika binary GOT ina anwani za kazi au kwa sehemu ya PLT ambayo itapakia anwani ya kazi. Lengo la kuandika hii bila ruhusa ni kuziba kipengele cha GOT cha kazi ambayo itatekelezwa baadaye na anwani ya PLT ya system
kazi kwa mfano.
Kwa kawaida, utakuwa ukiziba GOT ya kazi ambayo itaitwa na vigezo vinavyodhibitiwa na wewe (hivyo utaweza kudhibiti vigezo vinavyotumwa kwa kazi ya system).
Ikiwa system
haitumiki na binary, kazi ya system haitakuwa na kipengele katika PLT. Katika hali hii, utahitaji kuvuja kwanza anwani ya kazi ya system
na kisha kubadilisha GOT ili kuelekeza kwenye anwani hii.
Unaweza kuona anwani za PLT kwa objdump -j .plt -d ./vuln_binary
GOT ya libc kwa kawaida inajumuishwa na partial RELRO, ikifanya kuwa lengo zuri kwa hii ikiwa inawezekana kubaini anwani yake (ASLR).
Kazi za kawaida za libc zitaita kazi nyingine za ndani ambazo GOT yake inaweza kubadilishwa ili kupata utekelezaji wa msimbo.
Pata maelezo zaidi kuhusu mbinu hii hapa.
Katika uhalifu wa heap CTFs ni kawaida kuwa na uwezo wa kudhibiti maudhui ya chunks na kwa wakati fulani hata kubadilisha jedwali la GOT. Njia rahisi ya kupata RCE ikiwa gadgets moja hazipatikani ni kubadilisha anwani ya free
GOT ili kuelekeza kwenye system
na kuandika ndani ya chunk "/bin/sh"
. Kwa njia hii wakati chunk hii itakapofutwa, itatekeleza system("/bin/sh")
.
Mbinu nyingine ya kawaida ni kubadilisha anwani ya strlen
GOT ili kuelekeza kwenye system
, hivyo ikiwa kazi hii itaitwa na input ya mtumiaji inawezekana kupitisha mfuatano "/bin/sh"
na kupata shell.
Zaidi ya hayo, ikiwa puts
inatumika na input ya mtumiaji, inawezekana kubadilisha anwani ya strlen
GOT ili kuelekeza kwenye system
na kupitisha mfuatano "/bin/sh"
ili kupata shell kwa sababu puts
itaita strlen
na input ya mtumiaji.
Njia ya kawaida ya kupata RCE kutoka kwa udhaifu wa heap ni kutumia fastbin ili iwezekane kuongeza sehemu ya jedwali la GOT ndani ya fast bin, hivyo kila wakati chunk hiyo itakapopatikana itakuwa inawezekana kuziba kiashiria cha kazi, kawaida free
.
Kisha, kuelekeza free
kwenye system
na kufuta chunk ambapo ilandikwa /bin/sh\x00
itatekeleza shell.
Inawezekana kupata mfano hapa.
Ulinzi wa Full RELRO unakusudia kulinda dhidi ya aina hii ya mbinu kwa kutafuta anwani zote za kazi wakati binary inapoanzishwa na kufanya jedwali la GOT kuwa lisiloweza kusomeka baada yake:
RelroLearn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)