2.7 KiB
Ret2ret & Reo2pop
{{#include ../../../banners/hacktricks-training.md}}
Ret2ret
Die hoof doel van hierdie tegniek is om te probeer om ASLR te omseil deur 'n bestaande pointer in die stapel te misbruik.
Basies, stapel oorgeloop is gewoonlik veroorsaak deur stringe, en stringe eindig met 'n null byte aan die einde in geheue. Dit maak dit moontlik om te probeer om die plek wat deur 'n bestaande pointer in die stapel aangedui word, te verminder. So as die stapel 0xbfffffdd
bevat, kan hierdie oorgeloop dit in 0xbfffff00
verander (let op die laaste nul byte).
As daardie adres na ons shellcode in die stapel wys, is dit moontlik om die vloei na daardie adres te laat bereik deur adresse by die ret
instruksie te voeg totdat hierdie een bereik word.
Daarom sal die aanval soos volg wees:
- NOP sled
- Shellcode
- Oorskry die stapel vanaf die EIP met adresse na
ret
(RET sled) - 0x00 bygevoeg deur die string wat 'n adres van die stapel verander om na die NOP sled te wys
Volg hierdie skakel om 'n voorbeeld van 'n kwesbare binêre te sien en in hierdie een die eksploit.
Ret2pop
In die geval dat jy 'n perfekte pointer in die stapel kan vind wat jy nie wil verander nie (in ret2ret
verander ons die finale laagste byte na 0x00
), kan jy dieselfde ret2ret
aanval uitvoer, maar die lengte van die RET sled moet met 1 verkort word (sodat die finale 0x00
die data net voor die perfekte pointer oorskry), en die laaste adres van die RET sled moet na pop <reg>; ret
wys.
Op hierdie manier sal die data voor die perfekte pointer verwyder word van die stapel (dit is die data wat deur die 0x00
geraak word) en die finale ret
sal na die perfekte adres in die stapel wys sonder enige verandering.
Volg hierdie skakel om 'n voorbeeld van 'n kwesbare binêre te sien en in hierdie een die eksploit.
References
{{#include ../../../banners/hacktricks-training.md}}