hacktricks/binary-exploitation/array-indexing.md

4 KiB

Array Indeksering

{% hint style="success" %} Leer & oefen AWS-hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP-hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}

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 met die adres na system te oorskryf, en roep vry 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, sodat dit nodig is 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 met 'n adres na ret oorskryf, 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 toelaat 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 met pop rdi; ret oorgeskryf word, 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).