Array Indexing
Reading time: 3 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basic Information
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 arrays. Dit is 'n baie wye kategorie sonder 'n spesifieke metodologie, aangesien die eksploitasiemechanisme heeltemal op die toestande van die kwesbaarheid staatmaak.
Hier kan jy egter 'n paar mooi voorbeelde vind:
- https://guyinatuxedo.github.io/11-index/swampctf19_dreamheaps/index.html
- Daar is 2 botsende arrays, 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 arbitrêre adres aan te dui as 'n grootte. Dit stel jou in staat om die adres van die
free
funksie in die GOT tabel te skryf en dit dan te oorskryf met die adres nasystem
, enfree
vanaf 'n geheue met/bin/sh
aan te roep. - https://guyinatuxedo.github.io/11-index/csaw18_doubletrouble/index.html
- 64 bits, geen nx. Oorskry 'n grootte om 'n tipe buffer overflow te kry waar alles as 'n dubbele getal gebruik gaan word en gesorteer word van kleinste na grootste, so dit is nodig om 'n shellcode te skep wat aan daardie vereiste voldoen, met inagneming dat die canary nie van sy posisie verplaas 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 stapel wys (geleek deur die program) sodat dit moontlik is om die ret te gebruik om daarheen te spring.
- https://faraz.faith/2019-10-20-secconctf-2019-sum/
- 64bits, geen relro, canary, nx, geen pie. Daar is 'n off-by-one in 'n array in die stapel wat dit moontlik maak om 'n pointer te beheer wat WWW toeken. (dit skryf die som van al die getalle van die array in die oorskryfde adres deur die off-by-one in die array). Die stapel is beheer, sodat die GOT
exit
adres oorskryf word metpop rdi; ret
, en in die stapel word die adres namain
bygevoeg (wat terugloop namain
). 'n ROP-ketting om die adres van die put in die GOT te lek met behulp van puts word gebruik (exit
sal aangeroep word, so dit salpop rdi; ret
aanroep, wat dus hierdie ketting in die stapel uitvoer). Laastens word 'n nuwe ROP-ketting wat ret2lib uitvoer, gebruik. - https://guyinatuxedo.github.io/14-ret_2_system/tu_guestbook/index.html
- 32 bit, geen relro, geen canary, nx, pie. Misbruik 'n slegte indeksering om adresse van libc en heap vanaf die stapel te lek. Misbruik die buffer overflow om 'n ret2lib aan te roep wat
system('/bin/sh')
aanroep (die heap adres is nodig om 'n kontrole te omseil).