Buffer Overflow problem [chiuso]

1

Ho una breve domanda su un exploit buffer-overflow in un binario a 64 bit. Ultimamente, ho trovato alcune vulnerabilità di base del buffer overflow. Speravo di sapere come gestirlo, ma a quanto pare, non lo so.

Codice attività:

void vulnFunc(int x){
  char buf[12];
  gets(buf);
  if(x!=10) system("/bin/cat flag.txt");
  else printf("Nope!");
}



int main(){
 vulnFunc(10);
 return 0;
}

In questo scenario il buffer viene allocato DOPO arg, quindi anche se sovrascrivo il buffer, non posso cambiare il valore "x". Ho controllato sotto gdb e dopo aver messo un gruppo di "A" nel buffer, lo stack è simile a questo - > 0x0000000A 0x41414141 0x41414141 .....

    
posta Zumber 30.05.2018 - 18:07
fonte

2 risposte

1

In realtà non hai scritto una domanda nella tua domanda, ma, supponendo che sia x86, allora l'argomento per x deve essere messo nello stack prima di chiamare in vulnFunc . Su x86-64, è del tutto possibile che questo non sia vulnerabile, perché x è passato in un registro, quindi è improbabile che si trovi in qualsiasi punto dello stack, a meno che non sia collocato lì da un effetto collaterale della compilazione.

    
risposta data 30.05.2018 - 18:25
fonte
0

Basta sovrascrivere l'indirizzo di ritorno nello stack per tornare a 'system ("/ bin / cat flag.txt")'.

    
risposta data 31.05.2018 - 13:27
fonte

Leggi altre domande sui tag