MYCTF 是一个简单易扩展的CTF程序,用于举办小型比赛,基于sqlite和文本数据库。
依赖于:tornado peewee mako
支持 python3 或 python2.7
基于 FPage 生成
-
简单方便:不需要任何服务和额外配置,开箱即用。
-
保证公平:详细的排名规则,首先按分数排名,分数相同时先做出题的人排在前面,不受字典序影响
-
分数加值:每道题默认有5分附加分,首个解题者拿5分,第二个4分,以此类推。
首先,你应该知道什么是CTF。
当你决定举办一个小比赛的时候,可以先按最底下说的办法把服务开起来。
然后登录到 127.0.0.1:9000 去注册一个账号,因为首个注册的帐号是管理员。
端口9000可以在配置文件中修改
当你大概搞明白系统是怎么回事,就可以准备题目了。
题目准备有两种办法,一种是直接编辑 ctf 目录下的题目文件,json格式。
另一种就是去后台编辑题目,我推荐这种,而且支持富文本编辑(注意并不会做过滤!管理员注意不要故意坑答题者!)。
题目的格式放在下面了,建议用之前也先看一看为妙。
进度管理:希望管理员勤按保存,因为进度不会在答题时实时保存(调试起来很方便……),save.json是保存出的文件,注意这点。
题目管理:编辑没啥可说的,当你以手动的方式在ctf目录加了一道题或者对题目进行了修改,就可以使用重新加载题目来重新读取配置。但是如果删除题目,系统中的题目不会跟着消失。这跟后台删除不同。
重置答题系统:记录清零,分数清零,所有题目重载(当然用户是保留的)。
首页
答题完成后,题目会被标记为绿色。ccc是先完成题的用户,所以排在a11的上面,而不是按照字典序排列。
有人完成前置题后,新的题目开放
查看题目
后台主界面
后台题目管理
{
"id": 3,
"title": "问题 3",
"score": 50,
"key": "123",
"depend": [],
"depend-g": [],
"txt": "test",
"extra": 0
}
tips: 这个json是魔改的,在加载之前会首先替换掉换行符,所以可以在txt写题目的时候回车。
参数解释:
-
id、title:id和标题,地球人都懂,id不重复就行了。
-
score:做出这个题目可以得到的分数。
-
key:解题的flag。
-
depend:用户做了这些题,这道题才会开放(例如[1,2])。
-
depend-g:整个系统中有人做出这些题,这道题才会开放。
-
txt:题目内容,支持html标签。
-
extra:附加分值,若不写则为默认的5分
pip install tornado peewee mako
python app.py
MIT
-
自动保存
-
后台可以扣分