Problema de desbordamiento de búfer [cerrado]

1

Tengo una pregunta rápida sobre un exploit de desbordamiento de búfer en un binario de 64 bits. Últimamente, he encontrado algunas vulnerabilidades básicas de desbordamiento de búfer. Esperaba saber cómo manejarlo, pero aparentemente, yo no.

Código de tarea:

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

En este escenario, el búfer se asigna DESPUÉS de arg, por lo que incluso si anulo el búfer, no puedo cambiar el valor de "x". Revisé debajo del gdb y después de poner un montón de "A" en el búfer, la pila se ve así: > 0x0000000A 0x41414141 0x41414141 .....

    
pregunta Zumber 30.05.2018 - 18:07
fuente

2 respuestas

1

En realidad no escribiste una pregunta en tu pregunta, pero, asumiendo que es x86, entonces el argumento para x debe debe ponerse en la pila antes de llamar a vulnFunc . En x86-64, es completamente posible que esto no sea vulnerable, porque x se pasa en un registro, por lo que es poco probable que esté en algún lugar de la pila, a menos que se coloque allí por un efecto secundario de la compilación.

    
respondido por el David 30.05.2018 - 18:25
fuente
0

Simplemente sobrescriba la dirección de retorno en la pila para volver a 'system ("/ bin / cat flag.txt")'.

    
respondido por el rhodeo 31.05.2018 - 13:27
fuente

Lea otras preguntas en las etiquetas