Con respecto a la pregunta: Cómo ¿ASCII-Armoring ayuda a prevenir los ataques de desbordamiento de búfer? :
¿Cómo previene un ataque la región blindada?
Si el byte más significativo de la dirección de retorno es 0x00
, el atacante aún puede cambiarlo porque es el último byte que escribe en el búfer.
Por ejemplo: supongamos que libc:execve
reside en 0x00b1ab1a
, ahora que tiene la opción de anular el ret
de la función, el atacante puede llenar los últimos 4 bytes con 0x1a 0xab 0xb1 0x00
(es decir, donde NULL
es el último byte), por lo que la redirección del puntero de instrucciones está dañada y va a libc:execve
.
¿Estoy equivocado?