KCTF2019Q2正在火热进行中。近期热议的话题,让本人有了一些感想。愿与雪友们交流。
攻防关系
攻击方与防守方经常处于对抗关系。不论是比赛还是实战,通常都想置对方于死地而后快。
但跳出来想想,这真的是双方的目的吗?
如果没有了攻击方,防守方将没有存在的必要。
如果没有了防守方,攻击方将失去挑战的乐趣。
不论是哪一方消失了,另外一方也会随即失去价值。
所以,虽然这“兄弟俩”见面就打架,但实际上是相互依存的。本质上,不论是哪一方,都不希望对方完全消失,都希望对方还活着,甚至希望对方继续发展、继续进步!因为只有这样,自己才能活着、才能发展。
平衡点
道理上,容易说!
但比赛过程中,兄弟俩一旦打起来,却往往“不择手段”,容易把局势搞得难以控制。
虽然现实世界中也有MMA、UFC之类的无限制格斗比赛,但也严格限制了物理场地且禁用工具。
相比之下,IT攻防比赛却难以限制物理场地,也基本上不能限制工具。
不论是KCTF,还是任何其它CTF,其主办方都在绞尽脑汁设计比赛规则,既能够让参与方最大限度地发挥能力,又不至于让现场失控。
规则过于偏左,可能会导致防守方束手束脚;过于偏右,可能会导致攻击方难理头绪。
然而,要找到这个平衡点,并不容易!
争议
在KCTF2019Q2的比赛中,第8题《迷雾中的琴声》引来了不少争议。
有攻击方认为此题违规,而防守方认为不违规。看雪CTF官方也卷入事件之中。
原则上,此争议最终应该由看雪CTF官方根据已经公布的比赛规则进行判决。判决结果,我们可以拭目以待。
但是在这里本人想讨论的,不是这次争议,而是争议的根源:规则。
一个好的规则,应该是有利于生态圈发展的。
一个好的规则,应该是参与者容易理解的。
一个好的规则,应该是能够被实施的。
一个好的规则,应该是有生命力的。
规则
KCTF历史悠久,最早起源于crackme对抗。也就是说,来源于实战。但是,完全实战的场景过于发散,难以focus到技术竞技本身,所以才有了比赛规则。
而且,比赛规则也不是一天写成的,是经过了长期多次修改完善而成的。时至今日,也还依然在与时俱进。
然而,尽管经历了长期的迭代完善,现有的比赛规则也还是依然有”模糊地带“,值得探讨。
问题一:规则是否应该假设攻击者有推理能力?
诚然,攻击方是有智慧的,是会推理的。(这一点,应该不会有人反对吧)
在解题过程中,无人能够阻止或者妨碍攻击方使用推理技能。
对于这个问题,相信大家不难产生共识。
应该有此假设。
问题二:规则是否应该要求防守作品提供出能推理出正确flag的线索?
攻击方是来做技术挑战的,不是来赌大小的。哪怕是猜谜,也应该给出有足够提示的谜面,且不应出现多个合理解。
如果防守作品要求攻击方必须无中生有地创造出正确flag,这是不应该的。
或要求攻击方必须以(比赛中)支付不起的计算代价,才能获得flag,这也是不应该的。
所以,对于这个问题,相信大家也会产生共识。
应该要求提供线索,且避免多解。
问题三:规则是否应该要求防守作品把这个线索放在显眼的位置?
这个问题,也可以有另外一种表达方式:规则是否应该要求防守作品在隐藏了解题线索之后,在显眼的地方标注出隐藏线索的位置?
这一点也正是这次《迷雾中的琴声》一题的争议所在。
如果规则向左,要求线索必须是所有攻击者都能容易发现的(最好连格式都是固定的),那么比赛最终将会演变成一场机器与机器的较量、工具与工具的较量。有没有人的参与,其实不重要,因为输入和输出都是确定性的。
如果规则向右,允许把线索(以任何方式)藏在作品的任何地方,那么比赛最终怕是会演变成一场“寻宝行动”。是的,人是有参与感了,但赛后却没有长进,也没有实用价值。
向左,防守方会受伤。
向右,攻击方会受伤。
站在原地,攻防双方都会受伤。
该往哪里去呢?
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
最后于 2019-6-24 11:17
被看场雪编辑
,原因: