CTFD平台部署自制题目指北(灌题)
阅读原文时间:2023年07月13日阅读:2

给实验室同学搭建的CTFD平台用于内部训练和CTF的校赛,为了循序渐进当然是先内部出一些简单入门的题目,但是网上大部分关于CTFD平台的都只是部署,而关于题目放置的内容却很少,虽然这个过程比较简单,但还是记录一下

部署自制题目一共分为以下几步(以WEB题目为例,实际上如果是逆向,杂项,密码学这些不需要占用服务器资源类型的题目,部署起来会更简单,比如在题目的链接里面直接放一个百度网盘的下载链接):

  • 出一道WEB题目

  • 将其使用Docker打包,编写Dockerfile和docker-compose.yml文件

  • 在服务器上运行该Docker

  • CTFD管理员登录,设置该题目

第一步,出一道WEB题目,关于此,师傅们可以有各种各样的思路,这里为了方便示范,举例为 目录爆破寻找 .flag.swp 交换文件,使用 VIM 恢复获取flag的题目

想好思路之后,编写代码并在本地的phpstudy环境上运行成功,目录为:01_Find_Fl4g_File,结构为:

index.php的内容为:

Find the flag file edited by VIM

第二步,将其使用Docker打包,编写Dockerfile和docker-compose.yml文件

我们使用基础镜像为:php:5.6-fpm-alpine

其Dockerfile为:

FROM php:5.6-fpm-alpine


RUN rm -rf /var/www/html/*

COPY ./files /var/www/html

EXPOSE 80

WORKDIR /var/www/html
CMD ["php", "-S", "0.0.0.0:80"]

假定读者有一定Docker基础,简单介绍一下内容

FROM 是基于某个基础镜像

RUN 运行后面的命令,即将基础镜像生成后html文件夹下的内容都删除掉,避免对题目造成影响,或者误导做题选手

COPY复制本机文件夹下的内容到容器的文件夹下

EXPOSE 选择暴露的端口,这个当然是选择80端口,WEB默认端口,在docker-compose.yml文件中我们再修改端口映射

WORKDIR 设置工作目录,这个设不设置都关系不大

CMD 每个Dockerfile中只能有一条CMD命令,一般用来启动服务,这里我们用来启动php

编写好Dockerfile后,我们编写docker-compose.yml文件,docker-compose.yml在存在多个容器的时候进行调度很方便,这里的docker-compose.yml文件比较简单;

version: "2"

services:

web:
build: .
restart: always
ports:
- "0.0.0.0:13000:80"
environment:
- FLAG=flag{Vim_1s_VeRy_g00d}

接着进行第三步:在服务器上运行该Docker

此处其实没啥注意的,将你本地测试好的题目保存到CTFD所在的服务器上,找个文件夹放置各个题目

如图:

目录为:

/home/ubuntu/CTFChallenge/web/01_Find_Fl4g_File

运行该docker

docker-compose up -d

加了 -d 参数之后服务在后台运行

进行第四步:CTFD管理员登录,设置该题目

管理员登录后,CTFd中Admin->Challenges

然后填写相关的内容:

虽然没有汉化,但是英文还是比较简单,正常使用没有问题,(不认识的多谷歌啦,其实就这几个功能

确定后到用户界面查看

点击链接后正常跳转:

来到题目界面,成功部署!

放上校内CTF训练平台,欢迎各位师傅来玩哇,后期会放很多基础,入门以及有意思的原创题目上去。

http://biuctf.cc/

快快成长

参考链接:

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器