Array Indexing

unga mkono HackTricks

Taarifa Msingi

Kategoria hii inajumuisha mapungufu yote yanayotokea kwa sababu ni rahisi kubadilisha data fulani kupitia makosa katika kushughulikia viashiria katika mizunguko. Ni kategoria pana sana ambayo haina mbinu maalum kwani mbinu ya kutumia inategemea kabisa hali ya mapungufu.

Hata hivyo, hapa unaweza kupata mifano mizuri:

  • Kuna mizunguko inayogongana, moja kwa anwani ambapo data imewekwa na nyingine na ukubwa wa data hiyo. Inawezekana kubadilisha moja kutoka kwa nyingine, kuruhusu kuandika anwani ya aina yoyote ikionyesha kama ukubwa. Hii inaruhusu kuandika anwani ya kazi ya free kwenye jedwali la GOT na kisha kuibadilisha na anwani ya system, na kuita free kutoka kwa kumbukumbu yenye /bin/sh.

  • Biti 64, hakuna nx. Badilisha ukubwa ili upate aina ya kujaza kijeraha ambapo kila kitu kitatumika kama nambari maradufu na kupangwa kutoka ndogo hadi kubwa hivyo ni lazima kuunda shellcode ambayo inatimiza mahitaji hayo, ikizingatiwa kuwa canary isitoke kutoka mahali pake na hatimaye kubadilisha RIP na anwani ya ret, ambayo inatimiza mahitaji ya awali na kuweka anwani kubwa kama anwani mpya inayoashiria mwanzo wa mizunguko (iliyovuja na programu) hivyo inawezekana kutumia ret kuruka hapo.

  • Biti 64, hakuna relro, canary, nx, hakuna pie. Kuna off-by-one katika mizunguko kwenye mizunguko ambayo inaruhusu kudhibiti kipanya kwa kutoa WWW (inaiandika jumla ya nambari zote za mizunguko kwenye anwani iliyobadilishwa na off-by-one katika mizunguko). Mizunguko inadhibitiwa hivyo anwani ya GOT exit inabadilishwa na pop rdi; ret, na kwenye mizunguko inaongezwa anwani ya main (kurudi kwa main). Mnyororo wa ROP kutolea anwani ya put katika GOT kwa kutumia puts unatumika (exit itaitwa hivyo itaita pop rdi; ret kwa hivyo kutekeleza mnyororo huu kwenye mizunguko). Hatimaye mnyororo mpya wa ROP unatekelezwa ret2lib unatumika.

  • Biti 32, hakuna relro, hakuna canary, nx, pie. Tumia index mbaya kufichua anwani za libc na heap kutoka kwenye mizunguko. Tumia kujaza kijeraha kufanya ret2lib ikitoa system('/bin/sh') (anwani ya heap inahitajika kuvuka ukaguzi).

Last updated