Estoy tratando de hacer este sencillo ejercicio de vulnerabilidad de formato de cadena (no es para la tarea, el semestre universitario terminó hace 1 mes en Australia) .
Hay una función de comprobación de contraseña que contiene la contraseña y compara la entrada con ella byte por byte.
Según la función, debería haber 4 variables en la pila, la cadena de conjetura, la cadena de contraseña, la respuesta de impresión (vacío antes de una conjetura) y el número de intentos restantes.
He estado leyendo el manual de Shellcoder y TAOSA, según tengo entendido, las dos matrices deberían estar una detrás de la otra en el marco de pila de esta función. Entonces, simplemente ingresando suficiente %x%x
debería imprimirlo en hexadecimal, luego puedo convertir a ASCII y esa es la contraseña.
Hasta ahora, un ejemplo de contraseña es:
WPK1ZHv1wubJ
da a conocer
590481d86720756f73736575203a64657825782578257825
de la pila.
Sin embargo, esto no cambia, independientemente de la contraseña (la contraseña se toma de /dev/random
cada ejecución).
¿Qué estoy haciendo mal aquí?
Nota:
He desactivado ASLR con sysctl kernel.randomize_va_space=0
y lo he compilado con -fno-stack-protector -mpreferred-stack-boundary=2