首页
论坛
专栏
课程

[原创]看雪CTF从入门到存活(终)

2019-6-17 11:51 3091

[原创]看雪CTF从入门到存活(终)

2019-6-17 11:51
3091

各位雪友好!

 

看雪CTF是圈内知名度最高的技术竞技
其规则设置严格周全 既给了防守方足够的施展空间 也避免过度浪费攻击方的时间
从攻防两个角度看 都是个难得的竞技和学习机会

 

笔者仰慕dalao们神迹已久,并在2018年6月萌生一个问题:是否存在一种可公开的通用方法,它能够设计出无限量个算法不相同的CrackMe,使之都能满足看雪CTF的规则且无人能攻破?
经过将近1年的努力,在许多队友和对手的帮助下,笔者从入门走向存活,收获颇丰。在此回顾一下心路历程,愿与雪友们分享。

 

笔者的作品主要包含2个系列:密室逃脱系列 和 叹息之墙系列

 

密室逃脱》是笔者设计的第一个正式参赛作品(前2年还有一次参赛 但是不熟悉规则 违规了)。此作品本意就是想存活(48小时无人破解),但失败了。原因是:算法上有漏洞。
于是2018年12月,修补漏洞并全面升级之后,推出了《魔法森林》,获得了满意的战绩。
(这2件作品都是可爱的川妹子Chikey所做的)

 

叹息之墙》源于看雪2018国庆测试赛。(这场比赛只有这一件防守作品 只是用于测试看雪团队赛系统)时间仓促,笔者就自己操刀了,还请Q老师派学生加了壳。(感谢んеХег的指点和引导,受益匪浅)
2018年12月,在叹息之墙的基础之上,在追求存活的目标以外,又增加了一个附加目标——最简设计,推出了《七十二疑冢》。(小美女Venessa花了不少功夫设计了许多有趣的彩蛋)但同样是算法漏洞导致未能达到设计寿命。
之后,Venessa花了半年时间修补算法,并引入了新的保护方法,于2019年6月推出了《部落冲突》,获得了满意的战绩。(感谢Q老师派学生加壳)

 

上述2个系列,最终都获得了满意的战绩。
所谓满意,并不仅仅定义为“存活”,而是回答了笔者一开始提出的问题:是否存在这种方法?
实践证明,这种方法是存在的,而且不止一种!

 

在过程中,笔者留下了一些心得:看雪CTF从入门到存活 系列笔记

(一)问题的提出

表达了笔者的思考和目标
公开发布:https://bbs.pediy.com/thread-229602.htm

(二)主盾与副盾

给出了一种参考密码算法框架的CM设计框架
隐藏首发:魔法森林的作品中
公开发布:https://bbs.pediy.com/thread-248044.htm

(三)一种完美

给出了一种最简的CM设计思路
公开发布:https://bbs.pediy.com/thread-247984.htm

(四)谋胜

未公开发布

(五)坦克与法师

完整地总结了2种CM出题方案。只要正确运用,就能设计出无限多个能在KCTF中存活的作品
公开发布:https://bbs.pediy.com/thread-248447.htm

 

本来,故事写到这就可以结束了。
但是,终究没有一次成功地存活下来,总觉得有点遗憾。于是我们决定,在这里停一下,想画上一个句号

(六)主动防御

当破解者过于强悍时,使用主动防御,构筑起一个跨学科的防御体系,或可一战。
隐藏首发:部落冲突的作品中
公开发布:https://bbs.pediy.com/thread-254172.htm

致谢

衷心感谢一路上指点我、帮助我、支持我的朋友们!
也感谢质疑我、挑战我、打击我的对手们!
《看雪CTF从入门到存活》系列,到此结束。
感谢观看!

 

看场雪



[公告]安全服务和外包项目请将项目需求发到看雪企服平台:https://qifu.kanxue.com

最后于 2019-8-28 18:17 被看场雪编辑 ,原因: 公开发布《主动防御》
最新回复 (5)
看场雪 3 2019-6-25 23:11
2
0

感谢waiWH发现并发布了本系列笔记的最后一部《主动防御
藏得再深,也能被挖出来呀。佩服!

Riatre 7 2019-6-25 23:22
3
0
看场雪 感谢waiWH发现并发布了本系列笔记的最后一部《[主动防御](https://bbs.pediy.com/thread-252086.htm)》 藏得再深,也能被挖出来呀。佩服!
对这次埋的坑的细节感兴趣,能贴一下具体在哪吗?可能是我脑洞不够大,看到这篇之后特地去下了一个部落冲突把cxk壳脱了找这里面提到的三种坑,结果一个都没找到,不在验证逻辑里?
看场雪 3 2019-6-25 23:30
4
0
Riatre 对这次埋的坑的细节感兴趣,能贴一下具体在哪吗?可能是我脑洞不够大,看到这篇之后特地去下了一个部落冲突把cxk壳脱了找这里面提到的三种坑,结果一个都没找到,不在验证逻辑里?
这次的三种坑,都设计在数据层面。没有体现在代码中。只有先踩进这些坑,而且深入到一定深度,才能顺次看到此题中埋藏的3个彩蛋。其中,第3个彩蛋就是这篇笔记《主动防御》。
Riatre 7 2019-6-26 00:12
5
0
看场雪 这次的三种坑,都设计在数据层面。没有体现在代码中。只有先踩进这些坑,而且深入到一定深度,才能顺次看到此题中埋藏的3个彩蛋。其中,第3个彩蛋就是这篇笔记《主动防御》。
不知道 @waiWH 愿不愿意分享一下这三个坑相关的数据具体在哪?

从我目前看到的程序来看,我理解你这三个彩蛋是验证流程中用当前计算结果去尝试解密的那三个blob,但这三块数据跟验证流程毫无关系呀,这里面并没有逻辑上合理的能吸引人去分析的地方,跟这个笔记中说的对不上啊。
看场雪 3 2019-6-26 06:22
6
0
Riatre 不知道 @waiWH 愿不愿意分享一下这三个坑相关的数据具体在哪? 从我目前看到的程序来看,我理解你这三个彩蛋是验证流程中用当前计算结果去尝试解密的那三个blob,但这三块数据跟验证流程毫无关系 ...
这个验证序列号的过程是个循环(就是界面上说的“走了xx步”)。每走一步会产生一个迭代值。最后一步的迭代值的汉明重量被理解为“中箭数量”。如果汉明重量为0则胜出(序列号正确)。
观察这个迭代值,会发现这3种坑。最先被发现的,应该是“暴风雪”这些汉字。然后较难发现的是“素因子”。最难利用的应该是“可执行代码”(之所以说最难利用是因为,要让程序自动从乱码当中识别出它,需要攻击者设计trap机制,然后去执行它并捕获指令异常或执行越界)。
不过,为了防止攻击者只能猜出其中2种而走不下去,这些坑之间采用了交错布置。如果认不出所有的3种坑,只要机器足够强,多点时间,也能走下去。但会更难走得远。
waiWH能发现第3个彩蛋,实属不易。
游客
登录 | 注册 方可回帖
返回