zoukankan      html  css  js  c++  java
  • CTFD平台部署自制题目指北(灌题)

    给实验室同学搭建的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/

    快快成长

     

    参考链接:

  • 相关阅读:
    2.1求二进制数中1的个数
    SQL学习笔记八:SQL Server陷阱
    SQL学习笔记之三:系统表syscommnets
    SQL学习笔记之二:QUOTENAME函数
    SQL学习笔记五:脚本创建角色、用户以及相关操作
    输入表名生成插入、更新存储过程和调用该存储过程的字符串
    没有注意过的count(0),count(1),count(*),count(列名)
    清除开始文档批处理
    SQL学习笔记七:利用脚本附加数据库
    SQL学习笔记六:关于全备/差异/日志备份的恢复
  • 原文地址:https://www.cnblogs.com/Cl0ud/p/13783325.html
Copyright © 2011-2022 走看看