Sto praticando il Astalavista Wargames e ho incontrato questa sfida La domanda è: Bob ha scritto un software ma la verifica della password non sembra funzionare. Devi trovare un modo per Accedere. Siamo stati in grado di recuperare parte della sorgente:
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;
}
Link al file eseguibile fornito originale nella domanda . Nota che la domanda non fornisce nient'altro accanto a questa parte di codice e file eseguibile.
Il mio pensiero iniziale era che questo dovrebbe essere fatto usando gli attacchi di overflow del buffer, quindi, proprio come un approccio comune sulla mia macchina x64, provo a inserire 1 per cambiare il bit valido su TRUE.
quando inserisco questo numero di 1 "111111111111111111111111111111" il programma mi consente di inserire nuovamente la password, MA non di accedere. Se inserisco meno, mostrerebbe la password sbagliata e uscirà e se inserirò di più verrebbe arrestato.
Come posso trovare una soluzione a questa sfida?