最近在内网搭建了一个 CTF 靶场,用的是 CTFd 这个框架,网上资料也挺全,整个搭建过程还是比较顺利,所以记录一下搭建过程。
前期准备
- docker 下载
- docker-compose 下载
- git 的下载
- CTFd 下载
- CTFTraining 题库下载
- CTFd 汉化包下载
步骤一:docker、docker-compose 安装
docker 和 docker-compose 的安装,我曾在《docker-compose 部署 Solo 博客的详细介绍》这篇文章里介绍过,在这就不多赘述,大家可以通过访问该文,来看具体操作过程。
步骤二:git 安装和配置
git 的好处就是为了方便的下载后续的几个资源包,安装配置步骤如下。
1.安装 git
yum install git
2.安装依赖库
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc-c++ perl-ExtUtils-MakeMaker
3.配置 git
git config --global user.name "yourname"
git config --global user.email "email@example.com"
步骤三:CTFd 下载和部署
CTFd 是一款基于 flask 的 CTF 靶场框架,主要包含了用户界面部分和管理员界面部分。项目地址:https://github.com/CTFd/CTFd
1.下载 CTFd
git clone https://github.com/CTFd/CTFd.git
2.下载完成后进入目录,使用 docker-compose 启动项目
cd CTFd
docker-compose up -d
3.等待他安装完依赖启动之后,访问 http://127.0.0.1:8000 (ip 改成自己的服务器地址)出现类似下面这个界面:
4.进入系统后需要注册一个账号,并完成一些基本的配置,方能进行后续操作。
步骤四:在 CTFd 上发布题目
github 上有许多 CTF 题库的开源仓库,但有些整理的未必好,为了遵守容易部署的原则,我选择了 CTFTraining:https://github.com/CTFTraining/CTFTraining 其题库较为详细,并且目录结构清晰,关键是都是通过 docker 编排,完全契合我的环境。
1.下载 CTFTraining 中的题库,这里要注意 CTFTraining 整个项目较大,题目建议一个个下,有选择性的拉取,下面以拉取第一个题目为例
mkdir CTFTraining
cd CTFTraining
git clone https://github.com/CTFTraining/0ctf_2016_unserialize.git
2.修改 docker-compose.yml 文件,其配置文件的结构其他题目也基本是下面这个结构:
# 0ctf 2016 piapiapia
version: "2"
services:
web:
build: .
image: ctftraining/0ctf_2016_unserialize
environment:
- FLAG=flag{test_flag}
restart: always
ports:
- "127.0.0.1:8302:80"
此处需要修改两个地方:一个是 flag 的值,写一个自己喜欢的字符串即可,另一个地方是下面的地址和端口号,地址改为 0.0.0.0 端口号选一个未被占用的即可。
3.启动该题目
cd 0ctf_2016_unserialize
docker-compose up -d
4.访问和配置 CTFd 的 Challenge
访问 (此处改成自己的 ip 和端口号),成功能显示页面即可。
进入刚刚搭建好的 CTFd 中 Admin->Challenges,添加一个新的挑战,类型选 standard,
填写好题目名字、内容和分值等。
5.配置 flag
进入到刚刚创建的挑战中,在左侧填上刚刚配置好的 flags
步骤五:汉化 CTFd
汉化包地址:https://github.com/Gu-f/CTFd_chinese_CN
1.下载汉化包
git clone https://github.com/Gu-f/CTFd_chinese_CN.git
2.替换或者增加 theme
方法一:将 core_chinese 文件直接放入 CTFd\CTFd\themes 目录即可在更换主题处找到该中文主题
方法二:themes 文件直接替换 CTFd\CTFd 目录下的 themes 即可完成汉化
3.最后的效果图如下:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于