Skip to main content

🗃️用CTFd搭建自己的CTF靶场

·80 words·1 min
Yalois
Author
Yalois
freedom

为什么要搭建
#

  • 1.发现好多平台的题库都有一些旧
  • 2.自己打比赛的时候会留下很多题目需要去复现(总是zip压缩之后就放在硬盘吃灰了)

搭建过程
#

这个博客是直接python本地跑的的并没有用Docker。

想用Docker的话就用下面的指令。

sudo docker run -d -p 8000:8000 -it ctfd/ctfd


开始正文

1.下载解压
#

cd ~
mkdir CTFd
cd CTFd
wget https://github.com/CTFd/CTFd/archive/refs/tags/3.7.2.zip
unzip unzip 3.7.2.zip 

image-20240718121509029

2.创建python虚拟环境
#

python3 -m venv myvenv
source myvenv/bin/activate

3.跟着官方安装教程来
#

image-20240718122117757

pip install -r requirements.txt 
也可以用prepare.sh来操作

image-20240718122345443

可以根据需要来配置CTFd/config.ini,里面有安全配置,数据库和Redis什么的,我是在本地跑的完全不需要。

我直接运行了,默认使用SQLite数据库。

python server.py

image-20240718130308708

因为我是跑在虚拟机里,host是127.0.0.1,虚拟机外访问不到,编辑一下server.py

image-20240718130733386

把host改为0.0.0.0,其实也可以吧debug关了。

image-20240718130852431

现在就能在虚拟机之外访问了。

访问4000开始配置,over

image-20240718124300795

4.一键运行脚本
#

因为是在python venv跑的,写一个service刚才没搞出来。。先用个sh凑活一下

写一个run.sh

#!/bin/bash
source /home/yalois/CTFd/CTFd-3.7.2/myvenv/bin/activate
nohup python /home/yalois/CTFd/CTFd-3.7.2/serve.py > /home/yalois/CTFd/CTFd-3.7.2/output.log 2>&1 &
deactivate

运行脚本run.sh

source run.sh

查看运行中的程序,并结束

ps -aux | grep serve

kill [PID]