Estaba intentando intentar un ataque de desbordamiento de búfer de retorno a libc para mi asignación de Seguridad del software del equipo. En mi opinión, podemos hacer este tipo de ataques independientemente de las medidas de protección de la pila, como canaries
y non-executable stack
. Esto se debe a que las funciones libc
no residen en la pila y solo necesitamos cambiar el flujo de control de nuestro programa sobrescribiendo la dirección de retorno con el libc function address
y pasando los argumentos adecuados. Esta figura parece resumir el procedimiento que supongo.
Lo que mi duda es, según el figura para la segunda parte, ¿se da el marco de pila para la función libc
o es solo para una función definida en el programa del usuario? No puedo averiguar la necesidad de fake_ret
. ¿No podemos simplemente sobrescribir la dirección de retorno de nuestra función al sobrescribir EIP
con la dirección de decir unlink
y los argumentos se pueden colocar en el búfer de funciones del usuario que se puede usar para pasar a la función unlink
? < br>
Tenga en cuenta que mediante el uso de (algo) del usuario, apunto a señalar (algo) que es definido por el propio usuario en su programa. Gracias.