diff --git a/binary-exploitation/rop-return-oriented-programing/ret2csu.md b/binary-exploitation/rop-return-oriented-programing/ret2csu.md index 9f547824b..3208d913b 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2csu.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2csu.md @@ -27,7 +27,7 @@ Kada program koristi određene biblioteke (kao što je libc), ima neke ugrađene U **`__libc_csu_init`**, postoje dve sekvence instrukcija (gadgets) koje treba istaknuti: -1. Prva sekvenca nam omogućava da postavimo vrednosti u nekoliko registara (rbx, rbp, r12, r13, r14, r15). Ovo su kao slotovi gde možemo da čuvamo brojeve ili adrese koje želimo da koristimo kasnije. +1. Prva sekvenca nam omogućava da postavimo vrednosti u nekoliko registara (rbx, rbp, r12, r13, r14, r15). Ovo su kao mesta gde možemo da čuvamo brojeve ili adrese koje želimo da koristimo kasnije. ```armasm pop rbx; pop rbp; @@ -37,7 +37,7 @@ pop r14; pop r15; ret; ``` -Ovaj uređaj nam omogućava da kontrolišemo ove registre tako što izbacujemo vrednosti sa steka u njih. +Ovaj uređaj nam omogućava da kontrolišemo ove registre tako što izvlačimo vrednosti sa steka u njih. 2. Druga sekvenca koristi vrednosti koje smo postavili da uradi nekoliko stvari: * **Premesti specifične vrednosti u druge registre**, pripremajući ih za korišćenje kao parametre u funkcijama. @@ -48,7 +48,7 @@ mov rsi, r14; mov edi, r13d; call qword [r12 + rbx*8]; ``` -2. Možda ne znate nijednu adresu na koju biste mogli da pišete i **potrebna vam je `ret` instrukcija**. Imajte na umu da će drugi gadget takođe **završiti sa `ret`**, ali ćete morati da ispunite neke **uslove** da biste do njega došli: +3. Možda ne znate nijednu adresu na koju biste mogli da pišete i **potrebna vam je `ret` instrukcija**. Imajte na umu da će drugi gadget takođe **završiti sa `ret`**, ali ćete morati da ispunite neke **uslove** da biste do njega došli: ```armasm mov rdx, r15; mov rsi, r14; @@ -90,7 +90,7 @@ Proverite ovu stranicu za više informacija: ## Primer -### Korišćenje poziva +### Koristeći poziv Zamislite da želite da izvršite syscall ili pozovete funkciju kao što je `write()`, ali su vam potrebne specifične vrednosti u registrima `rdx` i `rsi` kao parametri. Obično biste tražili gadgete koji direktno postavljaju te registre, ali ne možete pronaći nijedan. @@ -181,4 +181,4 @@ target.interactive() ``` ### Zašto ne koristiti libc direktno? -Obično su ovi slučajevi takođe ranjivi na [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/), ali ponekad je potrebno kontrolisati više parametara nego što se lako može kontrolisati sa gadgetima koje direktno pronađete u libc. Na primer, `write()` funkcija zahteva tri parametra, i **pronalazak gadgeta za postavljanje svih ovih direktno možda neće biti moguć**. +Obično su ovi slučajevi takođe ranjivi na [**ret2plt**](../common-binary-protections-and-bypasses/aslr/ret2plt.md) + [**ret2lib**](ret2lib/), ali ponekad je potrebno kontrolisati više parametara nego što se lako može kontrolisati sa gadgetima koje direktno pronađete u libc. Na primer, `write()` funkcija zahteva tri parametra, i **pronaći gadgete za postavljanje svih ovih direktno možda neće biti moguće**.