mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 04:33:28 +00:00
Translated ['binary-exploitation/format-strings/README.md'] to it
This commit is contained in:
parent
d8cf80f767
commit
fdc1b84020
1 changed files with 5 additions and 5 deletions
|
@ -78,7 +78,7 @@ printf("%4$x")
|
|||
```
|
||||
e leggere direttamente il quarto.
|
||||
|
||||
Nota che l'attaccante controlla il parametro `pr`**`intf`**, il che significa fondamentalmente che** il suo input sarà nello stack quando viene chiamato `printf`, il che significa che potrebbe scrivere indirizzi di memoria specifici nello stack.
|
||||
Nota che l'attaccante controlla il parametro `printf`, **il che significa fondamentalmente che** il suo input sarà nello stack quando viene chiamato `printf`, il che significa che potrebbe scrivere indirizzi di memoria specifici nello stack.
|
||||
|
||||
{% hint style="danger" %}
|
||||
Un attaccante che controlla questo input sarà in grado di **aggiungere indirizzi arbitrari nello stack e far accedere `printf` a essi**. Nella sezione successiva verrà spiegato come utilizzare questo comportamento.
|
||||
|
@ -86,7 +86,7 @@ Un attaccante che controlla questo input sarà in grado di **aggiungere indirizz
|
|||
|
||||
## **Lettura Arbitraria**
|
||||
|
||||
È possibile utilizzare il formattatore **`%n$s`** per far sì che **`printf`** ottenga l'**indirizzo** situato nella **n posizione**, seguendolo e **stamparlo come se fosse una stringa** (stampa fino a quando non viene trovato un 0x00). Quindi, se l'indirizzo base del binario è **`0x8048000`**, e sappiamo che l'input dell'utente inizia nella quarta posizione nello stack, è possibile stampare l'inizio del binario con:
|
||||
È possibile utilizzare il formato **`%n$s`** per far sì che **`printf`** ottenga l'**indirizzo** situato nella **n posizione**, seguendolo e **stamparlo come se fosse una stringa** (stampa fino a quando non viene trovato un 0x00). Quindi, se l'indirizzo base del binario è **`0x8048000`**, e sappiamo che l'input dell'utente inizia nella quarta posizione nello stack, è possibile stampare l'inizio del binario con:
|
||||
```python
|
||||
from pwn import *
|
||||
|
||||
|
@ -149,7 +149,7 @@ Le letture arbitrarie possono essere utili per:
|
|||
|
||||
## **Scrittura Arbitraria**
|
||||
|
||||
Il formatter **`$<num>%n`** **scrive** il **numero di byte scritti** nell'**indirizzo indicato** nel parametro \<num> nello stack. Se un attaccante può scrivere quanti più caratteri possibile con printf, sarà in grado di far scrivere **`$<num>%n`** un numero arbitrario in un indirizzo arbitrario.
|
||||
Il formatter **`%<num>$n`** **scrive** il **numero di byte scritti** nell'**indirizzo indicato** nel parametro \<num> nello stack. Se un attaccante può scrivere quanti più caratteri vuole con printf, sarà in grado di far scrivere a **`%<num>$n`** un numero arbitrario in un indirizzo arbitrario.
|
||||
|
||||
Fortunatamente, per scrivere il numero 9999, non è necessario aggiungere 9999 "A" all'input, per farlo è possibile utilizzare il formatter **`%.<num-write>%<num>$n`** per scrivere il numero **`<num-write>`** nell'**indirizzo puntato dalla posizione `num`**.
|
||||
```bash
|
||||
|
@ -167,7 +167,7 @@ In questo esempio, l'obiettivo sarà **sovrascrivere** l'**indirizzo** di una **
|
|||
{% endcontent-ref %}
|
||||
|
||||
Stiamo per **sovrascrivere** una **funzione** che **riceve** i suoi **argomenti** dall'**utente** e **puntarla** alla **funzione** **`system`**.\
|
||||
Come accennato, per scrivere l'indirizzo, di solito sono necessari 2 passaggi: **prima scrivi 2Byte** dell'indirizzo e poi gli altri 2. Per fare ciò si usa **`$hn`**.
|
||||
Come accennato, per scrivere l'indirizzo, di solito sono necessari 2 passaggi: **prima scrivi 2Byte** dell'indirizzo e poi gli altri 2. Per farlo si usa **`$hn`**.
|
||||
|
||||
* **HOB** è chiamato per i 2 byte più alti dell'indirizzo
|
||||
* **LOB** è chiamato per i 2 byte più bassi dell'indirizzo
|
||||
|
@ -219,7 +219,7 @@ p.interactive()
|
|||
|
||||
È possibile abusare delle azioni di scrittura di una vulnerabilità di formato stringa per **scrivere negli indirizzi dello stack** e sfruttare una vulnerabilità di tipo **buffer overflow**.
|
||||
|
||||
## Altri Esempi & Riferimenti
|
||||
## Altri Esempi e Riferimenti
|
||||
|
||||
* [https://ir0nstone.gitbook.io/notes/types/stack/format-string](https://ir0nstone.gitbook.io/notes/types/stack/format-string)
|
||||
* [https://www.youtube.com/watch?v=t1LH9D5cuK4](https://www.youtube.com/watch?v=t1LH9D5cuK4)
|
||||
|
|
Loading…
Reference in a new issue