首页
社区
课程
招聘
[原创]看雪CTF2016第8、9题解题过程(补)
发表于: 2016-12-29 23:15 3629

[原创]看雪CTF2016第8、9题解题过程(补)

2016-12-29 23:15
3629
先说第8题
1、首先定位输入输出,程序是64位程序,很多分析工具永不了,直接上IDA静态分析,找到获取输入的位置如下,注册码格式是:%dA%s

数字参数传递给F1_140001300,该函数需要返回非0,才能调用F2_1400014B0函数,函数F2是输出”恭喜你注册成功!“的函数。相关代码如下图所示。

2、接下来去除反调试,将下面的cmp eax, 1改成cmp eax, 2,去除反调试。

3、最后建立输入与输出的关系
逆向分析F1_140001300函数的功能,发现其是返回一个数,该数的平方为输入参数,其实就是一个开根号的功能。此处可以从F2函数先确定v1,然后反过来求平方得到v4。
F2_1400014B0函数会检测A之后的字符是否为1,2,3,4,如果存在其它字符报注册码格式不正确。输入121A1234,代码执行到下列反编译的代码,由于判别条件的不等于成立,输出字符被赋予“注册码不正确“,现在需要构造A之前的字符,使得等号成立。

解方程:(3-g_V5iMul)*arg1 == 0xd2; 其中g_V5iMul = 2;
                arg1 = 0xd2 = 210;
                210*210 = 44100
输入 44100A1234, 注册成功。


再说第9题
这道题的解太多了,由于题目Bug,只需通过获取下面长度信息:23个字符

尝试4个一组的输入,最后1组3个字符:11112222333344445555666,直接成功了。
本题除了多解,程序体积也超出了300K大小的限制,另外没有太大的分析价值,也就没有继续分析。

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回