summary refs log tree commit diff
path: root/_posts/2020-11-24-createctf.md
diff options
context:
space:
mode:
authormayx2022-01-04 20:42:55 +0800
committermayx2022-01-04 20:42:55 +0800
commitf4aa957c53cda659d026ffd23856f65a72fee739 (patch)
treeafc51b78e1ff241c955ca30910e895e02e0a1d22 /_posts/2020-11-24-createctf.md
Restore deleted repositories
Diffstat (limited to '_posts/2020-11-24-createctf.md')
-rw-r--r--_posts/2020-11-24-createctf.md23
1 files changed, 23 insertions, 0 deletions
diff --git a/_posts/2020-11-24-createctf.md b/_posts/2020-11-24-createctf.md
new file mode 100644
index 0000000..dfe3f8a
--- /dev/null
+++ b/_posts/2020-11-24-createctf.md
@@ -0,0 +1,23 @@
+---
+layout: post
+title: 记一次组织CTF的经历
+tags: [CTF, 记录]
+---
+
+  不会打我也能搞CTF(:-P)<!--more-->    
+
+# 起因
+  在一年前,我[体验了一次CTF](/2019/12/16/ctf.html),感觉挺有意思的,而且为此我甚至计划做一个以此为基础的[游戏](/2019/12/17/game.html)。可惜人不行了,除了会咕咕咕其他什么都不行。   
+  想不到就在最近,我不用参加CTF,而是直接去给其他人玩CTF的机会。最近我所在的协会要承包一次CTF的比赛,我作为协会部门的部长,自然也要参与其中。我最擅长的就是运维,所以在这次比赛,我就成为负责维护这次CTF平台的运维了。   
+
+# 感受
+  成为了维护CTF系统的人之后我对CTF的了解更深了,CTF系统的本质就是一个计分板加一台靶机,然后题就那么几种,像Web、PWN这种题需要靶机,其他的Crypto、Reverse、Misc啥的就只需要把题目放到一个文件服务器里就行了。另外计分板也非常的简单,就只需要一个判断结果是不是等于设定好的flag就完事了,然后根据答题情况给分就行了。   
+  一般正式的赛事中好像flag都是动态的,每一个队伍的flag都不一样,然后每个队伍打的靶机也全部都是用docker隔离开的,像我们举行的这个CTF并不算专业,只能算是比较业余的。
+
+# 经历
+  在这次CTF中,我本来是不想管平台的事情,如果我来搭建这个平台我可能会选择[CTFd](https://github.com/CTFd/CTFd)作为本次CTF的平台。不过这个CTF在我来之前举办过几次,他们使用的是由Facebook开发的[FBCTF](https://github.com/facebookarchive/fbctf)作为整个比赛的平台。我作为运维,肯定也不会去管程序上的事情,就干脆让他们去搞相关的事情了。   
+  不过现实证明这是一个错误的决定,这个平台已经不维护了,虽然看起来确实挺好看,但是BUG也多,在这次比赛中给我们维护组带来了不少的压力。就比如说这个平台里的[这一句话](https://github.com/facebookarchive/fbctf/blob/4ec9b6be404fce1bed6d1066fccf10c4255767bb/database/countries.sql#L161),给我们带来了很多麻烦。就这样的短短一句话,搞的正在运行的平台直接被迫停止运行。为什么呢?很简单,因为我所在的学校是中国啊,不允许这样的事情发生……   
+  另外这个FBCTF也很迷,看代码不过就是普通的PHP而已,但是部署的时候用的软件和方式都和平时不一样。正常来说这种东西一个LEMP或者LAMP就能解决问题,而它非得要一个什么hhvm的环境,不过环境不是我搭的,它用啥我倒是不在乎。然而它的i18n有问题,在[这一行](https://github.com/facebookarchive/fbctf/blob/4ec9b6be404fce1bed6d1066fccf10c4255767bb/src/controllers/IndexController.php#L598)没有加`tr`的那个函数,然后注册的时候显示就会出问题。有问题倒是没关系,大不了改了就行了,可是这个破玩意改了之后居然没反应?我搞了半天都没有搞好,后来发现因为它用了hhvm,这个东西会把php代码编译,然后直接修改代码就啥反应都没有,必须用`hhvm-repo-mode`才能更新代码😓……   
+  其他的就是数据库,那个部署的人当时居然没改字符集,用的还是拉丁文的字符集,然后存储中文的时候就会各种乱码,怎么搞都搞不回来,不过程序里面好像没有受影响,所以也就算了。   
+  还有就是领导的新需求,这也算是提前体验公司生活了,领导说要加一个功能,我肯定不会想着去接这个大坑,最后这个任务被派给了我们的PHP老师,不过老师确实专业,花了4个小时最终真的就搞成了,水平确实了的。   
+  目前这次的比赛还没有结束,不知道还会出什么新的莫名其妙的事情,敬请期待吧~