首页
社区
课程
招聘
[原创] kxctf2018 第二题 数据结构
发表于: 2018-6-19 23:04 3231

[原创] kxctf2018 第二题 数据结构

2018-6-19 23:04
3231

1. 先查看一下主函数,看下大体逻辑:


  通过动态调试很容易看到主函数里几个函数的功能,得到第一个信息输入的字符长度为22。仔细看check函数。
 2. 在check函数前面的局部变量初始化部分,有如下:
  
 经过动态调试可以发现,它会将输入的22位字符分割成8块来使用,块大小分别是(2,2,3,2,4,3,3,3),假设输入为:01234567890abcdefghijkl,栈中中布局如下图:
 上面是分的8块,下面是输入的原字符串。
 接下来是比较重要的一个构造函数,

 对v39进行初始化,经过分析可以知道一个node节点结构的构造,这是后面无意间发现的,其实启动动态调试后,查看String Views,可以看到

 题目为数据结构,所以应该着重看一些数据结构的构造函数之类,又看到这些字符串,Google搜索得知这是前缀树,思绪要向这边靠拢,猜测这个求解问题是前缀树的关键词查找,甚至前缀树的比较?
回到v39的构造函数,如下:

 其中v2就是一个node节点结构,然后通过调试可以知道v2+136后面跟着当前节点的子节点地址,v2+264值为node节点的子节点数,v2+268值用来标识当前节点作为关键字使用的次数。

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

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