Aquí está la esencia del código:
main(){
char s1[64], s2[64];
int a = 0, b = 0;
FILE *fp1, fp2*;
char temp;
scanf("%s", s1);
scanf("%s", s2);
...
//some checks happen, fp1 is opened to s1, fp2 is opened to s2,
temp = fgetc(fp1);
while(temp != EOF) {
fputc(temp, fp2);
temp = fgetc(fp1);
}
...
}
En el primer escaneo puedo sobrescribir el EIP guardado y todo está bien hasta que paso por esa sección central. Cuando el primero (estoy usando un archivo vacío para s1, por lo que también es la única vez que se ejecuta) fgetc
devuelve la memoria donde se guardó el EIP guardado de 0x ----- --- a 0xff ------. Cuando paso a través parece que ocurre en /lib/ld-linux.so.2
Dado que se trata de una tarea, las sugerencias son muy preferidas, pero si quieres ver el c
, binary
o asm
aquí está el enlace .