记一次CTF校赛GZ::CTF的搭建,web动态容器,以及包含碰到的题目等等 ...

打印 上一主题 下一主题

主题 995|帖子 995|积分 2985

参考文章:GZCTF在ubuntu系统中的安装之单docker-CSDN博客
一.安装docker和docker-compose

  1. apt-get update
  2. apt install docker.io docker-compose
复制代码
我看到其他文章中有安装其他组件的,比如说docker.ic等等,但我的Ubuntu似乎安不起,但也不影响,docker.io和docker-compose这两个已经满足根本需要了。
检察docker是否安装乐成
  1. docker-compose --version
复制代码

若有以上信息显示分析已经安装乐成。
二、GZ::CTF竞赛平台的安装

安装完docker以及docker-compose之后我们就可以开始安装GZ了。
这里GZ提供两个配置文件,配置完成后直接拉取(还挺方便的…………
1、首先创一个目录
  1. mkdir GZCTF  #路径及目录名自己选择,自己熟悉就好
复制代码

2、创建appsettings.json文件
  1. {
  2.   "AllowedHosts": "*",
  3.   "ConnectionStrings": {
  4.     "Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=<Your POSTGRES_PASSWORD>"       //必须项
  5.   },
  6.   "EmailConfig": {
  7.     "SendMailAddress": "a@a.com",
  8.     "UserName": "",
  9.     "Password": "",
  10.     "Smtp": {
  11.       "Host": "localhost",
  12.       "Port": 587
  13.     }
  14.   },
  15.   "XorKey": "<Your XOR_KEY>",    //必须项
  16.   "ContainerProvider": {
  17.     "Type": "Docker", // or "Kubernetes"
  18.     "PortMappingType": "Default", // or "PlatformProxy"
  19.     "EnableTrafficCapture": false,
  20.     "PublicEntry": "<Your PUBLIC_ENTRY>", // or "xxx.xxx.xxx.xxx" !必须项
  21.     // optional
  22.     "DockerConfig": {
  23.       "SwarmMode": false,
  24.       "Uri": "unix:///var/run/docker.sock"
  25.     }
  26.   },
  27.   "RequestLogging": false,
  28.   "DisableRateLimit": true,
  29.   "RegistryConfig": {
  30.     "UserName": "",
  31.     "Password": "",
  32.     "ServerAddress": ""
  33.   },
  34.   "CaptchaConfig": {
  35.     "Provider": "None", // or "CloudflareTurnstile" or "GoogleRecaptcha"
  36.     "SiteKey": "<Your SITE_KEY>",
  37.     "SecretKey": "<Your SECRET_KEY>",
  38.     // optional
  39.     "GoogleRecaptcha": {
  40.       "VerifyAPIAddress": "https://www.recaptcha.net/recaptcha/api/siteverify",
  41.       "RecaptchaThreshold": "0.5"
  42.     }
  43.   },
  44.   "ForwardedOptions": {
  45.     "ForwardedHeaders": 5,
  46.     "ForwardLimit": 1,
  47.     "TrustedNetworks": ["192.168.12.0/8"]        //必须项
  48.   }
  49. }
复制代码
这里有几个必须要设置的参数值:
<Your POSTGRES_PASSWORD>:你设置的暗码,背面要跟数据库暗码一致
<Your XOR_KEY>:你比赛的私钥。参数值为恣意字符串。
<Your PUBLIC_ENTRY>:用于创建容器,外部访问地址,可以是 IP 或域名,也就是自己的域名或者ip
TrustedNetworks:可以默认0.0.0.0/0
3、创建docker-compose.yml文件
  1. version: "3.0"
  2. services:
  3.   gzctf:
  4.     image: gztime/gzctf:latest
  5.     restart: always
  6.     environment:
  7.       - "LANG=zh_CN.UTF-8" # choose your backend language `en_US` / `zh_CN` / `ja_JP`
  8.       - "GZCTF_ADMIN_PASSWORD=<Your GZCTF_ADMIN_PASSWORD>"
  9.     ports:
  10.       - "80:8080"
  11.     volumes:
  12.       - "./data/files:/app/files"
  13.       - "./appsettings.json:/app/appsettings.json:ro"
  14.       # - "./kube-config.yaml:/app/kube-config.yaml:ro" # this is required for k8s deployment
  15.       - "/var/run/docker.sock:/var/run/docker.sock" # this is required for docker deployment
  16.     depends_on:
  17.       - db
  18.   cache:
  19.     image: redis:alpine
  20.     restart: always
  21.   db:
  22.     image: postgres:alpine
  23.     restart: always
  24.     environment:
  25.       - "POSTGRES_PASSWORD=<Your POSTGRES_PASSWORD>"
  26.     volumes:
  27.       - "./data/db:/var/lib/postgresql/data"
复制代码
重要设置两个参数值
GZCTF_ADMIN_PASSWORD:初始管理员暗码。
POSTGRES_PASSWORD: 数据库暗码。与上一个文件一致。
4、构建GZ::CTF
  1. docker-compose up -d
复制代码
这里题目就来了,这个题目当时困扰我很久,以及背面web动态容器的搭建也是卡在这步,拉不了镜像,这个题目其实就是镜像网址默认为国外,下载容易超时,而且国内的某些镜像网址也非常容易超时,我找了很多也是超时,甚至一度猜疑是我电脑的题目,这里向各位师傅保举一个镜像网址就是华为云的镜像地址,每个用户都是唯一的,特别好用,登录华为云,容器镜像服务 SWR->镜像中心->镜像加快器
更改镜像地址
  1. vi /etc/docker/daemon.json
复制代码
添加你在华为云获取的镜像地址,这里不保举其他地址,我都试过了,都是超时!!
接着重启一下docker服务
  1. systemctl daemon-reload
  2. systemctl restart docker.service
复制代码
拉取乐成


打开欣赏器访问80端口。到这已经完成GZ::CTF的搭建了,尽情游玩吧(bushi
三、web容器、动态flag的实现

安装docker desktop
对于非 Gnome 桌面情况,必须安装:gnome-terminal
  1. apt install gnome-terminal
复制代码
下载desktop.docker.deb,这里使用dpkg下令安装deb压缩包,apt用不了!!
  1. dpkg -i ./docker-desktop-4.24.0-amd64.deb
复制代码
启动服务
  1. systemctl --user start docker-desktop
  2. systemctl --user enable docker-desktop
复制代码
构建容器镜像
创建如下结构

flag.sh
  1. #!/bin/sh
  2. sed -i "s/flag{testflag}/$GZCTF_FLAG/" /var/www/html/index.php
  3. export GZCTF_FLAG=""
复制代码
该文件重要实现动态flag,这里重要需要更改的是你flag文件的路径 
Dockerfile
  1. FROM ctftraining/base_image_nginx_mysql_php_56
  2. COPY src /var/www/html
  3. RUN mv /var/www/html/flag.sh / \
  4.         && chmod +x /flag.sh
复制代码
该文件重要实现根本镜像拉取,把你整个镜像跑起来,若要加下令请在下行加run <bash下令> 
index.php
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <title>F12 no! no! no!</title>
  5. </head>
  6. <p style="font-family:arial;color:black;font-size:20px;text-align:center;">Flag不在这里哦</p>
  7. <!-- flag{testflag} -->
  8. <body>
  9.     <script>
  10.     document.oncontextmenu=function() {
  11.     alert("右键被禁用");
  12.     return false;
  13.     };
  14.     document.onkeydown = function(e) {
  15.         e = window.event || e;
  16.         var k = e.keyCode;
  17.         //屏蔽ctrl+u,F12键
  18.         if ((e.ctrlKey == true && k == 85) || k == 123) {
  19.         if (k == 85)
  20.             alert("Ctrl+U被禁用!");
  21.         else
  22.             alert("F12被禁用!");
  23.         e.keyCode = 0;
  24.         e.returnValue = false;
  25.         e.cancelBubble = true;
  26.         return false;
  27.         }
  28.     }
  29.     </script>
  30. </body>
  31. </html>
复制代码
你自己的web题目。注意!flag应替换成flag.sh里的flag{testflag},不然无法实现动态flag 
<name>为你镜像的名称,而且在Web-F12目录中执行
  1. docker build <name> .
复制代码
在这碰到了某些题目
 这是因为系统情况变量的题目,输入以下下令:
  1. echo 'export PATH="/usr/bin:/usr/local/bin:$PATH"' >> ~/.bashrc
  2. source ~/.bashrc
复制代码
镜像搭建乐成

检察容器是否存在
  1. docker images
复制代码
 

在GZ中测试,这里是你自己构造的镜像名

乐成运行

四、总结

       这是我在校赛里办的一场新生赛,也算是一种经验吧,过程中碰到很多困难,比如镜像地址,以及docker pull不上等诸多题目。网上也搜了很多资料,也问了许多师傅,没有一个能做到底的。所以我把各位大佬的文章总集一下合成一篇新的文章,盼望各位师傅能一把搭建。若文章中有题目,也盼望各位师傅能拨乱反正(bushi
 



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

卖不甜枣

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表