Flame:CTF协作平台

大致在暑假开始,我觉得还是需要一个平台方便大家CTF竞赛的协作,我们需要一个能够类似Google Docs的东西,能够让大家协作编辑同一份文档,但是更具有针对性、功能更强大

我们需要一个能够真正记录每场比赛情况的一个平台,需要向上添加各种实用的小功能,比如能够很方便的传图,比如能够一键生成write up,甚至能够带入线下赛作为一个队员之间在局域网环境临时丢文件的地方,且不会被其他选手看到

经过一学期断断续续的组织,最终做出了这个平台,我将其称为Flame,希望能够让大家的思绪也像火焰一样

下面是一些功能特性的展示:

0x00 安全私密

既然项目初衷是创建一个共享思路的平台,自然需要构建一个全封闭的环境,所有操作均需要登录后才能完成,且注册需要受到严格控制,每个邀请码都会被记录,且使用后自动从数据库移除

flame_login

超级管理员用户具有管理其他用户的权限,能够随时移除不必要的成员

该项目使用Flask+Layui实现,努力做了前后端分离。作为Python Web APP,它天然具有抵抗某些传统攻击手段的特性,未注册的路由均不可访问,SQLAlchemy机制更是为数据库安全增添了保障,页面输出会HTML自动转义,尽可能做到安全开发

0x01 协同编辑

协同编辑是Flame的核心功能与初衷,我们允许不同成员在同一个赛题的WP编写页面上能够协同操作,且互相能够看到他人的输入状态和选择状态。这就避免了队员思路不能及时共享或者在一道题解答完成之后还有同学会好奇上一道题解法的情况

为了方便,我们为编辑框适配了几个功能:首先是对Markdown的解析,能够方便的进行文档书写;其次是图片插入,这里我们实现了图片右键粘贴上传和文件拖拽上传,能够自动上传至服务器且按照正确的Markdown语法写好

下面是一些演示:

A. 图片与文件插入

flame_pics

B. 协同编辑

flame_co_work

C. 首页展示

flame_index

0x03 成员管理

超级管理员用户可修改其他用户密码、删除其他用户或者将其他用户设为管理员以协助管理

flame_user_admin

0x04 题解生成

生成模板功能可自动汇总该场比赛各个题目的题解,以提供下载和输出

这里我们提供了Markdown和Docx两种格式的输出,其中Markdown格式除了题解外还会自动打包好所引用的图片,方便线下保存

flame_wp_admin

0x05 轻便易携

为了能够随时带入线下,在局域网环境也正常使用,我们选择将前端所有的js文件都存在本地,且数据库选择了轻便的SQLite,数据备份与恢复只需拷贝.sqlite文件即可

整个项目源码只有4.28M,安装依赖库只需在Virtual Environment中一键按照requirements.txt文件安装即可

目前项目处于Alpha 1.0版本内部测试阶段,感谢参与进这个项目的同学的付出 :)