mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-21 20:23:18 +00:00
Translated ['binary-exploitation/format-strings/README.md'] to af
This commit is contained in:
parent
b8aec4a16b
commit
5b50dfc8fd
1 changed files with 11 additions and 9 deletions
|
@ -21,7 +21,7 @@ In C **`printf`** is 'n funksie wat gebruik kan word om **te druk** 'n string. D
|
|||
|
||||
Ander kwesbare funksies is **`sprintf()`** en **`fprintf()`**.
|
||||
|
||||
Die kwesbaarheid verskyn wanneer 'n **aanvaller teks as die eerste argument** vir hierdie funksie gebruik word. Die aanvaller sal in staat wees om 'n **spesiale invoer te vervaardig wat** die **printf formaat** string vermoëns misbruik om te lees en **skryf enige data in enige adres (leesbaar/skryfbaar)**. Op hierdie manier in staat om **arbitraire kode uit te voer**.
|
||||
Die kwesbaarheid verskyn wanneer 'n **aanvallers teks as die eerste argument** aan hierdie funksie gebruik word. Die aanvaller sal in staat wees om 'n **spesiale invoer te vervaardig wat** die **printf formaat** string vermoëns misbruik om te lees en **skryf enige data in enige adres (leesbaar/skryfbaar)**. Op hierdie manier in staat om **arbitraire kode uit te voer**.
|
||||
|
||||
#### Formateerders:
|
||||
```bash
|
||||
|
@ -47,7 +47,7 @@ printf(buffer); // If buffer contains "%x", it reads from the stack.
|
|||
int value = 1205;
|
||||
printf("%x %x %x", value, value, value); // Outputs: 4b5 4b5 4b5
|
||||
```
|
||||
* Met Ontbrekende Argumente:
|
||||
* Met ontbrekende argumente:
|
||||
```c
|
||||
printf("%x %x %x", value); // Unexpected output: reads random values from the stack.
|
||||
```
|
||||
|
@ -59,7 +59,7 @@ int main(int argc, char *argv[]) {
|
|||
char *user_input;
|
||||
user_input = argv[1];
|
||||
FILE *output_file = fopen("output.txt", "w");
|
||||
fprintf(output_file, user_input); // The user input cna include formatters!
|
||||
fprintf(output_file, user_input); // The user input can include formatters!
|
||||
fclose(output_file);
|
||||
return 0;
|
||||
}
|
||||
|
@ -70,18 +70,18 @@ Die formaat **`%<n>$x`**, waar `n` 'n getal is, laat toe om aan printf aan te du
|
|||
```c
|
||||
printf("%x %x %x %x")
|
||||
```
|
||||
en jy sou van die eerste tot die vierde param lees.
|
||||
en jy sou van die eerste tot die vierde parameter lees.
|
||||
|
||||
Of jy kan doen:
|
||||
```c
|
||||
printf("$4%x")
|
||||
```
|
||||
and lees direk die vierde.
|
||||
en lees direk die vierde.
|
||||
|
||||
Let op dat die aanvaller die `pr`**`intf`-parameter beheer, wat basies beteken dat** sy invoer in die stapel gaan wees wanneer `printf` aangeroep word, wat beteken dat hy spesifieke geheue adresse in die stapel kan skryf.
|
||||
|
||||
{% hint style="danger" %}
|
||||
'n Aanvaller wat hierdie invoer beheer, sal in staat wees om **arbitraire adresse in die stapel by te voeg en `printf` toegang tot hulle te laat kry**. In die volgende afdeling sal verduidelik word hoe om hierdie gedrag te gebruik.
|
||||
'n Aanvaller wat hierdie invoer beheer, sal in staat wees om **arbitraire adresse in die stapel by te voeg en `printf` te laat toegang tot hulle**. In die volgende afdeling sal verduidelik word hoe om hierdie gedrag te gebruik.
|
||||
{% endhint %}
|
||||
|
||||
## **Arbitraire Lees**
|
||||
|
@ -144,8 +144,8 @@ p.close()
|
|||
|
||||
Arbitraire lees kan nuttig wees om:
|
||||
|
||||
* **Dump** die **binaire** uit geheue
|
||||
* **Toegang te verkry tot spesifieke dele van geheue waar sensitiewe** **inligting** gestoor word (soos kanaries, versleuteling sleutels of paswoorde soos in hierdie [**CTF-uitdaging**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
|
||||
* **Dump** die **binarie** uit geheue
|
||||
* **Toegang tot spesifieke dele van geheue waar sensitiewe** **inligting** gestoor word (soos kanaries, versleuteling sleutels of paswoorde soos in hierdie [**CTF-uitdaging**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value))
|
||||
|
||||
## **Arbitraire Skrywe**
|
||||
|
||||
|
@ -181,6 +181,8 @@ If HOB > LOB\
|
|||
`[address+2][address]%.[LOB-8]x%[offset+1]\$hn%.[HOB-LOB]x%[offset]`
|
||||
|
||||
HOB LOB HOB\_shellcode-8 NºParam\_dir\_HOB LOB\_shell-HOB\_shell NºParam\_dir\_LOB
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
python -c 'print "\x26\x97\x04\x08"+"\x24\x97\x04\x08"+ "%.49143x" + "%4$hn" + "%.15408x" + "%5$hn"'
|
||||
```
|
||||
|
@ -227,7 +229,7 @@ Dit is moontlik om die skryf aksies van 'n formaat string kwesbaarheid te misbru
|
|||
* [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html)
|
||||
* 32 bit, relro, geen canary, nx, geen pie, formaat string om die adres `fflush` met die win funksie (ret2win) te oorskryf
|
||||
* [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html)
|
||||
* 32 bit, relro, geen canary, nx, geen pie, formaat string om 'n adres binne main in `.fini_array` te skryf (sodat die vloei een keer meer terugloop) en die adres na `system` in die GOT tabel te skryf wat na `strlen` wys. Wanneer die vloei terug na main gaan, word `strlen` uitgevoer met gebruikersinvoer en wys na `system`, dit sal die oorgedraagde opdragte uitvoer.
|
||||
* 32 bit, relro, geen canary, nx, geen pie, formaat string om 'n adres binne main in `.fini_array` te skryf (sodat die vloei een keer terug draai) en die adres na `system` in die GOT tabel te skryf wat na `strlen` wys. Wanneer die vloei terug na main gaan, word `strlen` uitgevoer met gebruikersinvoer en wys na `system`, dit sal die oorgedraagde opdragte uitvoer.
|
||||
|
||||
{% hint style="success" %}
|
||||
Leer & oefen AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||||
|
|
Loading…
Reference in a new issue