-
-
[原创]看雪CTF.TSRC 2018 团队赛 第六题 追凶者也
-
发表于: 2018-12-11 21:40 2905
-
一个Win32程序,双击跑起来没有反映,CPU倒是跑起来了。题目描述说Win10可能报错,看起来我是遇到BUG了,只能丢进Win7虚拟机。在Win7中可以成功运行,随便输入点东西会弹窗。
程序比较小,把WinMain下面的函数都点开看看,立马可以找到出错的逻辑。
看看其他函数,0x401290处有个很奇怪的数组初始化操作,xref到0x401A97,发现这里似乎是校验逻辑。结合动态调试可以分析出基本流程:拿到输入,进行check,check返回1的话就再hash一下,需要结果是0x5634d252,然后就会修改弹窗标题和弹窗内容,应该就是过关信息了。
check的逻辑也很简单,要求我们的输入可以把数组转化为指定形式。
calc就是执行我们的操作,分析可知,把那个全局数组视为一个3x3的方阵,我们可以将一个元素和附近的0进行位置交换。
那么现在思路就是先算出能把数组转换成功的输入,再计算hash看是否匹配。由于翻转操作要求我们指定元素的指定方向上的邻近元素是0,所以等价于不停地挪动0。因为程序有个hash的要求,所以说我们还不能只找最短路径,这里就先多打点答案出来。
运行之后有不少解出来了,当然里面有很多是操作冗余的。
这时候送给hash校验,
结果只有一个,就是最短的d6d8s7s4a1w2a5w6
,也就是最终答案了。
PS:写python差点就被符号位右移坑了……
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)
赞赏
他的文章
看原图
赞赏
雪币:
留言: