Cita de: kr0m_ en 5 Agosto 2015, 10:37 AM
En el post indicas que puedo ver algunas imágenes depurando código pero no aparecen, podrías volver a subirlas?
Hola kr0m_
Acabo de comprobar lo de las imágenes y yo puedo verlas en los navegadores: firefox, IE y chrome en su versión de sobremesa sin ningún problema. Por el contrario con el móvil y utilizando una versión desactualizada de firefox no he podido verlas.
Cita de: kr0m_ en 5 Agosto 2015, 10:37 AM
El valor de ESP simplemente indica la cima de la pila, no?
Sobre lo que has dicho estas en lo cierto pero tienes que tener en cuenta que el registro eip no puede ser modificado directamente, para lograr modificarlo es necesario el uso de ciertas instrucciones que lo modifican indirectamente como : call, jump, ret , etc..
La instrucción ret podríamos decir que es equivalente a:
pop eip ; Esta instrucción coje el valor que se encuentra en la cima de la pila y lo mete en el registro de instrucción.
Si en el epílogo tenemos el siguiente código:
leave
lea esp,[ecx-0x4]
ret
Podemos ver que estamos modificando la cima de la pila en última instancia antes del ret con la instrucción lea.
Cuando la instrucción ret se ejecute el valor de la cima de la pila pasará a ser el valor contenido en el registro de instrucción.
De donde sale ecx-0x4 ? Si miras cualquiera de las imágenes que te he pasado en el primer mensaje exceptuando la primera podrás ver la siguiente instrucción:
mov ecx,[ebp-0x4] delante del leave.
Entendiendo que hacen estas dos instrucciones:
mov ecx,[ebp-0x4]
lea esp,[ecx-0x4]
y teniendo en cuenta que el ASLR no está activado puedes poner dos direcciones de memoria en la entrada de datos junto al relleno y conseguir con esto superar el reto.