首页
社区
课程
招聘
[原创]看雪CTF.TSRC 2018 团队赛 第六题 追凶者也
发表于: 2018-12-11 21:40 2905

[原创]看雪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期)

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//