首页
社区
课程
招聘
[原创]看雪CTF第三题crackme解题思路
发表于: 2017-10-30 09:39 4654

[原创]看雪CTF第三题crackme解题思路

2017-10-30 09:39
4654

考点我觉得可以分:

(1)patch反调试
(2)base64、morse的解码和sm3的hash
(3)迷宫的绕过
(4)base64解码函数绕过

patch就不多说了,各有各的方法,可以直接暴力nop,也可以构造跳转绕过反调试函数;
IDA载入程序,整理出算法的逻辑是:
(1)对输入的注册码进行两次base64解码,得到摩斯码;
(2)对摩斯码进行解码,得到明文;
(3)对摩斯码进行sm3 hash,得到hash值;
(4)进行第一次验证,取输入的注册码末64位和hash值比较,若相等,进行下一步验证;
(5)进行第二次验证,明文进入迷宫进行判断,能绕过则成功。

我先入手的是第二次验证,构造迷宫的绕过,后来发现绕过方式太多了,说下大概的几种:
(1)输入不含'z', 'l', 'q', 'p';
(2)输入为 'zlzllllzzzppqppzzzlllzlllzllqqpqpqqlqpqqllq' 的子串(从头部开始往后),能走完迷宫(z-->下, l-->右, q-->上 , p-->左);
(3)输入直接为空格‘ ’,在最开始迷宫判断时就结束。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 23080
活跃值: (3432)
能力值: (RANK:648 )
在线值:
发帖
回帖
粉丝
2
大佬,请问你的ida是如何识别base64编码的?
2017-10-30 21:26
0
雪    币: 5
活跃值: (11)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
3
大神是怎么识别出base64和sm3的函数,我用findcrypt.py不管用啊
2017-10-30 21:29
0
雪    币: 11
活跃值: (12)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
2个base64看出来了,空格绕过也看出来了,剩下的morse和sm3没整出来。。。。大佬厉害
2017-10-30 22:46
0
雪    币: 155
活跃值: (120)
能力值: ( LV13,RANK:330 )
在线值:
发帖
回帖
粉丝
5
自己识别的-  -
2017-11-11 20:22
0
游客
登录 | 注册 方可回帖
返回
//