hacktricks/binary-exploitation/common-binary-protections-and-bypasses/aslr/ret2ret.md

4.8 KiB

Ret2ret & Ret2pop

Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

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 as strings terminam com um byte nulo no final na memória. Isso permite tentar reduzir o local apontado por um ponteiro já existente na pilha. Assim, se a pilha contiver 0xbfffffdd, esse estouro poderia transformá-lo em 0xbfffff00 (observe o último byte zerado).

Se esse endereço apontar para nosso shellcode na pilha, é possível fazer o fluxo alcançar esse endereço adicionando endereços à instrução ret até que ele seja alcançado.

Portanto, o ataque seria assim:

  • Trilha de NOP
  • Shellcode
  • Sobrescrever a pilha do EIP com endereços para ret (trilha de RET)
  • 0x00 adicionado pela string modificando um endereço da pilha fazendo-o apontar para a trilha de NOP

Seguindo este link, você pode ver um exemplo de um binário vulnerável e neste o exploit.

Ret2pop

Caso você encontre um ponteiro perfeito na pilha que não deseja modificar (no ret2ret alteramos o último byte mais baixo para 0x00), você pode realizar o mesmo ataque ret2ret, mas o comprimento da trilha de RET deve ser encurtado em 1 (para que o 0x00 final sobrescreva os dados logo antes do ponteiro perfeito), e o último endereço da trilha de RET 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 o exploit.

Referências

Aprenda hacking AWS do zero ao avançado com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks: