首页
社区
课程
招聘
[原创]看雪CTF秋季赛第三题——真正的粉丝根本不用调试
发表于: 2017-10-30 20:49 11063

[原创]看雪CTF秋季赛第三题——真正的粉丝根本不用调试

2017-10-30 20:49
11063

总的来说这道题是不好的。为什么?因为有bug。后面我会提到。因为这个bug导致这个题很多解(无数个解)。很多人脑子都不动就作出答案了。这个没有达到作者想要达到的目的。然后从正常的设计来说,还算是凑合的。给你打60分,保你及格,不能再多了:)

有很多人说这道题很难,有很多反调试。然而这并没有什么卵用,为什么呢?且看下文


首先看下程序:

根据hex可以发现。文件没加壳。没有做任何保护。直接ida怼一波。真正的粉丝,从来都没听说过什么OD和windbg,我们只用hex和IDA。

既然什么保护都没做。那就老规矩。直接看字符串:

也可以直接看导入函数:

然后引用跟一下就可以来到一个地方:

在这里我们看到了“OK”。在往上还能看到:


这种特征非常非常明显了吧?程序主要流程就在这里。。。然后你仔细看看这个函数基本这个题就做出来了(起码你已经找到核心点了)其实这里面我是为了大家理解,才这么写的。我的实际操作比这个要风骚的多啦。我在分析的时候。看到字符串有如下信息:

如上图所示。看到这个消息我就知道算法十有八九就在这里。为什么?因为只有在加密解密还有进行编码和hash的时候才有可能出现buffer太短。(后面会讲到,这里其实是摩尔斯密码的加密算法)长度不够的情况。然后直接跟上去。算法就直接被我定位到啦:)

然后不要着急。再看看字符串。字符串里面有太多信息可以挖掘啦。只要你有想象力:

这已经很明显告诉你这个程序可能会出现base64编码啦。这也是一个重要提示。(虽然你跟进去之后ida不能溯源。但是你知道算法有可能会有base64编码那就已经足够啦。逆向破解思路最重要。只要有一点点思维的火花,就可以解题了:)

除了这些,还能看到什么?如下图:

看到这个想到什么?!没错,就是摩尔斯密码。也许你会质疑:就凭借字符串,你怎么确定程序就是用了摩尔斯密码?没错,确实无法直接下定论。但是,我刚才说了。逆向整个过程就是靠思路。这个思路可能是错的,也可能就是正确答案。这无所谓的。想法对不对并不重要,重要的是你有没有自己的想法?因此思路绝对最重要的。逆向破解,思路为王。所以说在看到这些字符串的时候要大胆猜测。接下来就是小心验证。

好的,我们还没开始分析,光凭借字符串就已经得到很多的信息了。现在先总结一下:

a) 直接找到了关键跳转

b) 定位到了关键算法

c) 可以知道算法中很可能用到了base64编码和摩尔斯密码。

现在继续分析关键跳转所在的函数。这个函数的地址是:0x434EF0。这里面有很多if判定。大多数都是退出代码:

然后跟上去看一看可以发现有反调试的东西 (反调试部分后面详细说) 。然而我逆向程序从来不用动态调试。所以这些东西对我来说并没什么卵用:)

程序的关键逻辑在这里:

基本的流程就是:读取用户收入信息。然后做两次base64编码,再用国密算法SM3计算一个hash(你也可以认为就是用SM3加密)。计算完hash之后转换成16进制。然后将Hash值的后64位和用户输入进行比较。如果正确则进入一个“迷宫”迷宫就是密码学中的小游戏。就像迷宫一样:


大家看到迷宫不要方。相信我,迷宫就是吓唬新手的。其实很简单:


上图就是迷宫图。(这种迷宫还是最简单的迷宫)把里面的数据(byte_49B000)复制处理整理一下:

如上图所示,迷宫就出来了。其中X就是障碍,不能走(为了形象、直观我表示为X。其实原数据是1)0是可以走的位置。然后这个迷宫的解就出来了:

入口→下→右→下→右→右→右→右→下→下→下→左→左→上→左→左→下→下→下→右→右→右→下→右→右→右→下→右→右→上→上→左→上→左→上→上→上→上→上→右→右→上→出口

那么问题来了。我现在自己能走出去。但是具体的操作是什么我不知道。也就是说,上文提及的“上下左右”在编码中是如何表示的?“上下左右”的表示在编码中可不一定真的就是“WSAD”或者“SXZY”哦。因此这就需要分析了。其实也很简单。一看就知道啦:





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

收藏
免费 1
支持
分享
最新回复 (42)
雪    币: 168
活跃值: (823)
能力值: ( LV10,RANK:173 )
在线值:
发帖
回帖
粉丝
2
写的太好了,我想知道倒数第二个图里有没有F5的影子?
2017-10-31 09:43
0
雪    币: 224
活跃值: (399)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
写的很好,就是那个迷宫的构造不知道有没有示例
2017-10-31 10:12
0
雪    币: 424
活跃值: (40)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
4
kaoyange 写的太好了,我想知道倒数第二个图里有没有F5的影子?
就是F5的。。。为了图个方便。不F5也是一样的
2017-10-31 11:27
0
雪    币: 54
活跃值: (68)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
大写的福
2017-10-31 14:58
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不错!
2017-10-31 19:19
0
雪    币: 930
活跃值: (1333)
能力值: ( LV15,RANK:750 )
在线值:
发帖
回帖
粉丝
7
厉害
2017-10-31 19:31
0
雪    币: 9
活跃值: (180)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
写的很好,赞
2017-10-31 20:59
0
雪    币: 1189
活跃值: (25)
能力值: ( LV4,RANK:48 )
在线值:
发帖
回帖
粉丝
9
写的很详细,感谢up主的分享
2017-10-31 23:02
0
雪    币: 441
活跃值: (332)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
向大佬低头
2017-11-1 09:51
0
雪    币: 274
活跃值: (30)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
11
写的很好,但有的观点不敢苟同,动态静态两手都要硬才是王道。  当然用ida直接静态去vm的人就不在范围之内了
2017-11-1 10:23
0
雪    币: 222
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
12
牛批
2017-11-1 10:31
0
雪    币: 1556
活跃值: (310)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
13
j_memcpy  这类函数是分析出来的,还是IDA直接识别的?
2017-11-1 11:36
0
雪    币: 113
活跃值: (76)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
14
能问一下lz,IDA有什么好的去花方法么?一是加话的代码IDA可能不识别当数据,强制解析也是包含很多混淆代码,静态分析很麻烦,有没有什么好方法解决?
2017-11-1 12:10
0
雪    币: 424
活跃值: (40)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
15
木羊 j_memcpy 这类函数是分析出来的,还是IDA直接识别的?
当然是自己分析出来的,然后自己rename啦
2017-11-1 15:54
0
雪    币: 424
活跃值: (40)
能力值: ( LV10,RANK:160 )
在线值:
发帖
回帖
粉丝
16
zsmj 写的很好,但有的观点不敢苟同,动态静态两手都要硬才是王道。 当然用ida直接静态去vm的人就不在范围之内了
动静结合只是停留在理论或者说是学生时代。当你接触一些项目的时候就知道啦。我也很想动态,但是几乎不可能。静态VM也不难。不要被VMP吓破胆。
2017-11-1 15:55
0
雪    币: 1305
活跃值: (228)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
17
看见大神全静态分析,只能66666了
2017-11-2 08:52
0
雪    币: 41
活跃值: (823)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
何小龙 动静结合只是停留在理论或者说是学生时代。当你接触一些项目的时候就知道啦。我也很想动态,但是几乎不可能。静态VM也不难。不要被VMP吓破胆。
高人!
2017-11-2 09:15
0
雪    币: 41
活跃值: (823)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
何小龙 动静结合只是停留在理论或者说是学生时代。当你接触一些项目的时候就知道啦。我也很想动态,但是几乎不可能。静态VM也不难。不要被VMP吓破胆。
求静态VM的思路
2017-11-2 09:17
0
雪    币: 171
活跃值: (519)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
20
何小龙 动静结合只是停留在理论或者说是学生时代。当你接触一些项目的时候就知道啦。我也很想动态,但是几乎不可能。静态VM也不难。不要被VMP吓破胆。
求静态VM思路!!!!
2017-11-2 11:13
0
雪    币: 615
活跃值: (590)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
21
来学习IDA  静态VM分析的
2017-11-2 14:31
0
雪    币: 346
活跃值: (25)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
22
谢谢分享。
2017-11-2 17:10
0
雪    币: 5
活跃值: (108)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
漂亮!
2017-11-2 17:16
0
雪    币: 791
活跃值: (404)
能力值: ( LV4,RANK:51 )
在线值:
发帖
回帖
粉丝
24
感谢,写的不错,小白也能看懂一部分,哈哈哈
2017-11-2 19:04
0
雪    币: 103
活跃值: (126)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
25
文章写的很生动啊
2017-11-2 19:56
0
游客
登录 | 注册 方可回帖
返回
//