首页
论坛
课程
招聘
[原创]看雪.京东 2018CTF 第二题 数据结构 weiteup
2018-6-19 17:01 1131

[原创]看雪.京东 2018CTF 第二题 数据结构 weiteup

2018-6-19 17:01
1131
1.字符串信息查找到

搜索之后发现是字典树。

2.程序总体流程

长度共22个字符。
关键函数 check_401C40

输入0123456789abcdefghijxx 后被分割成下边的8组进行插入:
//01 23 456 78 9abc def ghi jxx
//0018FE99  00 00 00 6A 78 78 00 34 35 36 00 32 33 00 00 64  ...jxx.456.23..d
//0018FEA9  65 66 00 67 68 69 00 00 52 40 00 40 56 52 00 30  ef.ghi..R@.@VR.0
//0018FEB9  31 00 00 37 38 00 00 39 61 62 63 00 00 00 00 A0  1..78..9abc....?
cmpnode_403730  树结构保存在4078f8
+0          vftable
+4          data....    字符以0结尾,后边不知道是什么  整个结构 0x84
+0x88     left_node
+0x8C    right_node

树结构

能表示的单词种类 kx  c7Mk   ct9 ctf
最后的验证函数

根据此特征,可以遍历所有的可能情况:
strTable="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

list_in_01=[]
list_in_78=[]
list_in_1415=[]
list_in_1718=[]
for i in strTable:
    for j in strTable:
        if ord(i) ^ ord(j) == 84:
            print "a[0] a[1] %c %c"%(i,j)
            list_in_01.append(i+j)
        if ord(i) ^ ord(j) == 19:
            print "a[7] a[8] %c %c"%(i,j)
            list_in_78.append((i+j))
        if ord(i) ^ ord(j) == 18:
            print "a[14] a[15] %c %c"%(i,j)
            list_in_1415.append((i+j))
        if ord(i) ^ ord(j) == 77:
            print "a[17] a[18] %c %c"%(i,j)
            list_in_1718.append((i+j))

print list_in_01
print list_in_78
print list_in_1415
print list_in_1718
print "over"

//结果:
['0d', '1e', '2f', '3g', '5a', '6b', '7c', '8l', '9m', 'a5', 'b6', 'c7', 'd0', 'e1', 'f2', 'g3', 'l8', 'm9']
['ar', 'bq', 'cp', 'dw', 'ev', 'fu', 'gt', 'iz', 'jy', 'kx', 'pc', 'qb', 'ra', 'tg', 'uf', 've', 'wd', 'xk', 'yj', 'zi', 'AR', 'BQ', 'CP', 'DW', 'EV', 'FU', 'GT', 'IZ', 'JY', 'KX', 'PC', 'QB', 'RA', 'TG', 'UF', 'VE', 'WD', 'XK', 'YJ', 'ZI']
['as', 'bp', 'cq', 'dv', 'ew', 'ft', 'gu', 'hz', 'jx', 'ky', 'pb', 'qc', 'sa', 'tf', 'ug', 'vd', 'we', 'xj', 'yk', 'zh', 'AS', 'BP', 'CQ', 'DV', 'EW', 'FT', 'GU', 'HZ', 'JX', 'KY', 'PB', 'QC', 'SA', 'TF', 'UG', 'VD', 'WE', 'XJ', 'YK', 'ZH']
['4y', '5x', '7z', '8u', '9t', 't9', 'u8', 'x5', 'y4', 'z7']
由单词树可知满足情况的只有
0-1 c7
78 kx
1415 tf
1718 t9
同时结合单词长度和sub_4036D0处的遍历顺序可确定答案。



看雪侠者千人榜,看看你上榜了吗?

最后于 2018-6-19 17:45 被lacoucou编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回