0%

CTFd运维指南

如何运维CTFd

简单的总结并分享一下CTFd 3.4.0版本的运维。

image-20211005134919356

进入管理员页面,大概是这样一个总览图。接下来我会介绍一下每个模块的功能。

Statistics

一个统计页面,过。

Notifications

通知页面,没玩过,无非就是发些通知、公告类,影响不大,过。

Pages

页面功能,就是给网站加页面,自定义路由和路由名字。

image-20211005135405456

没什么花里胡哨的,都是字面意思。Authentication Required选项是需要登录后才可查看的意思。

Users

image-20211005135756947

都看得懂的吧,编辑权限、状态、修改信息等功能。注意,管理员账号权限非常高,可以任意修改他人(包括其他管理员的权限),也可以自己把自己号删了,使用时建议管理员越少越好。

还可以看到每个人的正确、错误提交,未解题、登录IP地址(较准确)、个人统计等数据。

Scoreboard

积分榜,没什么好多说的。

Challenges

挑战模块,最常用的模块,只讲解dynamic_docker部分。ICPC的ACM插件自行探索吧。

首先是categories分类,也就是体现在主页上的内容。pages主题会自动识别这个框里的.符号,实现二级标题。

然后是docker image,写你上传在docker上的镜像,就是docker pull后面的内容。

Frp Redirect Type,有域名会配置解析写HTTP,不会老老实实用direct。

Frp Redirect Port,你dockerfile里暴露的哪个端口,就写映射哪个端口。

下面两个不要动。静态分数和动态分数。

动态分数的曲线公式写出来估计你们也看不懂,所以我写了个实现函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def Cal(max_point,min_point,solve_threshold,x):
a = max_point
b = min_point
s = solve_threshold
if x>=s:
return b
else:
results = ((b-a)*x*x)/(s*s)+a
return results

for i in range(0,10):
print(Cal(100,20,5,i))

'''
100.0
96.8
87.2
71.2
48.8
20.0
20
20
20
20
'''

需要4个参数,最高分、最低分、一个固定常数s、解题人数x

程序很简单,都能看懂,不解释。

Submissions

记录了所有人所有题目的正确提交和错误提交。

config

这个是个人能用翻译的都看得懂了,基础设置。

security是邀请码,写了以后,注册要填邀请码。

backup备份,建议定期备份站的数据。也可以导入数据,做平台迁移。注意导入后要坚持whale和一些其他设置的信息。每个平台都有自己的架构。

whale

ctfd的动态靶机插件,Direct IP Address不懂的写自己真实ip,这个没法教,自己搭一遍平台就懂了。否则说也说不清楚。

其他

开发、导入插件等自定义功能请自行探索。

参考链接

CTF3.0版本CTFd-whale

pages主题

赵总官方教程

搭建可以参考我的博客(旧版2.3.2),以及vaalacat和frankli0324的教程(新版)

寄语

当我写下这篇文档时,恐怕我不会再对这个我早8晚1肝了2个月的平台做进一步维护了。希望它能成为结合课堂教学、日常练习、训练赛等各项功能于一体的综合性训练平台。同时,我的个人dockerhub仓库很有可能不再更新,也不再会代表Rainbow7战队参加比赛。不过,这并不意味着我的网安之路的结束,我认为这更像是一场全新的开始。我依然有可能参与一些线上比赛,也有可能和其他志同道合的朋友一起去玩玩更多的东西。只是对我来说,CTF将不再是我的全部。

留下一点期待。

希望后辈有人能设计出n机frp转发模式,这样可以大幅降低平台压力。1核2G配置极限应该只够20人同时使用。虽然根据概率论的原理来计算,35个活跃用户同时开启10台及以上的靶机的概率≈0.0004,但是,这样的训练平台肯定无法满足比赛需求。

以及开发v1/api插件,只使用go-cqhttp即可做出ctfshow和大牛的播报效果。

根据onebot机器人协议,可以开发出更多带有意思的功能的qqbot,推荐使用nonebot2 。

还有内网穿透,公网访问内网服务器地址,尤其适用于博客。

-------------本文结束感谢您的阅读-------------