从零开始搭建 CTF 靶场

本贴最后更新于 1866 天前,其中的信息可能已经时异事殊

最近在内网搭建了一个 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 改成自己的服务器地址)出现类似下面这个界面:
image.png

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,
填写好题目名字、内容和分值等。
image.png

5.配置 flag
进入到刚刚创建的挑战中,在左侧填上刚刚配置好的 flags
image.png

步骤五:汉化 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.最后的效果图如下:
image.png

  • 安全

    安全永远都不是一个小问题。

    199 引用 • 816 回帖 • 1 关注
  • CTF
    9 引用 • 13 回帖 • 2 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    149 引用 • 257 回帖
  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    209 引用 • 358 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • Likeshe

    为什么我到了启动的那一步就报错啊?

  • 其他回帖
  • dududada

    或者是查看管理员密码

  • someone
    作者

    你好,截图发一下详细的报错信息我看下

  • dududada

    问一下怎么重置 CTFd 平台管理员密码?不小心把管理员密码忘了 😂