mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 04:33:28 +00:00
Translated ['binary-exploitation/rop-return-oriented-programing/ret2csu.
This commit is contained in:
parent
fdc1b84020
commit
4efa7b3539
1 changed files with 5 additions and 5 deletions
|
@ -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/
|
||||
|
|
Loading…
Reference in a new issue