Sto cercando di capire l'overflow del buffer e sto lavorando con una semplice parte di codice, come di seguito.
#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;
}
Capisco che ho bisogno di iniettare il codice shell in "badfile", supponiamo che creo un file cattivo come questo:
char buffer[517];
FILE *badfile;
memset(&buffer, 0x90, 517);
badfile = fopen("./badfile", "w");
fwrite(buffer, 517, 1, badfile);
Lo inietto al 12 ° indice del buffer []? Sto affrontando un problema con quello. Ma credo che sia perché non è la posizione di ritorno. Devo calcolare la posizione di ritorno? Grazie.