User Tools

Site Tools


ret2dlresolve

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
ret2dlresolve [2025/01/28 03:58] – created kresimirret2dlresolve [2025/12/01 11:40] (current) – external edit 127.0.0.1
Line 7: Line 7:
  
 Dl_runtime_resolve je funkcija koja pronalazi adresu funkcije unutar dynamic shared objecta (npr. libc).   Dl_runtime_resolve je funkcija koja pronalazi adresu funkcije unutar dynamic shared objecta (npr. libc).  
-Postiže se krivotvorenjem različitih argumenata (sekcije, objekti dinamičkog linkera itd...) dl_runtime_resolve funkciji.+Postiže se krivotvorenjem različitih argumenata (sekcije, objekti dinamičkog linkera itd...) u pozivu dl_runtime_resolve funkcije.
 Prednost jest ta što nije potreban libc leak jer resolver sam pronađe adresu tražene funkcije. Prednost jest ta što nije potreban libc leak jer resolver sam pronađe adresu tražene funkcije.
 Koristi se u slučajevima kada program ne sadrži funkcije s outputom (printf, puts...) kako bi se dobio leak (ili ga Koristi se u slučajevima kada program ne sadrži funkcije s outputom (printf, puts...) kako bi se dobio leak (ili ga
 jednostavno nije moguće dobiti iako postoje). jednostavno nije moguće dobiti iako postoje).
-Nedostatak jest potreba za velikim prostorom za pisanje (potreban veliki overflow ili upis .bss itd...) jer su argumenti +Nedostatak jest potreba za velikim prostorom za pisanje (potreban veliki overflow ili upis .bss itd...) jer su argumenti velike strukture.
-velike strukture.+
 Rezultat jest resolve i poziv proizvoljne funkcije (u većini slučajeva) sa zadanim argumentima. Rezultat jest resolve i poziv proizvoljne funkcije (u većini slučajeva) sa zadanim argumentima.
  
Line 25: Line 24:
  
 Stack migration je postupak prebacivanja stack pointera na željenu adresu. Može postići na više načina poput Stack migration je postupak prebacivanja stack pointera na željenu adresu. Može postići na više načina poput
-instrukcija pop rsp, ali najčešći je putem izmjenom saved base pointer adrese.+instrukcija pop rsp, ali najčešći je izmjenom saved base pointer adrese.
  
 Ideja je da se izmijeni base pointer kako bi pri završavanju funkcije instrukcije "leave; ret;" izmijenile na koju Ideja je da se izmijeni base pointer kako bi pri završavanju funkcije instrukcije "leave; ret;" izmijenile na koju
 adresu rbp pokazuje (u ovom zadatku to će biti na .bss sekciju). Leave je instrukcija koja radi isto što i  adresu rbp pokazuje (u ovom zadatku to će biti na .bss sekciju). Leave je instrukcija koja radi isto što i 
 "mov rsp,rbp; pop rbp;". Dakle, rsp se postavi na adresu na koju pokazuje rbp te zatim u rbp postavi pohranjenu adresu. "mov rsp,rbp; pop rbp;". Dakle, rsp se postavi na adresu na koju pokazuje rbp te zatim u rbp postavi pohranjenu adresu.
-Kako bi se izvršio stack migrate potrebno je završiti dvije funkcije. Za vrijeme prve se izmijeni saved base pointer zbog +Kako bi se izvršio stack migrate potrebno je završiti dvije funkcije. Za vrijeme prve se izmijeni saved base pointer zbog čega "pop rbp;" unutar leave instrukcije izmijeni na koju adresu registar rbp pokazuje. Nakon završetka druge funkcije "mov rsp, rbp;" unutar leave instrukcije postavlja trenutačnu adresu rbp-a unutar rsp-a i time se izvršio stack migrate.
-čega "pop rbp;" unutar leave instrukcije izmijeni na koju adresu registar rbp pokazuje. Nakon završetka druge funkcije +
-"mov rsp, rbp;" unutar leave instrukcije postavlja trenutačnu adresu rbp-a unutar rsp-a i time se izvršio stack migrate.+
  
 Ova ranjivost je vidljiva u sljedećim dijelovima koda: Ova ranjivost je vidljiva u sljedećim dijelovima koda:
Line 55: Line 52:
  
  
-Ret2dlresolve ja lagano automatizirati s pomoću pwntoolsa. S pomoću njega stvori se payload za krivotvorene argumente +Ret2dlresolve je lagano automatizirati s pomoću pwntoolsa. S pomoću njega stvori se payload za krivotvorene argumente 
 te payload za pozivanje plt_init-a s ispravnim reloc indeksom te ROP gadgetom/argumentima na "stacku" (ovisno o tome te payload za pozivanje plt_init-a s ispravnim reloc indeksom te ROP gadgetom/argumentima na "stacku" (ovisno o tome
 je li program x64 ili x32). Kako pwntoolsov ret2dlresolve funkcionira može se pogledati u [[https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html|dokumentaciji]]. je li program x64 ili x32). Kako pwntoolsov ret2dlresolve funkcionira može se pogledati u [[https://docs.pwntools.com/en/stable/rop/ret2dlresolve.html|dokumentaciji]].
ret2dlresolve.1738036693.txt.gz · Last modified: 2025/12/01 11:40 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki