首页
社区
课程
招聘
[原创]【2019看雪CTF】Q1赛季 第七题 圆圈舞DancingCircle WP
发表于: 2019-3-23 20:58 6114

[原创]【2019看雪CTF】Q1赛季 第七题 圆圈舞DancingCircle WP

2019-3-23 20:58
6114

控制台程序,里面实现了乱序大数,有反调试和花指令。
去花指令后主程序伪代码如下,里面的数据结构调整得比较乱,凑合看:

程序中间部分用了链表类的数据结构,涉及遍历,如果从前住后看要花费很多时间,做题时因为ida反编译问题,后面代码未能显示,大部分时间全花在了中间部分,其实看了前面,然后直接从后住前推应该很快就出来了。

401F58函数功能是修改data区段的某一个双字数据,修改值牵扯到某部分代码,实际上就是断点反调试功能。

程序大致意思如下:

nd的组合规则用代码示意如下:

在此中间会有一次转到4B9364所在分支,调用9个反调试函数,这里反调试函数返回值有8个0,这个值会影响到后面树形链表的遍历。

后面跳过链表部分,转到校验部分,最后输入信息是要异或解码的,与校验正确的字节数异或,直接遍历,得到值79。

再回来看n,其hex形式的值为0B 07 09 0F 03 0D 04 0B 09 0D 05 0A 06 0B 08 0C 02 03 0B 06 0C 0B 01 0C 03 05 0D 04 0B 05 0A 01 0B 07 0B 02 0F 08 0E 03 05 0B
这就决定了l长度为80,取d的长度为58,剩余的22字节就是定值了。校验循环81次,去除0x28的那次和其减1的操作,实际校验79次,与上面得到的异或值对应。

回到校验部分,检验先取出两个数,一个是idx表示要校验的无序大数l的序号,value表示校验值,校验目标数组为4BC0D4处数据,l[idx]为序号。中间链表结构的相关代码中有对l的计算,计算代码表示如下:

以上是按字节进行的,所以各字节互不影响,数字0-9经计算后结果为:

目标校验数组中值为0-9的序号为:

再结合动态调试,发现校验时取的idxvalue其实就是与计算前的l一一对应(我是看完链表后才发现的。。。)。

下面就好办了,直接OD在4B96FC4B9708下记录断点,获取valueidx,然后直接还原输入:

最终flag为CBC25EF8D9F482BC1F3DA3CA1F154EC89FC3F1414EDD93A3

另外是,此题在输入上限制较少,存在多解,有两种情况。

第一种情况因为赛制规则,可以不考虑。但第二种情况确实存在,且数量具大。我列了前面加10进制数字1024以内的解如下,前面为加的高位十进制数,后面为对应的正确输入:

 
 
 
 

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

收藏
免费 3
支持
分享
最新回复 (6)
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
2
在设计时也考虑过是否过滤的再严一些,让答案唯一,我自己也想过有几种情形也有可能存在正确解,比如构造输入让循环提前跳出,比如构造数据让自校验写入不同的值,甚至构造输入让大数初始化提前结束,后来考虑到这些情形都是在对程序非常了解的情况下才能构造出来,理论上说难度应该大于求出标准答案的难度,所以就没做限制。感谢提醒!
2019-3-25 17:33
0
雪    币: 10845
活跃值: (1054)
能力值: (RANK:190 )
在线值:
发帖
回帖
粉丝
3
多解,扣分吗?
2019-3-25 17:39
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
4
现在的新规则,好像分数不是第一权重,破解人数才是第一权重,其实我的分数比第二名低很多,只是破解人数上占先了
2019-3-25 17:45
0
雪    币: 13713
活跃值: (2851)
能力值: ( LV15,RANK:2663 )
在线值:
发帖
回帖
粉丝
5
lelfei 现在的新规则,好像分数不是第一权重,破解人数才是第一权重,其实我的分数比第二名低很多,只是破解人数上占先了
没参加防守方,没注意规则。只是就题说题。
2019-3-25 23:49
0
雪    币: 6051
活跃值: (1441)
能力值: ( LV15,RANK:1473 )
在线值:
发帖
回帖
粉丝
6
poyoten 没参加防守方,没注意规则。只是就题说题。
是回复上面看场雪的,确实应该扣分
2019-3-26 12:20
0
雪    币: 13713
活跃值: (2851)
能力值: ( LV15,RANK:2663 )
在线值:
发帖
回帖
粉丝
7
lelfei 是回复上面看场雪的,确实应该扣分
其实在我看来,多解只能说有些地方疏忽了。如果题目本身好,多解只是限制不严,而不是漏洞百出,对题本身质量影响不大的。
2019-3-26 23:00
0
游客
登录 | 注册 方可回帖
返回
//