Trabajando a través del curso de explotación binaria moderna de RPI aquí . Estoy teniendo problemas con un ejemplo sobre la explotación de ASLR que se supone que utiliza una pérdida de memoria para obtener información sobre la pila y luego calcular el desplazamiento de una llamada del sistema. Aquí está el código:
#include <stdio.h>
#include <string.h>
/* gcc -pie -fPIE -fno-stack-protector -o aslr_leak2 ./aslr_leak2.c */
int main(int argc, char * argv[])
{
char leaky[16];
if(argc < 2)
{
printf("Please provide two arguments.\n");
return 1;
}
memcpy(leaky, argv[1], 16);
printf("Leaky buffer: %s\n", leaky);
printf("another round? : ");
fgets(leaky, 64, stdin);
return 0;
}
No parece un exploit de cadena de formato para obtener la pérdida de memoria, por lo que no estoy seguro de cómo se supone que funciona. Si comprendo correctamente, debería obtener información de la primera impresión, que me ayuda a sobrescribir el puntero de retorno para crear un gadget ROP. Sí, puedo ejecutar esto dentro de GDB si quisiera, pero quiero poder no hacer eso.