Ret2syscall
Basiese Inligting
Dit is soortgelyk aan Ret2lib, egter, in hierdie geval sal ons nie 'n funksie van 'n biblioteek aanroep nie. In hierdie geval sal alles voorberei word om die syscall sys_execve
met 'n paar argumente aan te roep om /bin/sh
uit te voer. Hierdie tegniek word gewoonlik op binêre lêers uitgevoer wat staties gecompileer is, so daar mag baie gadgets en syscall instruksies wees.
Om die oproep vir die syscall voor te berei, is die volgende konfigurasie nodig:
rax: 59 Spesifiseer sys_execve
rdi: ptr na "/bin/sh" spesifiseer lêer om uit te voer
rsi: 0 spesifiseer geen argumente wat deurgegee word
rdx: 0 spesifiseer geen omgewing veranderlikes wat deurgegee word
So, basies is dit nodig om die string /bin/sh
êrens te skryf en dan die syscall
uit te voer (met inagneming van die padding wat nodig is om die stapel te beheer). Hiervoor het ons 'n gadget nodig om /bin/sh
in 'n bekende area te skryf.
Nog 'n interessante syscall om aan te roep is mprotect
wat 'n aanvaller in staat sou stel om die toestemmings van 'n bladsy in geheue te wysig. Dit kan gekombineer word met ret2shellcode.
Register gadgets
Kom ons begin met die vind van hoe om daardie registers te beheer:
Met hierdie adresse is dit moontlik om die inhoud in die stapel te skryf en dit in die registers te laai.
Skryf string
Skryfbare geheue
Eerstens moet jy 'n skryfbare plek in die geheue vind
Skryf String in geheue
Dan moet jy 'n manier vind om arbitrêre inhoud in hierdie adres te skryf.
Automatiseer ROP-ketting
Die volgende opdrag skep 'n volledige sys_execve
ROP-ketting gegewe 'n statiese binêre wanneer daar write-what-where gadgets en syscall instruksies is:
32-bis
64-bis
Gebrek aan Gadgets
As jy gadget ontbreek, byvoorbeeld om /bin/sh
in geheue te skryf, kan jy die SROP-tegniek gebruik om al die registerwaardes (insluitend RIP en params registers) vanaf die stapel te beheer:
Exploit Voorbeeld
Ander Voorbeelde & Verwysings
64 bits, geen PIE, nx, skryf in 'n bietjie geheue 'n ROP om
execve
aan te roep en daarheen te spring.64 bits, nx, geen PIE, skryf in 'n bietjie geheue 'n ROP om
execve
aan te roep en daarheen te spring. Om na die stapel te skryf, word 'n funksie wat wiskundige operasies uitvoer, misbruik.64 bits, geen PIE, nx, BF kanary, skryf in 'n bietjie geheue 'n ROP om
execve
aan te roep en daarheen te spring.
Last updated