hacktricks/src/binary-exploitation/libc-heap/overwriting-a-freed-chunk.md

24 lines
1.7 KiB
Markdown

# Sobrescrevendo um chunk liberado
{{#include ../../banners/hacktricks-training.md}}
Várias das técnicas propostas de exploração de heap precisam ser capazes de sobrescrever ponteiros dentro de chunks liberados. O objetivo desta página é resumir as potenciais vulnerabilidades que poderiam conceder esse acesso:
### Uso Simples Após Liberação
Se for possível para o atacante **escrever informações em um chunk livre**, ele poderia abusar disso para sobrescrever os ponteiros necessários.
### Liberação Dupla
Se o atacante puder **`free` duas vezes o mesmo chunk** (liberando outros chunks entre potencialmente) e fazê-lo estar **2 vezes no mesmo bin**, seria possível para o usuário **alocar o chunk mais tarde**, **escrever os ponteiros necessários** e então **alocá-lo novamente**, acionando as ações do chunk sendo alocado (por exemplo, ataque de fast bin, ataque de tcache...)
### Overflow de Heap
Pode ser possível **transbordar um chunk alocado tendo ao lado um chunk liberado** e modificar alguns cabeçalhos/ponteiros dele.
### Overflow de Um a Menos
Neste caso, seria possível **modificar o tamanho** do chunk seguinte na memória. Um atacante poderia abusar disso para **fazer um chunk alocado ter um tamanho maior**, então **`free`**-lo, fazendo com que o chunk fosse **adicionado a um bin de um tamanho diferente** (maior), então alocar o **tamanho falso**, e o ataque terá acesso a um **chunk com um tamanho que é maior** do que realmente é, **concedendo assim uma situação de chunks sobrepostos**, que é explorável da mesma forma que um **overflow de heap** (ver seção anterior).
{{#include ../../banners/hacktricks-training.md}}