Super Secure Vault
Description
Solution
╭─face0xff@aniesu-chan ~/ctf/pragyan/vault
╰─$ ./vault
Enter the key: abc
Wrong key.int __cdecl main(int argc, const char **argv, const char **envp)
{
unsigned int v3; // ST0C_4
unsigned int v4; // ST0C_4
unsigned int v5; // ST0C_4
unsigned int v6; // ST0C_4
__int64 v7; // rsi
int v9; // [rsp+14h] [rbp-BCh]
int v10; // [rsp+14h] [rbp-BCh]
int v11; // [rsp+14h] [rbp-BCh]
int v12; // [rsp+20h] [rbp-B0h]
int v13; // [rsp+24h] [rbp-ACh]
int v14; // [rsp+28h] [rbp-A8h]
int v15; // [rsp+2Ch] [rbp-A4h]
int v16; // [rsp+30h] [rbp-A0h]
int v17; // [rsp+34h] [rbp-9Ch]
int v18; // [rsp+38h] [rbp-98h]
int v19; // [rsp+3Ch] [rbp-94h]
int v20; // [rsp+40h] [rbp-90h]
int v21; // [rsp+44h] [rbp-8Ch]
char s; // [rsp+50h] [rbp-80h]
char v23; // [rsp+90h] [rbp-40h]
unsigned __int64 v24; // [rsp+C8h] [rbp-8h]
v24 = __readfsqword(0x28u);
v12 = 213;
v13 = 8;
v14 = 229;
v15 = 5;
v16 = 25;
v17 = 4;
v18 = 83;
v19 = 7;
v20 = 135;
v21 = 5;
printf("Enter the key: ", argv, envp);
__isoc99_scanf("%s", &s);
if ( strlen(&s) > 0x1E )
fail(0LL);
v3 = getNum((__int64)"27644437104591489104652716127", 0, v13);
if ( (unsigned int)mod(&s, v3) != v12 )
fail(0LL);
v9 = v13;
v4 = getNum((__int64)"27644437104591489104652716127", v13, v15);
if ( (unsigned int)mod(&s, v4) != v14 )
fail(0LL);
v10 = v15 + v9;
v5 = getNum((__int64)"27644437104591489104652716127", v10, v17);
if ( (unsigned int)mod(&s, v5) != v16 )
fail(0LL);
v11 = v17 + v10;
v6 = getNum((__int64)"27644437104591489104652716127", v11, v19);
if ( (unsigned int)mod(&s, v6) != v18 )
fail(0LL);
v7 = (unsigned int)getNum((__int64)"27644437104591489104652716127", v19 + v11, v21);
if ( (unsigned int)mod(&s, v7) != v20 )
fail(0LL);
printf("Enter password: ", v7);
__isoc99_scanf("%s", &v23);
func2(&v23, &s, "27644437104591489104652716127");
return 0;
}Last updated