From 4efa7b35397d4ca214a634d5eaeb5d33f0384527 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 25 Sep 2024 16:51:03 +0000 Subject: [PATCH] Translated ['binary-exploitation/rop-return-oriented-programing/ret2csu. --- .../rop-return-oriented-programing/ret2csu.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/binary-exploitation/rop-return-oriented-programing/ret2csu.md b/binary-exploitation/rop-return-oriented-programing/ret2csu.md index 8a8ab8cd3..7ccdf547a 100644 --- a/binary-exploitation/rop-return-oriented-programing/ret2csu.md +++ b/binary-exploitation/rop-return-oriented-programing/ret2csu.md @@ -48,7 +48,7 @@ mov rsi, r14; mov edi, r13d; call qword [r12 + rbx*8]; ``` -2. Forse non conosci alcun indirizzo su cui scrivere e hai **bisogno di un'istruzione `ret`**. Nota che il secondo gadget terminerà anche con un **`ret`**, ma dovrai soddisfare alcune **condizioni** per raggiungerlo: +3. Forse non conosci alcun indirizzo su cui scrivere e hai **bisogno di un'istruzione `ret`**. Nota che il secondo gadget terminerà anche con un **`ret`**, ma dovrai soddisfare alcune **condizioni** per raggiungerlo: ```armasm mov rdx, r15; mov rsi, r14; @@ -62,8 +62,8 @@ ret ``` Le condizioni saranno: -* `[r12 + rbx*8]` deve puntare a un indirizzo che memorizza una funzione chiamabile (se non hai idea e non è pie, puoi semplicemente usare la funzione `_init`): -* Se \_init è a `0x400560`, usa GEF per cercare un puntatore in memoria ad esso e fai in modo che `[r12 + rbx*8]` sia l'indirizzo con il puntatore a \_init: +* `[r12 + rbx*8]` deve puntare a un indirizzo che memorizza una funzione chiamabile (se non hai idea e non hai pie, puoi semplicemente usare la funzione `_init`): +* Se \_init si trova a `0x400560`, usa GEF per cercare un puntatore in memoria ad esso e fai in modo che `[r12 + rbx*8]` sia l'indirizzo con il puntatore a \_init: ```bash # Example from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html gef➤ search-pattern 0x400560 @@ -124,12 +124,12 @@ p.sendline(p64(elf.sym['win'])) # send to gets() so it's written print(p.recvline()) # should receive "Awesome work!" ``` {% hint style="warning" %} -Nota che l'exploit precedente non è destinato a fare un **`RCE`**, ma è destinato a chiamare una funzione chiamata **`win`** (prendendo l'indirizzo di `win` dall'input standard chiamando gets nella catena ROP e memorizzandolo in r15) con un terzo argomento con il valore `0xdeadbeefcafed00d`. +Nota che l'exploit precedente non è destinato a fare un **`RCE`**, ma è destinato a chiamare solo una funzione chiamata **`win`** (prendendo l'indirizzo di `win` dall'input standard chiamando gets nella catena ROP e memorizzandolo in r15) con un terzo argomento con il valore `0xdeadbeefcafed00d`. {% endhint %} ### Bypassare la chiamata e raggiungere ret -L'exploit seguente è stato estratto [**da questa pagina**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) dove il **ret2csu** è utilizzato ma invece di usare la chiamata, **bypassa i confronti e raggiunge il `ret`** dopo la chiamata: +Il seguente exploit è stato estratto [**da questa pagina**](https://guyinatuxedo.github.io/18-ret2\_csu\_dl/ropemporium\_ret2csu/index.html) dove il **ret2csu** è utilizzato ma invece di usare la chiamata, sta **bypassando i confronti e raggiungendo il `ret`** dopo la chiamata: ```python # Code from https://guyinatuxedo.github.io/18-ret2_csu_dl/ropemporium_ret2csu/index.html # This exploit is based off of: https://www.rootnetsec.com/ropemporium-ret2csu/