首页
社区
课程
招聘
[原创]看雪CTF2018 - 2018CMv4 Writeup
发表于: 2018-6-20 20:07 5010

[原创]看雪CTF2018 - 2018CMv4 Writeup

2018-6-20 20:07
5010

      本题的关键在于对 TrieTree 四个数据结构的识别,分别是 TrieTree,TrieTreeNode,Children,String,如下图1所示:


图 1

主函数逆向如下图2:

 main函数中判断输入的字符串长度不能超过22,然后进入输入字符串的验证函数 check_input_key,如下图3:


图 3

      该函数主要功能是将输入的字符串分别取出7个子字符串,插入到一个 TireTree 中,并与一个全局 TrieTree 进行比较,如果两个 TrieTree 相同,则进入last_check函数进行最后约束条件的比较,如下图4:


图 4

图 5

首先,在当前节点的所有子节点中,查找与需要插入的字符串具有公共子字符串的子节点,如果没有找到具有公共子字符串的节点,将该字符串插入到当前节点的子节点中,即图8中 case 5。如果发现具有公共子字符串的子节点,其中又分四种情况,第一种情况,公共子字符串是两者的真子集,以下图6方式插入;

图 6

第二种情况,要插入的字符串 str 是找到 Node 的子字符串,如图7所示,将 Node 中剩余部分以一个节点形式插入到 Node 的子节点中;


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

收藏
免费 1
支持
分享
最新回复 (9)
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
2018-6-20 22:52
0
雪    币: 4402
活跃值: (1366)
能力值: ( LV7,RANK:113 )
在线值:
发帖
回帖
粉丝
3
楼主的IDA主题哪里搞的
2018-6-21 10:23
0
雪    币: 935
活跃值: (148)
能力值: ( LV12,RANK:321 )
在线值:
发帖
回帖
粉丝
4
Adventure 楼主的IDA主题哪里搞的
https://github.com/zyantific/IDASkins
最后于 2018-6-21 12:17 被Iamakiller编辑 ,原因:
2018-6-21 12:16
0
雪    币: 1012
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5

楼主你看 为啥我的IDA 7.0 出来的函数名称完全不知用途,而你的截图中 函数名字就能够知道名称?(恳求解答。
2018-7-22 10:48
0
雪    币: 1012
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
或者说 楼主可否提供一下你使用的IDA版本号 或者下载地址 不胜感激
2018-7-22 10:50
0
雪    币: 935
活跃值: (148)
能力值: ( LV12,RANK:321 )
在线值:
发帖
回帖
粉丝
7
Hauk 或者说 楼主可否提供一下你使用的IDA版本号 或者下载地址 不胜感激
函数名字是我自己标注的。我用的是IDA 7.0 Pro,网上应该有一大堆可以下载吧,如果你用的是IDA 7.0,应该和你的一样。
2018-7-22 20:08
0
雪    币: 1012
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Iamakiller 函数名字是我自己标注的。我用的是IDA 7.0 Pro,网上应该有一大堆可以下载吧,如果你用的是IDA 7.0,应该和你的一样。
多谢
2018-7-22 21:58
0
雪    币: 870
活跃值: (2264)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
写的很好
2018-7-24 15:11
0
雪    币: 5568
活跃值: (3208)
能力值: ( LV12,RANK:407 )
在线值:
发帖
回帖
粉丝
10
数据结构识别工具真的很棒
2018-12-3 18:55
0
游客
登录 | 注册 方可回帖
返回
//