Array Indexing
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)
Kikundi hiki kinajumuisha udhaifu wote unaotokea kwa sababu inawezekana kuandika tena data fulani kupitia makosa katika usimamizi wa viashiria katika arrays. Ni kikundi pana sana kisichokuwa na mbinu maalum kwani mekanizma ya unyakuzi inategemea kabisa hali ya udhaifu.
Hata hivyo hapa unaweza kupata baadhi ya mfano mzuri:
Kuna arrays 2 zinazogongana, moja kwa anwani ambapo data inahifadhiwa na moja yenye ukubwa wa data hiyo. Inawezekana kuandika moja kutoka kwa nyingine, ikiruhusu kuandika anwani isiyo na mipaka ikionyesha kama ukubwa. Hii inaruhusu kuandika anwani ya kazi ya free
katika jedwali la GOT na kisha kuandika tena na anwani ya system
, na kuita free kutoka kwa kumbukumbu yenye /bin/sh
.
64 bits, hakuna nx. Andika ukubwa ili kupata aina fulani ya overflow ya buffer ambapo kila kitu kitatumika kama nambari mbili na kuorodheshwa kutoka ndogo hadi kubwa hivyo inahitajika kuunda shellcode inayokidhi hiyo mahitaji, ikizingatia kwamba canary haipaswi kuhamishwa kutoka kwenye nafasi yake na hatimaye kuandika RIP na anwani ya ret, ambayo inakidhi mahitaji ya awali na kuweka anwani kubwa kuwa anwani mpya ikielekeza mwanzo wa stack (iliyovuja na programu) ili iwezekane kutumia ret kuruka huko.
64bits, hakuna relro, canary, nx, hakuna pie. Kuna off-by-one katika array kwenye stack inayoruhusu kudhibiti pointer ikitoa WWW (inaandika jumla ya nambari zote za array katika anwani iliyovunjwa na off-by-one katika array). Stack inasimamiwa hivyo anwani ya GOT exit
inandikwa tena na pop rdi; ret
, na katika stack inaongezwa anwani ya main
(ikirudi nyuma kwa main
). Kisha mchain ya ROP kutolewa anwani ya kuweka katika GOT kwa kutumia puts inatumika (exit
itaitwa hivyo itaita pop rdi; ret
kwa hivyo inatekeleza mchain hii katika stack). Hatimaye mchain mpya ya ROP inayotekeleza ret2lib inatumika.
32 bit, hakuna relro, hakuna canary, nx, pie. Tumia uandishi mbaya wa viashiria kuvuja anwani za libc na heap kutoka kwenye stack. Tumia overflow ya buffer kufanya ret2lib ikitoa system('/bin/sh')
(anwani ya heap inahitajika kupita ukaguzi).