El cambio de EIP en la tarea de desbordamiento de búfer fgetc ()

4

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 .

    
pregunta David 13.03.2015 - 21:04
fuente

0 respuestas

Lea otras preguntas en las etiquetas