GZCTF平台搭建及题目上传

前言

我用手里的Ubuntu虚拟机搭建的,大家根据自己的实际情况来吧


安装及部署

首先,你的虚拟机需要有DockerDocker-Compose,前者可以看我之前的文章,另外一个可以输入下面的命令安装,注意先获取管理员权限,开个代理防止连接不上

apt install docker.io docker-compose

使用下列命令检查是否安装成功

docker-compose -v

然后我们创建个GZCTF文件夹用来存放文件

使用touch命令分别创建appsettings.jsondocker-compose.yml文件

内容大家可以把我下面这段复制粘贴(把PublicEntry那段的ip改成自己的虚拟机ip)

appsettings.json

{"AllowedHosts": "*","ConnectionStrings": {"Database": "Host=db:5432;Database=gzctf;Username=postgres;Password=Admin123."},"EmailConfig": {"SendMailAddress": "a@a.com","UserName": "","Password": "","Smtp": {"Host": "localhost","Port": 587}},"XorKey": "Admin123.","ContainerProvider": {"Type": "Docker", // or "Kubernetes""PortMappingType": "Default", // or "PlatformProxy""EnableTrafficCapture": false,"PublicEntry": "192.168.221.128", // or "xxx.xxx.xxx.xxx"// optional"DockerConfig": {"SwarmMode": false,"Uri": "unix:///var/run/docker.sock"}},"RequestLogging": false,"DisableRateLimit": true,"RegistryConfig": {"UserName": "","Password": "","ServerAddress": ""},"CaptchaConfig": {"Provider": "None", // or "CloudflareTurnstile" or "GoogleRecaptcha""SiteKey": "<Your SITE_KEY>","SecretKey": "admin",// optional"GoogleRecaptcha": {"VerifyAPIAddress": "https://www.recaptcha.net/recaptcha/api/siteverify","RecaptchaThreshold": "0.5"}},"ForwardedOptions": {"ForwardedHeaders": 5,"ForwardLimit": 1,"TrustedNetworks": ["192.168.12.0/8"]}
}

 docker-compose.yml

version: "3.0"
services:gzctf:image: registry.cn-shanghai.aliyuncs.com/gztime/gzctf:developrestart: alwaysenvironment:- "GZCTF_ADMIN_PASSWORD=Admin123."# choose your backend language `en_US` / `zh_CN` / `ja_JP`- "LC_ALL=zh_CN.UTF-8"ports:- "80:8080"volumes:- "./data/files:/app/files"- "./appsettings.json:/app/appsettings.json:ro"# - "./kube-config.yaml:/app/kube-config.yaml:ro" # this is required for k8s deployment- "/var/run/docker.sock:/var/run/docker.sock" # this is required for docker deploymentdepends_on:- dbdb:image: postgres:alpinerestart: alwaysenvironment:- "POSTGRES_PASSWORD=Admin123."volumes:- "./data/db:/var/lib/postgresql/data"

接下来我们在这个文件夹里面打开控制台,输入下面的命令运行,他会自动下载所需的资源然后运行

docker-compose up -d

等待加载完毕

我们直接访问虚拟机ip即可

接下来我们点击左下角登录,用户名是Admin,密码是Admin123.(之前那两个文件里面写的密码)

登陆成功后,我们可以点击左侧小扳手,然后创建比赛了

之后大家根据自己的需要进行设置吧


镜像的构建

我们通过docker进行构建自己的题目,需要注意的是,比如我用python的flask框架编写的文件,如果我们需要用到动态的Flag,可以引入os模块,之后运行这个镜像的时候,GZCTF平台会自动创建GZCTF_Flag这个环境变量,我们可以用下面的命令获取动态的flag

flag = os.environ.get("GZCTF_FLAG")

之后,大家根据自己的题目来就好,接下来我们讲关于构建和上传

如果需要上传到官方的DockerHub上,我们先去创建一个账号

官方链接:DockerHub

然后,我们创建一个库(一个镜像创建一个库吧)

比如我创建了一个账号,名字叫1234,创建了一个仓库叫4567

首先要登陆到自己的账户

docker login

大家在构建镜像的时候,用下面的命令构建(名字/仓库)

docker build -t 1234/5678 -f Dockerfile .

之后,直接上传到仓库

docker push 1234/5678

然后大家就能在自己的仓库里面看见了


镜像的获取

创建个动态容器,然后编辑flag

大家看说明就明白了flag怎么设置,保存然后回来,我们填写容器的链接

比如我们上传的是DockerHub上的,需要填写(名字/仓库),如果打标签了还需要加个(:标签)

注意端口号,按照你的镜像设置来

设置之后,我们就可以正常去使用了


总结

如果安装有问题的话,就重装一下吧,这里给大家写上几条常用的代码

docker rmi $(docker images -q) #删除所有镜像
docker stop $(docker ps -q) #停止所有镜像
docker rm $(docker ps -a -q) #删除所有镜像(不管是否停止)docker-compose up -d #运行
docker-compose down #停止docker logs gzctf_gzctf_1 #查看日志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pycharm社区版创建Flask项目详解

一、创建工程项目 二、配置工程目录 新建的空项目下创建目录。 1、新建app.py文件 2、app.py代码如下&#xff1a; from flask import Flask, render_templateapp Flask(__name__)app.route("/") def root():"""主页:return: Index.html"&qu…

CentOS 7 64位安装Docker

以下是在已有的 CentOS 7 64 位虚拟机上安装 Docker 并配置华为镜像源的详细步骤&#xff1a; 1. 备份原有 Yum 源&#xff08;可选&#xff0c;建议操作&#xff09; # 备份原有仓库文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backu…

运动仿真——phased.Platform

在雷达仿真过程中&#xff0c;运动仿真的必要性&#xff0c;以及运动仿真可以实现哪些功能&#xff0c;在matlab对应的user guide中已经讲的很清楚了&#xff0c;这里不再赘述。 本文主要介绍phased.Platform的一些“坑”&#xff0c;和典型的用法。 第一坑&#xff1a;系统对…

缓存删除三级补偿方案:延迟队列+消息队列+定时任务兜底

问题背景: 在 Cache-Aside 模式中&#xff0c;更新数据库后删除缓存失败会导致数据不一致。本文提供工业级三级补偿方案&#xff0c;实现最终一致性保障。 整体架构: 更新操作触发 → 一级延迟队列 → 二级消息队列 → 三级定时任务方案实现: 一、第一级补偿&#xff1a;延迟队…

从零开始实现 C++ TinyWebServer 数据库连接池 SqlConnectPool详解

文章目录 数据库连接池是什么&#xff1f;Web Server 中为什么需要数据库连接池&#xff1f;SqlConnectPool 成员变量实现 Init() 函数实现 ClosePool() 函数SqlConnectRAII 类SqlConnectPool 代码SqlConnectPool 测试 从零开始实现 C TinyWebServer 项目总览 项目源码 数据库连…

C++题目

1、内存管理 1.内存模型 栈:在执行函数时&#xff0c;函数内局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放。 堆&#xff1a;就是那些由new分配的内存块&#xff0c;其释放由程序员控制&#xff08;一个new对应一个delete&#xff09…

天地图InfoWindow插入React自定义组件

截至2025年03月21日天地图的Marker不支持添加Label; 同时Label和Icon是不支持自定义HTMLElement只支持String&#xff1b;目前只有InfoWindow支持自定义HTMLElement; 效果图 React核心api import ReactDOM from react-dom/client const content document.createElement(div);…

Java并发编程面试汇总

Java并发编程 一、 基础概念1. 进程与线程的区别是什么&#xff1f;2. 创建线程的几种方式&#xff1f;3. 线程的生命周期&#xff08;状态&#xff09;有哪些&#xff1f;4. 什么是守护线程&#xff08;Daemon Thread&#xff09;&#xff1f;5. 线程优先级&#xff08;Priori…

【STM32】第一个工程的创建

目录 1、获取 KEIL5 安装包2、开始安装 KEIL52.1、 激活2.2、安装DFP库 3、工程创建4、搭建框架5、开始编写代码 1、获取 KEIL5 安装包 要想获得 KEIL5 的安装包&#xff0c;在百度里面搜索“KEIL5 下载”即可找到很多网友提供的下载文件&#xff0c;或者到 KEIL 的官网下载&a…

动态规划~01背包问题

01背包问题 经典的0 - 1背包问题的解决方案。 二维数组的版本 代码功能概述 0 - 1背包问题指的是有 n 个物品和一个容量为 m 的背包&#xff0c;每个物品有对应的体积 v[i] 和价值 w[i]&#xff0c;需要从这些物品里挑选若干个放入背包&#xff0c;让背包内物品的总价值达到最…

深入理解Java享元模式及其线程安全实践

引言 在软件系统中&#xff0c;当需要处理海量细粒度对象时&#xff0c;直接创建大量实例可能会导致内存消耗激增和性能下降。享元模式&#xff08;Flyweight Pattern&#xff09;通过共享对象内部状态&#xff0c;成为解决这类问题的经典方案。然而在多线程环境下&#xff0c…

1、mysql基础篇--概述

关系型数据库&#xff08;RDBMS&#xff09; 概念特点&#xff1a;数据模型&#xff1a; 概念 建立在关系模型基础上&#xff0c;有多张表相互连接的二维表组成的数据库 特点&#xff1a; 1、使用表存储&#xff0c;格式统一&#xff0c;便于维护 2、使用sql语言操作&#…

如何提升库存系统的高并发和稳定性:算法与设计模式

库存系统是企业运营的核心模块&#xff0c;尤其是在电商、零售和供应链管理中&#xff0c;系统的高并发和稳定性直接影响订单处理的准确性和效率。面对海量订单、复杂的库存管理需求&#xff0c;如何在高并发环境下确保库存数据的准确性和系统的稳定性&#xff1f;本文将从架构…

【多线程】synchronized底层实现的方式

前言 在java 开发中对于锁的应用非常的常见&#xff0c;如果对于什么时候该用什么锁&#xff0c;以及锁实现的原理有所不知道的&#xff0c;或者面试过程中面试官问你不知道怎么回答的&#xff0c;欢迎来看下面的文章 1、synchronized和ReentrantLock的区别 2、synchronized的…

Pytorch中Tensorboard的学习

1、Tensorboard介绍 TensorBoard 是 TensorFlow 开发的一个可视化工具&#xff0c;用于帮助用户理解和调试机器学习模型的训练过程。尽管它最初是为 TensorFlow 设计的&#xff0c;但通过 PyTorch 的 torch.utils.tensorboard 模块&#xff0c;PyTorch 用户也可以方便地使用 Te…

ETL 自动化:提升数据处理效率与准确性的核心驱动力

在数字化转型的浪潮中&#xff0c;数据已成为企业战略资产&#xff0c;高效处理数据的能力直接关系到企业的竞争力。ETL&#xff08;Extract, Transform, Load&#xff09;自动化作为数据处理领域的关键技术&#xff0c;正逐渐成为企业在数据时代脱颖而出、实现高效运营与精准决…

std::endl为什么C++ 智能提示是函数?

在使用vscode 的C智能提示后&#xff0c;输入endl 后&#xff0c;提示的却是std::endl(basic_ostream<CharT, Traits> &os), 感觉比较奇怪&#xff0c;各种代码里都是直接用的std::endl 啊&#xff0c; 这里怎么变成函数了呢&#xff1f; 在 C 中&#xff0c;std::en…

简洁、实用、无插件和更安全为特点的WordPress主题

简站WordPress主题是一款以简洁、实用、无插件和更安全为特点的WordPress主题&#xff0c;自2013年创立以来&#xff0c;凭借其设计理念和功能优势&#xff0c;深受用户喜爱。以下是对简站WordPress主题的详细介绍&#xff1a; 1. 设计理念 简站WordPress主题的核心理念是“崇…

数据结构篇:空间复杂度和时间复杂度

目录 1.前言&#xff1a; 1.1 学习感悟 1.2 数据结构的学习之路(初阶) 2.什么是数据结构和算法 2.1 数据结构和算法的关系 2.2 算法的重要性 2.3 如何衡量算法的好坏 3.时间复杂度 3.1 时间复杂度的概念 3.2 大O的渐进表示法 O() 4.空间复杂度 5. 常见的时间复杂度和…

node-ddk,electron,截屏封装(js-web-screen-shot)

node-ddk 截屏封装(js-web-screen-shot) https://blog.csdn.net/eli960/article/details/146207062 也可以下载demo直接演示 http://linuxmail.cn/go#node-ddk 感谢/第三方 本截屏工具, 使用的是: js-web-screen-shot https://www.npmjs.com/package/vue-web-screen-shot…