hacktricks/binary-exploitation/array-indexing.md

4 KiB

Array Indeksering

Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Basiese Inligting

Hierdie kategorie sluit alle kwesbaarhede in wat voorkom omdat dit moontlik is om sekere data te oorskryf deur foute in die hantering van indekse in reekse. Dit is 'n baie wyd kategorie sonder 'n spesifieke metodologie aangesien die uitbuitingsmeganisme heeltemal afhang van die toestande van die kwesbaarheid.

Hier kan jy egter 'n paar mooi voorbeelde vind:

  • https://guyinatuxedo.github.io/11-index/swampctf19_dreamheaps/index.html
  • Daar is 2 botsende reekse, een vir adresse waar data gestoor word en een met die groottes van daardie data. Dit is moontlik om een van die ander te oorskryf, wat dit moontlik maak om 'n arbitêre adres te skryf wat dit as 'n grootte aandui. Dit maak dit moontlik om die adres van die free-funksie in die GOT-tabel te skryf en dit dan te oorskryf met die adres na system, en roep free aan vanaf 'n geheue met /bin/sh.
  • https://guyinatuxedo.github.io/11-index/csaw18_doubletrouble/index.html
  • 64-bits, geen nx. Oorskryf 'n grootte om 'n soort buffer-oorvloei te kry waar alles as 'n dubbele getal gebruik gaan word en van kleinste tot grootste gesorteer gaan word, dus dit is nodig om 'n shell-kode te skep wat aan daardie vereiste voldoen, met inagneming dat die kanarie nie van sy posisie af beweeg moet word nie en uiteindelik die RIP oorskryf met 'n adres na ret, wat aan die vorige vereistes voldoen en die grootste adres 'n nuwe adres wat na die begin van die stap wys (uitgelek deur die program) plaas sodat dit moontlik is om die ret te gebruik om daarheen te spring.
  • https://faraz.faith/2019-10-20-secconctf-2019-sum/
  • 64-bits, geen relro, kanarie, nx, geen pie. Daar is 'n off-by-one in 'n reeks in die stapel wat dit moontlik maak om 'n aanwyser te beheer wat WWW toeken (dit skryf die som van al die getalle van die reeks in die oorgeskryfde adres deur die off-by-one in die reeks). Die stapel word beheer sodat die GOT exit-adres oorskryf word met pop rdi; ret, en in die stapel word die adres na main bygevoeg (terugkeer na main). 'n ROP-ketting om die adres van put in die GOT uit te lek deur puts te gebruik word gebruik (exit sal geroep word sodat dit pop rdi; ret sal roep en dus hierdie ketting in die stapel uitvoer). Uiteindelik word 'n nuwe ROP-ketting wat ret2lib uitvoer, gebruik.
  • https://guyinatuxedo.github.io/14-ret_2_system/tu_guestbook/index.html
  • 32-bits, geen relro, geen kanarie, nx, pie. Misbruik 'n slegte indeksering om adresse van libc en heap van die stapel uit te lek. Misbruik die buffer-oorvloei om 'n ret2lib te doen wat system('/bin/sh') roep (die heap-adres is nodig om 'n kontrole te omseil).