Pregunta

Tengo una aplicación que explica el desbordamiento del búfer de pila. Me gustaría provocar un ataque de regreso a la libra.

El desbordamiento del búfer se basa en:

int main(int argc, char **argv)
{
[...]
char buff[16];
strcpy(buff,argv[1]);
[...]
}

Cuando llamo a esta aplicación directamente desde Shell, tengo un error esperado: la pila está dañada:

[syssec@syssecvm bufov1]$ ./vulnapp hhgfhdsgfsagfzutuewzrqwgfshgafsd
Segmentation fault

Pero cuando intento preparar el argumento en otra aplicación (Ejecutor.c) y llamar a Vulnapp a través del sistema () llamada, no pasa nada. Vulnapp acepta el argumento de cualquier longitud:

./executor
You executed:./vulnapp 01234567890123450123BBBB�%�/bin/ged�������/
[syssec@syssecvm bufov1]$ 

No hay corrupción de pila en este caso.

Por qué es como este ?

¿Hay alguna forma de obtener el mismo efecto (desbordamiento del búfer) en el caso de la llamada System ()?

¿Fue útil?

Solución

Hay corrupción de pila. El sistema de funciones () salió con el código de error probablemente 139. Su aplicación no se dio cuenta de eso porque es un proceso diferente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top