前言

最近办了一场学校的ctf校赛,这也许是我最后一次接触ctf,目前比赛算是结束了,复盘一下比赛,复盘一下我自己。

办了一场ctf校赛

缘起

办比赛的缘起要从我莫名当上协会负责人说起,九月份去衡阳打攻防,打的过程中,上一届的会长SkyWT在qq上问我要不要当下一任会长,我同意了,回去之后忙完年审材料,换届材料之后,我就成了协会的负责人。(我估计也会这样把协会传下去),这一身份让我与办ctf校赛这一事情产生了内在联系。

|300

另一部分是源自带我去衡阳打攻防的学姐,在衡阳跟我说过这学期她需要办一场ctf比赛,她与学院的老师有过这方面的约定,而我对这位带我去打攻防的学姐是非常感激的。她带我去打攻防,是基于为爱发电的理念,“如果我带你去打了攻防,有了这一次攻防,你之后就有可能去带新人去打,这样我们学校做渗透的就能传下去”,这种热爱,传承的意味在一定程度上影响了我。但是与这种感染相比更多的是对学姐的感激(让我短暂远离了学校这一苦闷的秩序,以及让我中断那段时间的自我内耗)。


再回忆一下让比赛办下去的外部因素,也就是’缘‘。

一方面是学院需要这方面的建设,在建新校区,网安系可能会独立出去啥的,因此给了比较充足的预算支持,

另一个外部因素是跟朋友的闲聊,聊到我们学校ctf这方面发展的不行,没什么氛围,跟那些强ctf战队的学校比不了,之后是一段不怎么愉快的交流(回忆那次闲聊,我只是知道是不怎么愉快的,就跟我知道1+1=2一样,只是概念上的知道有这一回事),我并不认同‘我身为会长,就最有责任最有义务去建设这玩意’,我当上会长并不是因为有一群热爱安全,热爱ctf,一起打比赛的伙伴,并不是有一个真实的信安协会,协会只在学校的记录中还存在而已,在的认知中,我只是莫名奇妙的就当上了会长(我只是莫名奇妙的来到了这个世界)

‘我’并不是一个有什么领导特质的人,或者说,我并不是一个主动的,积极的,直接活着的人,我没有很强的自我感(这些否定性的特质是我能够活到现在的前提),我的自我感直到高二才显现出来,当时我将那种强烈的“我需要做一些事情,我能够做一些事情”的感觉,称作觉醒。

大多数时间,是世界在向我展开,是生活在经历我,我只是莫名其妙的经历那些,莫名奇妙的就成为了我,这与我的早期经历有关,与心盲症有关。

进入大学后,我做了一些努力,积极地说,或许改变了5%。按照修行的说法,我身上的习气依然很难消除,也许每天只有20分钟,我能够保持积极的,主动的,觉察的心态,在修行,而剩下的23小时40分钟都在复习过去旧有的习惯,强化旧有的思维模式,都在依照过去的习性造作新的业,在反向修行。

回到那次闲聊,闲聊中,我莫名成了最有责任要办一场比赛,来提升学校ctf氛围的的人,这种‘因为我是会长,所以我需要…’的说法对我来说是荒谬的,如果这一说法是产生于内部,有可能会鼓动到我(如果我不小心相信了我的念头)。(类比这样的说法,我们都相信自己是理性的,但是如果别人对你说,‘你要理性一点’,你会以非理性的方式应对,你的心理机制会让你对此反对的,如果你认同了,那你在这场语言权力斗争中就输了..)

我是一个被动的人,既然朋友都这么说了,那我就去推进一下这件事情。跟我闲聊的朋友并不知道协会的学姐跟我说过,这学期她需要办一场校赛这一信息。(也许是并不相信这一说法,不过无所谓怎么形容了,反正我回忆不起来过去发生的事情的细节)在我的视角中,推进办比赛这件事情最直接的方式就是去联系一下学姐。

在我联系学姐之后,这场比赛的因缘就和合了,如果没有什么更大的外部事件发生,就一定会办了。

类比一颗已经接近临界点的水煮蛋,哪怕在此刻促成煮鸡蛋的一些外界条件改变了,装鸡蛋的容器消失了,提供热量的火灭了,把鸡蛋放到容器里面的人暴毙了….余热也会让煮鸡蛋这一事件彻底完成,这颗鸡蛋注定会成熟。(这是我对因缘和合这一说法最早的印象)


赛前

办一场比赛,最麻烦的事情都在赛前。

方案

由于拿了学院的预算,所以什么都需要审核。

拿着22年校赛的方案,更改内容,添加一点点细节,经过几个版本的迭代,勉强弄出来一个像样的方案。

部署平台

最开始是打算使用超算中心的服务器,由于没有办比赛的经验,不清楚要租一个什么配置的服务器,在询问了探姬师傅以及结合超算中心的价格表,准备租个2核4g,20Mbps带宽的服务器,但是走完申请流程,拿到服务器之后,发现没有给公网ip,也没有给学校内网的ip,以及还需要签一个安全承诺书,不能扫描服务器,不能部署有漏洞的服务啥的,但是我们是办ctf比赛….

最终选择在腾讯云上租服务器,配合双十一的卷,不到四百块钱租了一个月的轻量应用服务器。8核16g,18Mbps,月流量3500G,比赛只用了一点点,大概是3-5%的性能

部署平台是使用GZCTF这一开源平台,使用docker部署

出题

原本定了六个方向的题,web,pwn,reverse,crypto,misc,osint,kery学长还弄了一道ai题

由于是校内的新生赛,所以都是出的easy难度的题

我主要弄了web,crypto方向的题,web方向,全程使用的php出的题,因此web方向出题并没有花多少时间。

crypto方向,是因为没人学,我也没学过,就简单出了两个编码和一个easy_rsa。

预热

由于学院那边突然就把推文给发出去了,那时候离宣讲会都还有两个星期,导致整个比赛莫名的启动了,于是kery学长建议弄几个预热题,让大家熟悉一下,也让我们主办方熟悉和测试一下比赛平台。

当时我负责的题是已经出完了,我就直接从我出的web题里面丢了几道在预热赛里面。

宣讲会

宣讲会,我在消极应对,最开始是不知道要演示些啥,后面弄了预热,那就讲讲预热题吧,我也没做什么准备,只是在宣讲会开始前一个多小时,在宿舍练习了一遍,讲了半个多小时,然后就直接过去了。

原本预期中,我是坐在下面,使用腾讯会议投屏,来演示的,但是由于学姐主持的时候我和她都没有反应过来,没有意识到只需要退出她电脑上的ppt,换到腾讯会议的界面就行,我就莫名奇妙的拿着电脑上去了。

让我站在前面,面对其他人讲,我很难讲好,一方面是缺乏练习,缺乏经历,另一方面是,对于这些内容,我并没有很强的表达分享的欲望,缺乏内在动力,所以我很难克服当众表达面临的本能阻力。

想象一下,几百万年以前,我还是野人的时候,走在路上,突然一束光照向我的眼睛,并且前面还有很多生物盯着我,有很多双眼睛看着我。这种情况下,我本能的就会启动战斗模式,血液流向四肢,握拳准备战斗,或者启动逃跑模式,双脚开始绷紧,准备逃跑。这时最不需要的就是思考,大脑的血液资源会流向其他地方,我的大脑就一片空白了。


赛中

比赛从周六的上午九点到周天的下午五点。

day1

第一天全程在当人工bot,播报比赛的一血二血三血情况,比赛开始前面半个小时,还在担心没人打,没人拿一血,不过比赛刚开始几分钟就有人解出题了,不得不说,这几个新生确实nb,不过也与大模型有关吧,我没有去测试,但是估计所有的题,都能使用chatgpt解决

第一天结束的时候,大部分题都被解决的差不多了。

day2

第二天一觉醒来,有个学长半夜屠榜了

以及发现有个校外✌ak了,从周六下午五点,打到周天早上七点,太肝了。


赛后

做题情况

所有的题目都被做出来了。

还有一些非预期解,例如ai那道题,找个在线的加噪点网站就能解决,或者干脆使用win自带的画图,在图像里面随便画几笔就能通过。

||550

总共43个人答了签到题。。。

作弊情况

比赛过程中发现有提交其他人flag的,我们大部分题目都是使用的动态flag,能在后台看见哪只队伍提交了哪只队伍的flag。发现有这种情况之后,我们发了个警告,但是没起到什么作用,马上这两只队伍又出现了互相提交flag的情况,不过最后这两只队伍也没有提交wp,大概只是来玩一下的。

审wp

做出签到题的有43个人,提交wp的,只有16个,算上群里的毕业老登发的wp,总共只有18个wp,所以审wp的工作很快就完成了,没啥内容,而且除了reverse和pwn方向,其他方向都很直接,并没有很长的链子。

而我们pwn方向的出题人,倒是发现了一些疑点,我们开会之后,决定抽空找他们线下答辩一下。但是后面出了意外情况,就按照意外情况的处理方式去处理了。

官方wp

原本是有计划出官方wp的,但是遇到了期末考试,我也就懒得弄了,正好老登们在群里发了官方wp,就封他们为官方wp了。

看了一下他们的wp,思路上差不了多少,毕竟都是easy题。

我出的misc方向的《网络鲨鱼》,没人尝试去连接那个mysql数据库,出题的时候没有想清楚,觉得是新生赛,就在后面又给了一个base64编码的flag,导致这道题跟另外一道流量分析的题很相似了。

|500

意外事件

虽然过了交wp的时间,但是之后的一两天内我还是有在翻看邮箱,结果在垃圾箱里面发现了一封异常的邮件,点进去一看是举报…..还好我有翻垃圾箱的习惯

这种事情只能上报了,按照指示,找了新生里面的第一名第二名谈话,两个新生态度都很好,都没有不承认,最终也是处理完了这件意外事件,取消了这两人的pwn方向成绩。

公示成绩

基本上是认真参与了就有奖,新生赛道,14个wp,12个奖。(他们这500赚的轻松🙄,我在衡阳,7天时间,每天9小时,最终还是拿了奖才能有500…….)

高年级赛道,只有四个wp,但是有十个礼品,最终弄成大礼包送出去了。

归档

在正式比赛结束之后,把比赛平台数据,题目源码,以及整个比赛用到的文档都归档了一下,放到祖传材料里面,留给下一任会长了。


l1uyun

草台班子

亲自办一场比赛,让我对草台班子这一说法有了经验性的理解。在这之前,我只是听马督工讲过这一说法,只是概念上知道。

办完这场比赛之后,才理解了组织,秩序背后的松散拼凑、粗制滥造,这有利于我进一步对各种叙事祛魅

小组作业?

办这场比赛,跟完成一个课程小组作业,我没有感到有什么区别,只是时间更长,事情更多的小组作业。我并没有感知到什么团队的氛围,只是拼凑起来,来完成这样一个与ctf相关的任务,彼此之间并没有深度的联系。我并没有感受到作为一个团队来完成一件事情的感觉。

正见,正思维

消极/积极一点来看,我应该如实观照现在的氛围,而不是产生幻想,产生’应该是什么样’的念头。 现在的氛围就是现在的氛围,没有’应该是什么样的氛围’。现在的氛围背后也是无数因缘和合导致的,是无常导致的。所有的“应该是什么样”都是来源于我对无常的不明白,都是我在尝试掌控我不能掌控的东西。

积极/消极一点来看,我可以拥有主动性,可以去促进积极的事情发生。无常是坏事,也是好事。我需要并且能够去促进积极的因缘产生,这里的"需要"是因为我还有世俗的欲望,“能够"是指只需要变得比之前好5%就行,《5%的改变》是容易的,是我可以实现的。

引用

如何办好一场校内 CTF 赛 _ 写在 2024 网络攻防课程结课后