首页
社区
课程
招聘
[原创]看雪.TSRC 2017CTF秋季赛第三题 crackMe
发表于: 2017-10-29 20:28 3420

[原创]看雪.TSRC 2017CTF秋季赛第三题 crackMe

2017-10-29 20:28
3420

对于这道题,服气。做的时候遇到思维定势,想着输入要符合base64解码和莫尔斯解码的规则,然而这题的关键就在与在解码时遇到不符合规则的情况就退出了,只解码符合规则的部分。

这题很精彩,但是出现了多解。先上代码

然后再给一组flag。

首先,整个校验的总流程如下
image_1btjmtpdi1h871rih2bg1rtgpl69.png-45.8kB

首先对输入进行两次base64解码,然后再进行一次莫尔斯解码,对第二次base64解码的结果的前3个字节计算SM3哈希。哈希结果和输入的最后64个字节进行比较,比较通过后,再调用check函数对莫尔斯解码的结果进行检查。这个检查很迷,基本没用。

image_1btjumoi61vadbeh6ruk5u1st25v.png-94.2kB
如果逆向过base64还是能意识到这是什么的。

image_1btjqdc6oqdr1i4ep4816cs2ou13.png-53.3kB
这个函数比较长,只截取了关键的一段,其实这个解码没有多大用,只要知道/是单词的间隔,也就是/会被替换成空格

image_1btjqhbpeik61cn210a1ac21ab51g.png-15.2kB
识别出这个主要是因为sm3_init这个函数里面的初始值。
image_1btjqln1f155n3fc1b2iuofs282a.png-28.7kB
知道了算法之后就不用详细分析了。

这个题的一大亮点就是反调试,其实patch掉反调试之后,不用分析那么多也能搞出一个flag,就是三个0字节的SM3哈希183920f00e15a0433ee3a8fc90dd9ac164c4142ccf63ca189a8f645ec96ff8de。原理就是这个哈希值进行两次base64解码后为空字符串,缓冲里面全是0,取前三个字节也是0,正好符合。可能这才是作者的意图?

下面来看一下这个程序是怎么反调试的。

image_1btjr3dc8gviv9015jh1b7p1m6e34.png-31.6kB
首先加载模块,然后得到函数地址,判断一下函数地址处是否有软中断,最后调用isDebuggerPresent

image_1btjsb6tn71p1l46gu4dou1tc83h.png-59.2kB
这里涉及到PEB结构和TEB结构,详情请参考《加密与解密》第三版401页15.1.1 BeingDebugged。(请把广告费打到我账户上)。

image_1btjt5pckhekbab2rg15km1eso3u.png-35kB
不详述了,参考《加密与解密》第三版407页15.1.3 Heap Magic。

image_1btjtf7fjd9b19qe134h10631j3m4b.png-68.1kB
调试器的主窗口,也有标题和类名。使用这个API可以判断各种调试器的窗口是否打开。参考《加密与解密》第三版435页15.3.2 OllyDbg检测方法。

image_1btju3b83pd21ves17na1k6g2s54o.png-34.5kB
image_1btju3r57sbv1jn25m3klk3g955.png-45.9kB
与查找窗口类似,查找进程。

image_1btjugkc614m1cm67bkreg5rq5i.png-32.2kB
通过句柄检测SoftICE和Filemon,参考《加密与解密》第三版433页15.3.1。

image_1btjv2p831r0rfg9cli51ofs6c.png-41.7kB
这里的反汇编出来的伪代码不太对,参考《加密与解密》第三版413页15.2.1。

image_1btjv7ohq761hi11vem1rtk1gsq76.png-50.7kB
参考《加密与解密》第三版415页。

image_1btjvgdlb1khr1sl416lr9s917bg7j.png-34.1kB
参考《加密与解密》第三版423页。

image.png-19.8kB
参考《加密与解密》第三版436页。

image_1btk08csvm5j8bj1qeg19o0i6190.png-66.1kB
参考《加密与解密》第三版440页15.3.5。

image_1btk6qjrb13jaumso14ia5t0o9.png-134.9kB
原理就是如果没有调试器,就利用int 3设置四个硬件断点,这四个硬件断点都会inc eax,最后eax的值就是4。如果调试器处理的int 3,那么最后eax就是0。

以前没怎么逆向过Windows,一下搞了这么多反调试,太凶残。

 

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

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