首页
社区
课程
招聘
[原创] 看雪CTF2018-第二题writeup
发表于: 2018-6-20 11:56 4558

[原创] 看雪CTF2018-第二题writeup

2018-6-20 11:56
4558

拿到程序strings一下,发现提示:


根据提示以及题目知道是考察字典树(Trietree),字典树是一种用于快速检索字符串的数据结构。

IDA打开进入main函数,发现先调用checkformat函数校验输入,必须符合在A-Z a-z 0-9范围:

拿到程序strings一下,发现提示:


根据提示以及题目知道是考察字典树(Trietree),字典树是一种用于快速检索字符串的数据结构。

IDA打开进入main函数,发现先调用checkformat函数校验输入,必须符合在A-Z a-z 0-9范围:


之后对输入的长度进行校验,需满足22个字节:

接着进入主要的校验函数check,在函数中首先对输入分割:

因为IDA中变量名排序和内存位置有关,因此可以整理出分割并乱序后的输入如下:


之后开始使用分割后的各个字符串插入字典树:

按照插入顺序应该是:

进入第二层check2函数,可以看到有两个校验,根据上面的插入过程,可以知道索引66和索引67分别对应的是该结点的分支数以及到达该结点的字符串出现的频率,a2是用于校验的另一个字典树,可以通过动态调试获得正确的值:

接着进入字符的比较:

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

收藏
免费 2
支持
分享
最新回复 (11)
雪    币: 234
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
mark,
2018-6-20 12:36
0
雪    币: 2440
活跃值: (242)
能力值: ( LV9,RANK:150 )
在线值:
发帖
回帖
粉丝
3
你第一个是什么,什么工具
2018-6-20 14:23
0
雪    币: 2
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
为什么我的ida显示和楼主显示的不一样
2018-6-20 14:45
0
雪    币: 791
活跃值: (404)
能力值: ( LV4,RANK:51 )
在线值:
发帖
回帖
粉丝
5
大佬,请问程序中的correct,wrong,check2,check3,是自己命名的么?还是反编译出来就有的?谢谢楼主
2018-6-20 15:07
0
雪    币: 4522
活跃值: (2146)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
怎么转换成这样显示
2018-6-20 15:31
0
雪    币: 155
活跃值: (120)
能力值: ( LV13,RANK:330 )
在线值:
发帖
回帖
粉丝
7
青蛙mage 你第一个是什么,什么工具
strings命令
2018-6-20 19:03
0
雪    币: 155
活跃值: (120)
能力值: ( LV13,RANK:330 )
在线值:
发帖
回帖
粉丝
8
wx_哈哈哈 大佬,请问程序中的correct,wrong,check2,check3,是自己命名的么?还是反编译出来就有的?谢谢楼主
自己命名的哈
2018-6-20 19:03
0
雪    币: 155
活跃值: (120)
能力值: ( LV13,RANK:330 )
在线值:
发帖
回帖
粉丝
9
cqzhou 怎么转换成这样显示
如果你是指数组的话,IDA  7.0自动分析的
2018-6-20 19:04
0
雪    币: 4522
活跃值: (2146)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
10
sherlly 如果你是指数组的话,IDA 7.0自动分析的
谢谢··
2018-6-21 08:48
0
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
学习了
2018-6-24 01:25
0
雪    币: 136
活跃值: (65)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
12
mark
2018-6-24 11:09
0
游客
登录 | 注册 方可回帖
返回
//