Print Stack Canary
Last updated
Last updated
Aprenda e pratique Hacking AWS:Treinamento HackTricks AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: Treinamento HackTricks GCP Red Team Expert (GRTE)
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:
64 bits, ASLR ativado mas sem PIE, o primeiro passo é preencher um estouro até o byte 0x00 do canary e então chamar puts para vazá-lo. Com o canary, um gadget ROP é criado para chamar puts e vazar o endereço de puts da GOT e um gadget ROP para chamar system('/bin/sh')
32 bits, ARM, sem relro, canary, nx, sem pie. Estouro com uma chamada para puts nele para vazar o canary + ret2lib chamando system
com uma cadeia ROP para pop r0 (arg /bin/sh
) e pc (endereço de system)
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:
Este desafio abusa de uma maneira muito simples de uma string de formato para ler o canary da pilha
Aprenda e pratique Hacking AWS:Treinamento HackTricks AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: Treinamento HackTricks GCP Red Team Expert (GRTE)