Ret2ret & Reo2pop
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)
Aprenda e pratique Hacking Azure: 
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
 - Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
Ret2ret
O principal objetivo desta técnica é tentar burlar o ASLR abusando de um ponteiro existente na pilha.
Basicamente, estouros de pilha são geralmente causados por strings, e strings terminam com um byte nulo no final na memória. Isso permite tentar reduzir o lugar apontado por um ponteiro existente já na pilha. Então, se a pilha contivesse 0xbfffffdd, esse estouro poderia transformá-lo em 0xbfffff00 (note o último byte zerado).
Se esse endereço apontar para nosso shellcode na pilha, é possível fazer o fluxo chegar a esse endereço adicionando endereços à instrução ret até que esta seja alcançada.
Portanto, o ataque seria assim:
- NOP sled
 - Shellcode
 - Sobrescrever a pilha a partir do EIP com endereços para 
ret(RET sled) - 0x00 adicionado pela string modificando um endereço da pilha fazendo-o apontar para o NOP sled
 
Seguindo este link você pode ver um exemplo de um binário vulnerável e neste aqui o exploit.
Ret2pop
Caso você consiga encontrar um ponteiro perfeito na pilha que você não quer modificar (no ret2ret mudamos o byte final mais baixo para 0x00), você pode realizar o mesmo ataque ret2ret, mas o comprimento do RET sled deve ser encurtado em 1 (para que o final 0x00 sobrescreva os dados logo antes do ponteiro perfeito), e o último endereço do RET sled deve apontar para pop <reg>; ret.
Dessa forma, os dados antes do ponteiro perfeito serão removidos da pilha (esses são os dados afetados pelo 0x00) e o último ret apontará para o endereço perfeito na pilha sem nenhuma alteração.
Seguindo este link você pode ver um exemplo de um binário vulnerável e neste aqui o exploit.
References
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)
Aprenda e pratique Hacking Azure: 
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
 - Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
HackTricks