首页
社区
课程
招聘
[分享] CTF2017第一题解题分析-萌新版
发表于: 2017-6-1 16:58 2532

[分享] CTF2017第一题解题分析-萌新版

2017-6-1 16:58
2532

开门见山,此三无CrackMe直接拖入OD运行,随便输入"1234567890",弹对话框显示"error !"

进OD搜字符串,直接有:

双击跳转到代码,上方靠近处有一个显眼的jnz,猜测是序列号比较了,在004012C6 jnz下断,再次运行,没断下来:

回到OD,继续往上翻,试了几次终于发现在00401225 cmp eax,0x4的比较失败,导致下面的jnz跳到error,而此处eax=0x0A即10,一猜是输入的字符串长度,那么把输入换成4位的"1234"再试,果然可以过这个jnz了

接下来就应该是对核心算法的分析了,通过单步跟踪,顺便学了浮点指令(那些褐色的指令,一看就不太常用)

终于理出了算法:

现将输入的4个字符与0x30(即Ascii码中的'0')相减,分别得到4个数字,假设其为A,B,C,D

这段代码的功能是计算 (C-A/B)*D的值,然后乘以16,再与384比较,相等则成功。

384/16=24,换成人话就是用 (C-A/B)*D来算24点,果然符合6.1儿童节主题。

对了忘了说,一开始会判断4个数字都不能为0。

这个24点有很多个解,后来程序更新后加了判断,A必须等于1,B必须等于5,这样解就很有限了。

比如(5-1/5)*5=24,也就是1555

其他解还没有尝试出来。

最后在程序里尝试1555,通过!


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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