Practico Astalavista Wargames y Me encontré con este desafío. La pregunta es: Bob escribió un software, pero la verificación de la contraseña no parece funcionar. Debes encontrar una manera de acceder. Pudimos recuperar parte de la fuente:
typedef struct {char pass[5],valid;} password;
int main(){
password s;
s.valid=0;
scanf("%s",s.pass);
verifypass(s);
//if password is correct the value of s.valid will change to 1
if(s.valid==1)login();
else printf("Wrong passwordn");
system("Pause");
return 0;
}
Enlace al archivo ejecutable original provisto en la pregunta . Tenga en cuenta que la pregunta no proporciona nada más aparte de esta parte del código y el archivo ejecutable.
Mi pensamiento inicial fue que esto debería hacerse usando ataques de desbordamiento de búfer, así como un enfoque común en mi máquina x64, trato de ingresar 1 para cambiar el bit válido a VERDADERO.
cuando ingrese este número de 1 "111111111111111111111111111111", el programa me permite ingresar la contraseña nuevamente, PERO no iniciar sesión. Si ingreso menos, se mostrará la contraseña incorrecta y saldría y si ingresara más se bloquearía.
¿Cómo puedo encontrar una solución a este desafío?