Estoy tratando de entender el desbordamiento del búfer, y estoy trabajando con un simple código, como se muestra a continuación.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int bof(char *str)
{
char buffer[12];
strcpy(buffer,str);
return 1;
}
int main(int argc, char **argv)
{
char str[517];
FILE *badfile;
badfile = fopen("badfile", "r");
fread(str, sizeof(char), 517, badfile);
bof(str);
printf("Returned Properly\n");
return 1;
}
Comprendo que necesito inyectar el código de shell en "badfile", supongo que creo un archivo bad como este:
char buffer[517];
FILE *badfile;
memset(&buffer, 0x90, 517);
badfile = fopen("./badfile", "w");
fwrite(buffer, 517, 1, badfile);
¿Lo inyecto en el índice 12 del búfer []? Estoy enfrentando un problema con eso. Pero creo que es porque no es la posición de retorno. ¿Tengo que calcular la posición de retorno? Gracias.