Print Stack Canary

Reading time: 3 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Aumentar a pilha impressa

Imagine uma situação onde 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 canário é um byte nulo (\x00) e o restante do canário são bytes aleatórios. Então, o atacante pode criar um estouro que sobrescreve a pilha até o primeiro byte do canário.

Em seguida, o atacante chama a funcionalidade puts no meio do payload que irá imprimir todo o canário (exceto o primeiro byte nulo).

Com essa informação, o atacante pode elaborar e enviar um novo ataque conhecendo o canário (na mesma sessão do programa).

Obviamente, essa tática é muito restrita já que o atacante precisa ser capaz de imprimir o conteúdo de seu payload para exfiltrar o canário e então ser capaz de criar um novo payload (na mesma sessão do programa) e enviar o verdadeiro estouro de buffer.

Exemplos de CTF:

Leitura Arbitrária

Com uma leitura arbitrária como a fornecida por strings de formato, pode ser possível vazar o canário. Confira 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

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks