From 24e7bce3b225e865728df578f1207572fed98b70 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 25 Sep 2024 16:32:00 +0000 Subject: [PATCH] Translated ['binary-exploitation/format-strings/README.md'] to rs --- binary-exploitation/format-strings/README.md | 24 ++++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/binary-exploitation/format-strings/README.md b/binary-exploitation/format-strings/README.md index 48e6f61f6..dea3d8c7f 100644 --- a/binary-exploitation/format-strings/README.md +++ b/binary-exploitation/format-strings/README.md @@ -74,17 +74,17 @@ printf("%x %x %x %x") Или бисте могли да урадите: ```c -printf("$4%x") +printf("%4$x") ``` и директно прочитати четврту. -Обратите пажњу да нападач контролише параметар `pr`**`intf`**, што у основи значи да ће његов унос бити у стеку када се позове `printf`, што значи да може написати специфичне адресе у меморији у стеку. +Обратите пажњу да нападач контролише параметар `pr`**`intf`**, што у основи значи да ће његов унос бити у стеку када се позове `printf`, што значи да би могао да запише специфичне адресе у меморији у стеку. {% hint style="danger" %} -Нападач који контролише овај унос, моћи ће да **дода произвољну адресу у стек и натера `printf` да им приступи**. У следећем одељку биће објашњено како користити ово понашање. +Нападач који контролише овај унос, моћи ће да **дода произвољну адресу у стек и натера `printf` да им приступи**. У следећем делу биће објашњено како користити ово понашање. {% endhint %} -## **Произвољно читање** +## **Произвољно Читање** Могуће је користити форматор **`%n$s`** да натера **`printf`** да добије **адресу** која се налази на **n позицији**, следећи је и **одштампа као да је то стринг** (одштампа до 0x00). Дакле, ако је базна адреса бинарног фајла **`0x8048000`**, и знамо да кориснички унос почиње на 4. позицији у стеку, могуће је одштампати почетак бинарног фајла са: ```python @@ -105,7 +105,7 @@ Napomena da ne možete staviti adresu 0x8048000 na početak ulaza jer će string ### Pronađi offset -Da biste pronašli offset do vašeg ulaza, možete poslati 4 ili 8 bajtova (`0x41414141`) praćeno sa **`%1$x`** i **povećavati** vrednost dok ne dobijete `A's`. +Da biste pronašli offset do vašeg ulaza, možete poslati 4 ili 8 bajtova (`0x41414141`) praćenih **`%1$x`** i **povećavati** vrednost dok ne dobijete `A's`.
@@ -144,21 +144,21 @@ p.close() Arbitrarna čitanja mogu biti korisna za: -* **Ispis** **binarne** datoteke iz memorije +* **Dump** **binarne** datoteke iz memorije * **Pristup specifičnim delovima memorije gde je smeštena** **osetljiva** **informacija** (kao što su kanari, ključevi za enkripciju ili prilagođene lozinke kao u ovom [**CTF izazovu**](https://www.ctfrecipes.com/pwn/stack-exploitation/format-string/data-leak#read-arbitrary-value)) -## **Arbitrarno Pisanje** +## **Arbitrarno pisanje** -Formatirac **`$%n`** **piše** **broj napisnih bajtova** u **naznačenu adresu** u \ parametru na steku. Ako napadač može da piše onoliko karaktera koliko želi sa printf, moći će da napravi da **`$%n`** upiše proizvoljan broj na proizvoljnu adresu. +Formatirac **`$%n`** **piše** **broj napisanih bajtova** u **naznačenu adresu** u \ parametru na steku. Ako napadač može da piše onoliko karaktera koliko želi sa printf, moći će da napravi da **`$%n`** piše proizvoljan broj na proizvoljnu adresu. -Srećom, da bi se napisao broj 9999, nije potrebno dodavati 9999 "A" u ulaz, da bi se to postiglo moguće je koristiti formatirac **`%.%$n`** da bi se napisao broj **``** u **adresu na koju ukazuje pozicija `num`**. +Srećom, da bi se napisao broj 9999, nije potrebno dodavati 9999 "A" u ulaz, da bi se to postiglo moguće je koristiti formatirac **`%.%$n`** da bi se napisao broj **``** u **adresu na koju ukazuje `num` pozicija**. ```bash AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param AAAA.%500\$08x —> Param at offset 500 ``` -Međutim, imajte na umu da se obično za pisanje adrese kao što je `0x08049724` (što je OGROMAN broj za pisanje odjednom), **koristi `$hn`** umesto `$n`. To omogućava da **se napiše samo 2 Bajte**. Stoga se ova operacija vrši dva puta, jednom za najviših 2B adrese i drugi put za najniže. +Međutim, imajte na umu da se obično za pisanje adrese kao što je `0x08049724` (što je OGROMAN broj za pisanje odjednom), **koristi `$hn`** umesto `$n`. Ovo omogućava da **se napiše samo 2 Bajte**. Stoga se ova operacija vrši dva puta, jednom za najviših 2B adrese i drugi put za najniže. -Zbog toga, ova ranjivost omogućava **pisanje bilo čega na bilo kojoj adresi (arbitrarno pisanje).** +Stoga, ova ranjivost omogućava **pisanje bilo čega na bilo kojoj adresi (arbitrarno pisanje).** U ovom primeru, cilj će biti da se **prepiše** **adresa** **funkcije** u **GOT** tabeli koja će biti pozvana kasnije. Iako bi ovo moglo zloupotrebiti druge tehnike arbitrarno pisanje za izvršavanje: @@ -229,7 +229,7 @@ Moguće je zloupotrebiti akcije pisanja ranjivosti format string-a da se **piše * [https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/backdoor17\_bbpwn/index.html) * 32 bita, relro, bez kanarija, nx, bez pie, format string za prepisivanje adrese `fflush` sa funkcijom win (ret2win) * [https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html](https://guyinatuxedo.github.io/10-fmt\_strings/tw16\_greeting/index.html) -* 32 bita, relro, bez kanarija, nx, bez pie, format string za pisanje adrese unutar main u `.fini_array` (tako da se tok ponovo vrati još jednom) i pisanje adrese u `system` u GOT tabeli koja pokazuje na `strlen`. Kada se tok vrati u main, `strlen` se izvršava sa korisničkim unosom i pokazuje na `system`, izvršiće prosleđene komande. +* 32 bita, relro, bez kanarija, nx, bez pie, format string za pisanje adrese unutar main u `.fini_array` (tako da se tok ponovo vrati još jednom) i pisanje adrese za `system` u GOT tabeli koja pokazuje na `strlen`. Kada se tok vrati u main, `strlen` se izvršava sa korisničkim unosom i pokazuje na `system`, izvršiće prosleđene komande. {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\