Ret2ret & Reo2pop
Last updated
Last updated
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
L'obiettivo principale di questa tecnica è cercare di bypassare ASLR abusando di un puntatore esistente nello stack.
Fondamentalmente, gli overflow dello stack sono solitamente causati da stringhe, e le stringhe terminano con un byte nullo alla fine in memoria. Questo consente di cercare di ridurre il luogo puntato da un puntatore già esistente nello stack. Quindi, se lo stack conteneva 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
finché non viene raggiunta.
Pertanto, l'attacco sarebbe così:
NOP sled
Shellcode
Sovrascrivere lo stack dall'EIP con indirizzi a ret
(RET sled)
0x00 aggiunto dalla stringa che modifica un indirizzo dallo stack facendolo puntare al NOP sled
Seguendo questo link puoi vedere un esempio di un binario vulnerabile e in questo l'exploit.
Nel caso tu possa trovare un puntatore perfetto nello stack che non vuoi modificare (in ret2ret
cambiamo l'ultimo byte più basso in 0x00
), puoi eseguire lo stesso attacco ret2ret
, ma la lunghezza del RET sled deve essere accorciata di 1 (quindi il finale 0x00
sovrascrive i dati appena prima del puntatore perfetto), e il 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 finale ret
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.
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)