不一样的flag 1(迷宫题)
题目
做法
下载压缩包,解压,把解压后的文件拖进Exeinfo PE进行分析
32位,无壳
扔进IDA(32位),找到main,F5反编译
没啥关键词,Shift+F12也找不到什么有用的点
从上往下分析吧
puts("1 up");puts("2 down");puts("3 left");printf("4 right\n:");
选1234都有对应的上下左右选择,是迷宫题吗
scanf("%d", &v5);
if ( v5 == 2 ){++*(_DWORD *)&v3[25];}else if ( v5 > 2 ){if ( v5 == 3 ){--v4;}else{if ( v5 != 4 )
LABEL_13:exit(1);++v4;}}else{if ( v5 != 1 )goto LABEL_13;--*(_DWORD *)&v3[25];}
把我们输入的值放进v5,根据我们输入的数字不同,v3或v4会有不同变化,亦或是异常退出
if ( *(_DWORD *)&v3[4 * i + 25] >= 5u )exit(1);}if ( v7[5 * *(_DWORD *)&v3[25] - 41 + v4] == 49 )exit(1);if ( v7[5 * *(_DWORD *)&v3[25] - 41 + v4] == 35 ){puts("\nok, the order you enter is the flag!");
我们输入的值让v3或v4变化,满足不同公式,系统会异常退出亦或是返回’好的,你输入的顺序就是标志‘
至此,就再无别的信息了
我们尝试双击运行解压后的文件
分别输入1234进行测试
尝试多次后,发现规律——每次弹出来的四个选项中,只有一个是正确答案,且这个正确答案不是固定的,要自己不断慢慢试出来
结合IDA的代码分析,我们要去算那个公式的话,有很多种不同组合方式,而且更繁杂
我们选择直接打开文件一个个测,测出一个正确的就记下来,直到返回\nok, the order you enter is the flag!
最后成果——222441144222,包上flag{}去提交吧!
更新
于2025.4.18