下载应用程序,使用exeinfo
查看程序位数为32
位
使用对应位数的IDA
打开这个应用程序
Shift+F12
查看字符串,双击跳转过去,然后Ctrl+X
交叉引用,F5
查看伪代码
这里不注意可能看不到_data_start__
是一个char
变量
双击进来就可以看到这一串数字*11110100001010000101111#
回到伪代码,上面的if
判断把1、2、3、4
选项都覆盖了
最下面是一个判断,刚开始是检查数组越位,如果越位的话就会提出程序
后面两个if
是判断为1
就退出程序,判断到#
就输出下面那句话
*11110100001010000101111#所以这一串数字可以看作*
为起点,#
为终点
由于迷宫题都是正方形的,这里有25
个字符,所以把他5x5
分开来
避开1
,走到终点,可以看到最后的结果是下下下右右上上右右下下下
运行程序,输入对应的数字2222441144222
flag{222441144222}
注意
关于数组越位:我们一开始是在a[0,0]
,并且碰到1
结束,所以只能够往下走
如果此时往左、上走的话数组越位了程序就会exit
,往右走碰到1
程序也会exit