Ret2ret & Reo2pop

Impara l'hacking su AWS da zero a esperto con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Ret2ret

Il principale obiettivo di questa tecnica è cercare di bypassare ASLR sfruttando un puntatore esistente nello stack.

Fondamentalmente, gli stack overflow sono di solito causati da stringhe, e le stringhe terminano con un byte nullo alla fine in memoria. Questo consente di cercare di ridurre il posto puntato da un puntatore esistente nello stack. Quindi se lo stack contenesse 0xbfffffdd, questo overflow potrebbe trasformarlo in 0xbfffff00 (nota l'ultimo byte azzerato).

Se quell'indirizzo punta al nostro shellcode nello stack, è possibile far raggiungere il flusso a quell'indirizzo aggiungendo indirizzi all'istruzione ret fino a quando questo non viene raggiunto.

Pertanto l'attacco sarebbe così composto:

  • NOP sled

  • Shellcode

  • Sovrascrivere lo stack dall'EIP con indirizzi a ret (RET sled)

  • 0x00 aggiunto dalla stringa modificando un indirizzo dello stack facendolo puntare al NOP sled

Seguendo questo link puoi vedere un esempio di un binario vulnerabile e in questo l'exploit.

Ret2pop

Nel caso in cui si possa trovare un puntatore perfetto nello stack che non si desidera modificare (in ret2ret abbiamo cambiato l'ultimo byte più basso in 0x00), è possibile eseguire lo stesso attacco ret2ret, ma la lunghezza del RET sled deve essere accorciata di 1 (così il 0x00 finale sovrascrive i dati appena prima del puntatore perfetto), e l'ultimo indirizzo del RET sled deve puntare a pop <reg>; ret. In questo modo, i dati prima del puntatore perfetto verranno rimossi dallo stack (questi sono i dati influenzati dal 0x00) e il ret finale punterà all'indirizzo perfetto nello stack senza alcuna modifica.

Seguendo questo link puoi vedere un esempio di un binario vulnerabile e in questo l'exploit.

References

Impara l'hacking su AWS da zero a esperto con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Last updated