Per quanto riguarda la domanda: Come ASCII-Armoring aiuta a prevenire attacchi buffer-overflow? :
In che modo la regione corazzata previene un attacco?
Se il byte più significativo dell'indirizzo di ritorno è 0x00
, l'autore dell'attacco può ancora modificarlo perché è l'ultimo byte che scrive nel buffer.
Ad esempio: supponiamo che libc:execve
risieda in 0x00b1ab1a
, ora avendo l'opzione di sovrascrivere il ret
della funzione, l'attaccante può riempire gli ultimi 4 byte con 0x1a 0xab 0xb1 0x00
(cioè dove NULL
è l'ultimo byte) quindi il reindirizzamento del puntatore all'istruzione è effettivamente danneggiato e va a libc:execve
.
Mi sbaglio?