From 5466de6cc7b987ee3adbaed5821d2807b04dec28 Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 25 Sep 2024 16:31:44 +0000 Subject: [PATCH] Translated ['binary-exploitation/format-strings/README.md'] to pt --- binary-exploitation/format-strings/README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/binary-exploitation/format-strings/README.md b/binary-exploitation/format-strings/README.md index d8be1e58c..12c29fbd6 100644 --- a/binary-exploitation/format-strings/README.md +++ b/binary-exploitation/format-strings/README.md @@ -21,7 +21,7 @@ Em C **`printf`** é uma função que pode ser usada para **imprimir** alguma st Outras funções vulneráveis são **`sprintf()`** e **`fprintf()`**. -A vulnerabilidade aparece quando um **texto de atacante é usado como o primeiro argumento** para essa função. O atacante será capaz de criar uma **entrada especial abusando** das capacidades da **string de formato printf** para ler e **escrever qualquer dado em qualquer endereço (legível/gratável)**. Sendo capaz assim de **executar código arbitrário**. +A vulnerabilidade aparece quando um **texto de atacante é usado como o primeiro argumento** para essa função. O atacante será capaz de criar uma **entrada especial abusando** das capacidades da **string de formato printf** para ler e **escrever qualquer dado em qualquer endereço (legível/escrevível)**. Sendo capaz assim de **executar código arbitrário**. #### Formatters: ```bash @@ -74,7 +74,7 @@ e você leria do primeiro ao quarto parâmetro. Ou você poderia fazer: ```c -printf("$4%x") +printf("%4$x") ``` e ler diretamente o quarto. @@ -86,7 +86,7 @@ Um atacante controlando essa entrada, será capaz de **adicionar endereços arbi ## **Leitura Arbitrária** -É possível usar o formatador **`%n$s`** para fazer **`printf`** obter o **endereço** situado na **n posição**, seguindo-o e **imprimí-lo como se fosse uma string** (imprimir até que um 0x00 seja encontrado). Então, se o endereço base do binário é **`0x8048000`**, e sabemos que a entrada do usuário começa na 4ª posição na pilha, é possível imprimir o início do binário com: +É possível usar o formatador **`%n$s`** para fazer **`printf`** obter o **endereço** situado na **n posição**, seguindo-o e **imprimí-lo como se fosse uma string** (imprimir até que um 0x00 seja encontrado). Então, se o endereço base do binário for **`0x8048000`**, e sabemos que a entrada do usuário começa na 4ª posição na pilha, é possível imprimir o início do binário com: ```python from pwn import * @@ -151,7 +151,7 @@ Leituras arbitrárias podem ser úteis para: O formatador **`$%n`** **escreve** o **número de bytes escritos** no **endereço indicado** no parâmetro \ na pilha. Se um atacante puder escrever quantos caracteres quiser com printf, ele será capaz de fazer **`$%n`** escrever um número arbitrário em um endereço arbitrário. -Felizmente, para escrever o número 9999, não é necessário adicionar 9999 "A"s à entrada, para fazer isso é possível usar o formatador **`%.%$n`** para escrever o número **``** no **endereço apontado pela posição `num`**. +Felizmente, para escrever o número 9999, não é necessário adicionar 9999 "A"s à entrada; para isso, é possível usar o formatador **`%.%$n`** para escrever o número **``** no **endereço apontado pela posição `num`**. ```bash AAAA%.6000d%4\$n —> Write 6004 in the address indicated by the 4º param AAAA.%500\$08x —> Param at offset 500 @@ -172,7 +172,7 @@ Como mencionado, para escrever o endereço, geralmente são necessários 2 passo * **HOB** é chamado para os 2 bytes mais altos do endereço * **LOB** é chamado para os 2 bytes mais baixos do endereço -Então, devido a como a string de formato funciona, você precisa **escrever primeiro o menor** de \[HOB, LOB] e depois o outro. +Então, por causa de como a string de formato funciona, você precisa **escrever primeiro o menor** de \[HOB, LOB] e depois o outro. Se HOB < LOB\ `[address+2][address]%.[HOB-8]x%[offset]\$hn%.[LOB-HOB]x%[offset+1]` @@ -232,16 +232,16 @@ p.interactive() * 32 bits, relro, sem canário, nx, sem pie, format string para escrever um endereço dentro de main em `.fini_array` (para que o fluxo retorne mais uma vez) e escrever o endereço para `system` na tabela GOT apontando para `strlen`. Quando o fluxo voltar para main, `strlen` é executado com a entrada do usuário e apontando para `system`, ele executará os comandos passados. {% hint style="success" %} -Aprenda e pratique Hacking AWS:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Aprenda e pratique Hacking GCP: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks -* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)! -* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %}