EIP viene modificato in Fgetc () Buffer Overflow Homework

4

Ecco il succo del codice:

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);
  }
  ...
}

Nel primo scanf posso sovrascrivere l'EIP salvato e tutto va bene finché non passo attraverso quella sezione centrale. Quando il primo (sto usando un file vuoto per s1 quindi è anche l'unica volta che viene eseguito) fgetc restituisce la memoria in cui EIP è stato modificato da 0x ----- --- a 0xff ------. Quando lo passo, sembra che succeda in /lib/ld-linux.so.2

Poiché questo è un suggerimento per i compiti a casa, è strongmente preferito, ma se vuoi vedere l'intero c , binary o asm ecco il link .

    
posta David 13.03.2015 - 21:04
fonte

0 risposte

Leggi altre domande sui tag