Flag is the input that makes app say Correct!
Solution
Смотрю main:
int32_t main(int32_t argc, char** argv, char** envp)
{
printf("Enter the long flag to verify: ");
char var_48[0x40];
__isoc99_scanf("%s", &var_48);
if (strncmp(&var_48, "V3ry_L0ng_f14g_70_4n", 0x14))
{
puts("No");
return 1;
}
if (strcmp(&var_48[0x20], "Y_wh0_r3V3rS3S_1t"))
{
puts("No");
return 1;
}
if (!strncmp(&var_48[0x14], "n0y_3v3ryb0d", 0xc))
{
puts("Correct!");
return 0;
}
puts("No");
return 1;
}
Флаг проверяется тремя strncmp по кускам. Собираю в Python:
flag = ['a'] * 0x40
flag[:0x14] = "V3ry_L0ng_f14g_70_4n"
flag[0x14:0x20] = "n0y_3v3ryb0d"
flag[0x20:] = "Y_wh0_r3V3rS3S_1t"
print(''.join(flag))
Проверяю:
$ ./mc1.elf
Enter the long flag to verify: V3ry_L0ng_f14g_70_4nn0y_3v3ryb0dY_wh0_r3V3rS3S_1t
Correct!
V3ry_L0ng_f14g_70_4nn0y_3v3ryb0dY_wh0_r3V3rS3S_1t