Hice un pequeño programa para practicar el overflow , la idea es tratar de hacer que el programa llame a una funcion que nunca se llama , ejemplo:
Código:
int main(){
printf("hola");
return 0;
}
void nada()
{
printf("secreto");
return;
}
printf("hola");
return 0;
}
void nada()
{
printf("secreto");
return;
}
Eso es solo un ejemplo rapido pero el overflow si se llega a producir y llego a sobre escribir la direccion de retorno. Usando el objdump y gdb encontre que el offset de la funcion oculta es 0x80483be algo que quedaria haci:
Código:
char offset[] = "\xbe\x83\x04\x08";
Pero no funciona , pienso que es porque el x08 es un backspace y no llega a salir cuando trato de explotar el fallo. Acaso hay algo que estoy implementando mal o alguien me da alguna idea o opinion?
PD: Esto es en linux , porque lo intente en windows y el offset era un 004.... y no se puede o no pude llamar a un x00.










Autor





En línea


varios format bugs
, este es un buffer overflow , el codigo es haci
, use un buffer mas pequeño para poder hacerlo mas rapido y en foo quite el return y puse un exit(0) . Porque estaba haciendo return a 0x000000 y eso no iva a ninguna parte.
