ret2dlresolve
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| ret2dlresolve [2025/01/28 03:58] – created kresimir | ret2dlresolve [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 | + | Postiže se krivotvorenjem različitih argumenata (sekcije, objekti dinamičkog linkera itd...) |
| 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 " | Ideja je da se izmijeni base pointer kako bi pri završavanju funkcije instrukcije " | ||
| 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 | + | Ret2dlresolve |
| te payload za pozivanje plt_init-a s ispravnim reloc indeksom te ROP gadgetom/ | te payload za pozivanje plt_init-a s ispravnim reloc indeksom te ROP gadgetom/ | ||
| je li program x64 ili x32). Kako pwntoolsov ret2dlresolve funkcionira može se pogledati u [[https:// | je li program x64 ili x32). Kako pwntoolsov ret2dlresolve funkcionira može se pogledati u [[https:// | ||
ret2dlresolve.1738036693.txt.gz · Last modified: 2025/12/01 11:40 (external edit)