Print Stack Canary

Apoie o HackTricks

Ampliar stack impresso

Imagine uma situação em que um programa vulnerável a estouro de pilha pode executar uma função puts apontando para parte do estouro de pilha. O atacante sabe que o primeiro byte do canary é um byte nulo (\x00) e o restante do canary são bytes aleatórios. Então, o atacante pode criar um estouro que sobrescreve a pilha até apenas o primeiro byte do canary.

Em seguida, o atacante chama a funcionalidade puts no meio da carga útil que irá imprimir todo o canary (exceto o primeiro byte nulo).

Com essa informação, o atacante pode criar e enviar um novo ataque conhecendo o canary (na mesma sessão do programa).

Obviamente, essa tática é muito restrita, pois o atacante precisa ser capaz de imprimir o conteúdo de sua carga útil para extrair o canary e então ser capaz de criar uma nova carga útil (na mesma sessão do programa) e enviar o estouro de buffer real.

Exemplos de CTF:

Leitura Arbitrária

Com uma leitura arbitrária como a fornecida por strings de formato, pode ser possível vazar o canary. Verifique este exemplo: https://ir0nstone.gitbook.io/notes/types/stack/canaries e você pode ler sobre abusar de strings de formato para ler endereços de memória arbitrários em:

Format Strings
Apoie o HackTricks

Last updated