下载应用程序,使用exeinfo查看程序位数为32

CTF-不一样的flag_应用程序

使用对应位数的IDA打开这个应用程序

Shift+F12查看字符串,双击跳转过去,然后Ctrl+X交叉引用,F5查看伪代码

CTF-不一样的flag_应用程序_02

这里不注意可能看不到_data_start__是一个char变量

双击进来就可以看到这一串数字*11110100001010000101111#

CTF-不一样的flag_应用程序_03

回到伪代码,上面的if判断把1、2、3、4选项都覆盖了

CTF-不一样的flag_数组_04

最下面是一个判断,刚开始是检查数组越位,如果越位的话就会提出程序

后面两个if是判断为1就退出程序,判断到#就输出下面那句话

*11110100001010000101111#所以这一串数字可以看作*为起点,#为终点

由于迷宫题都是正方形的,这里有25个字符,所以把他5x5分开来

CTF-不一样的flag_数组_05

避开1,走到终点,可以看到最后的结果是下下下右右上上右右下下下

运行程序,输入对应的数字2222441144222

CTF-不一样的flag_数组_06

flag{222441144222}

CTF-不一样的flag_伪代码_07

注意

关于数组越位:我们一开始是在a[0,0],并且碰到1结束,所以只能够往下走

CTF-不一样的flag_伪代码_08

如果此时往左、上走的话数组越位了程序就会exit,往右走碰到1程序也会exit

CTF-不一样的flag_伪代码_09