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