CTF本地靶场搭建——基于阿里云ACR实现动态flag题型的创建

接上文,这篇主要是结合阿里云ACR来实现动态flag题型的创建。

这里顺便也介绍一下阿里云的ACR服务。

image.png

阿里云容器镜像服务(简称 ACR)是面向容器镜像、Helm Chart 等符合 OCI 标准的云原生制品安全托管及高效分发平台。 ACR 支持全球同步加速、大规模/大镜像分发加速、多代码源构建加速等全链路提效,与容器服务 ACK 无缝集成,帮助企业降低交付复杂度,打造云原生应用一站式解决方案。

说白了就是对标dockerhub的,但是dockerhub很难访问,需要科学上网,所以这里我们就使用阿里云提供的ACR镜像服务来完成动态flag题型的创建了。

回到虚拟机内,进入到【GZCTF】下面。

image.png

新建一个文件夹,命名为【WEB】。

image.png

同时,WEB下再新建一个文件夹,命名为【src】。

image.png

在src中,新建flag.sh和index.php。

image.png

web题,首先是需要按照常规逻辑写一个网页,这里就写一个带flag的简单网页,把flag放在源代码里,并注释掉。代码如下,保存为index.php。

在当前路径下打开命令行界面,执行如下命令:

vi index.php

并复制如下内容到php文件中:

<!DOCTYPE html>
<html>
<head><title>签到</title>
</head>
<!--flag{testflag}-->
<body>
<?php
echo "welcome !!!";
?>
</body>
</html>

这里值得注意的是,ubuntu的输入按住方向键时会变成大写字母,需要提前进行修改,具体修改方式如下:

首先进入该目录。

cd /etc/vim

如果你有root权限,直接进入文件编辑即可,如果没有root权限,在下面的代码前面加一个sudo就可以编辑了。

vi vimrc.tiny

回车后,先把光标调到set和compatible中间(为了避免插入时使用方向键),让光标覆盖"c"的位置,像这样。

8406a3dae5a04a5e82442f9256d4786d.png

然后按下键盘"i"键进入插入模式,之后输入"no",完成后是这个样子的:

6e21797591bd4010915bedbcf20422f9.png

set nocompatible

完成后按esc键,然后输入:wq退出编辑并保存。

:wq

这样按住上下左右键就是正常的了。


创建完index.php,接下来创建flag.sh。

vi flag.sh

同样复制如下内容到sh文件中:

#!/bin/sh	sed -i "s/flag{testflag}/$GZCTF_FLAG/" /home/XXX/GZCTF/WEB/src/index.php #使用平台的动态flag替换index.php中的flag,这里我使用的平台为GZCTF,因此动态flag环境变量为$GZCTF_FLAG,其他平台一般
为$FLAGexport GZCTF_FLAG=""	#命令用于设置或声明环境变量,使得该变量能在子进程中可见

此处注意要按照自己创建的实际路径来填写。

当创建完src文件下的内容后,回到上级目录,编写Dockerfile文件。

image.png

vi Dockerfile
FROM ctftraining/base_image_nginx_mysql_php_56  #web题docker基础镜像,这里使用ctftraing打包好
的,包含了基础的nginx,mysql,php环境,并且会自动运行flag.sh脚本,本题使用php环境。COPY src /home/XXX/GZCTF/WEB/src/	#将你编写的网页源码复制到docker容器中,这里为php网页,因此只需要
复制源码到对应路径下就可以了,其他类型网页按照实际部署情况COPY到docker中相应目录下就可以了RUN mv /home/XXX/GZCTF/WEB/src/flag.sh / \	#把你源码中的flag.sh复制到根目录以便自动执行&& chmod +x /flag.sh		#添加运行权限

编译时记得删除注释内容。

到这里文件就准备完毕了,下面我们进入到阿里云的ACR界面。

点击免费试用。

image.png

创建个人实例。

image.png

设置完密码创建完成后,进入访问凭证,复制登陆实例的语句。

image.png

登陆成功。

image.png

这里需要先安装好docker和docker-compose,具体安装过程可以见我之前的文章。

接下来使用build命令,构建题目镜像,需要回到ACR中创建一个命名空间,建议设置为私有,名字是全局唯一性!

image.png

接下来执行构建命令,name为阿里云命名空间名字,webtest为镜像名(自定义),"."为版本号,代表latest,也可以自定义。

sudo docker build -t name/webtest .

image.png

执行命令查看镜像构建情况:

sudo docker images

image.png

给它打上tag,表明版本:

sudo docker tag IMAGEID 镜像在阿里云里的地址:1.0.0

image.png

再push到我的阿里云镜像仓库,name为命名空间名,webtest为镜像名

sudo docker push 镜像在阿里云里的地址:1.0.0

image.png

这时可以回到阿里云的ACR界面下,进入镜像仓库查看。

image.png

可以看到已经成功了。

image.png

接下来部署题目,类型记得选择动态容器。

image.png

在这个位置填入阿里云地址下的路径地址:

image.png

点击后面的创建测试容器,这里会创建一个入口,点击查看网页。

image.png

可以看到实例创建成功!

image.png

查看源码可以看到就是我们之前编辑的index.php文件。

image.png

我们更换账号去尝试答题。

image.png

点击创建实例。

image.png

可以看到生成的是新的flag。

image.png

再更换个账号,可以看到flag有所变化。

image.png

至此,基于阿里云ACR实现动态flag题型的创建完成。

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

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

相关文章

如何恢复 Android 设备上丢失的照片

由于我们的大量数据和日常生活都存储在一台设备上&#xff0c;因此有时将所有照片本地存储在 Android 智能手机或平板电脑上可能是一种冒险行为。无论是由于意外&#xff08;损坏、无意删除&#xff09;&#xff0c;还是您认识的人翻看您的设备并故意删除了您想要保留的照片&am…

从0开始学统计-什么是回归?

1.什么是回归&#xff1f; 回归&#xff08;Regression&#xff09;是统计学中一种用于探索变量之间关系的分析方法。它主要用于预测一个或多个自变量&#xff08;输入变量&#xff09;与因变量&#xff08;输出变量&#xff09;之间的关系。在回归分析中&#xff0c;我们尝试根…

【Leetcode笔记】40.组合总和II

1. 题目要求 这道题目和39.组合总和不一样的地方在于&#xff1a;数组中含有相同的元素。同样地&#xff0c;结果不能含有重复组合。 拿第一个示例来看&#xff0c; candidates [1, 1, 2, 5, 6, 7, 10]问题在于&#xff1a;第一个path[1(index 0), 2]&#xff0c;绝不能出现…

大语言模型实战——最小化模型评测

1. 引言 现在国内外的主流模型&#xff0c;在新模型发布时都会给出很多评测数据&#xff0c;用以说明当前模型在不同数据集上的测评表现&#xff08;如下面llama3发布的评测数据&#xff09;。 这些评测数据是如何给出来的呢&#xff1f;这篇文章会用一个最小化的流程来还原下…

echarts绘制三维柱状图

echarts ECharts 是一个使用 JavaScript 实现的开源可视化库&#xff0c;主要用于数据的可视化展示。ECharts 支持丰富的图表类型&#xff0c;如折线图、柱状图、饼图、地图、K线图等&#xff0c;可以满足不同类型数据的展示需求。 文档地址&#xff1a;echarts 本次所绘制三…

从零开始实现自己的串口调试助手(3) - 显示底部收发,优化串口打开/关闭

注意: 1. 我们要实现自发自收&#xff0c;要将tx&#xff0c;rx连起来 2.发送的 不能是中文符号&#xff0c;因为这可能导致&#xff0c;读取到的是英文符号 --> 导致接收到的size 和发送的size 大小不一致 3.注意同时定义两个槽函数的时候两个槽函数都会被调用&#xff0c;…

MySQL数据表的设计

实际工程中, 对于数据表的设计和创建, 我们遵循以下步骤: 首先确定实体, 找到关键名词, 提取关键信息, 设计表有哪些列, 每一列是什么. (有几个实体, 一般就创建几个表, 一般一个表对应一个实体) 实体之间的关系: 1. 一对一关系 例如: 一个学生, 只能有一个账号; 一个账号只…

基于单片机的病床呼叫系统设计研究

摘要&#xff1a;随着无线技术的快速发展&#xff0c;无线应用技术已经运用到人们生产生活中的多个领域&#xff0c;运用无线技术来设计病床呼叫系统能够实现无线信号的远距离传输&#xff0c;减少材料耗费&#xff0c;使医患之间的沟通更加便捷&#xff0c;该系统运用单片机作…

决定短视频打开率的要素:成都鼎茂宏升文化传媒公司

​ 在当下这个短视频盛行的时代&#xff0c;无论是个人创作者还是企业品牌&#xff0c;都希望通过短视频平台获得更多的曝光和关注。然而&#xff0c;如何让自己的短视频在众多内容中脱颖而出&#xff0c;吸引用户的点击和观看&#xff0c;成为了摆在我们面前的重要问题。成都…

nginx隐藏版本号、错误信息页面隐藏nginx软件、修改 HTTP 头信息中的connection 字段,防止回显具体版本号、curl命令

目录 安装之后隐藏 配置文件 源代码配置安装之前隐藏 修改nginx.h文件中的 13、14行 修改 HTTP 头信息中的connection 字段&#xff0c;防止回显具体版本号 配置文件49行 错误页面程序返回版本号、nginx隐藏 配置文件36行 ​编辑 安装nginx 相关选项说明 curl命令测试…

更新详情 | Flutter 3.22 与 Dart 3.4

作者 / Michael Thomsen 过去几个月&#xff0c;Dart & Flutter 部门可谓忙碌非凡&#xff0c;但我们很高兴地宣布&#xff0c;Flutter 3.22 和 Dart 3.4 已经在今年的 Google I/O 大会上精彩亮相&#xff01; Google I/Ohttps://io.google/2024/intl/zh/ 我们始终致力于提…

记一次mysql索引优化

生产日志告警出现一条慢 sql 告警, 通过 sql 监控平台拿到 这条sql 语句是 : SELECTid,report_id,report_detail_id,item_code,report_type,photo FROM**** 表 WHEREdel_flag 0 AND (report_type 1 AND report_detail_id IN ( 1742 )) 之后用 explain 分析这条 sql 的命中…

FPGA新起点V1开发板(九)——流水灯

文章目录 一、模块框图二、代码编写三、注意点四、总结 一、模块框图 二、代码编写 endmodule下面需要敲出一个回车代码拼接是大括号 led < {led[2:0],led[3]}注意二进制和十进制 module flow_led(input sys_clk50,input rst_n,output reg [3:0] le…

Java开发分析工具:JProfiler 14 for Mac/win 激活版下载

JProfiler是一款功能强大的Java应用程序性能分析工具&#xff0c;适用于Java开发人员和企业用户&#xff0c;可帮助他们识别和解决Java应用程序中的性能问题&#xff0c;提高应用程序的性能和稳定性。使用JProfiler&#xff0c;开发人员可以实时查看Java应用程序的性能数据&…

Redis数据类型(下篇)

5.Redis有序集合zset(sorted set) 本质就是在set的基础上&#xff0c;每个val值前面加了一个score分数值。 &#xff08;1&#xff09;向有序集合中添加多个&#xff08;或者一个&#xff09;元素和其对应的分数 127.0.0.1:6379> zadd zset1 100 a 90 b 80 c 70 d 60 e (…

【VMware虚拟机中ubuntu系列】—— 在虚拟机中使用本机摄像头的详细教程与常见问题分析及解决

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、虚拟机调用本机摄像头(1) 启动VMware USB 服务(2) 连接本机摄像头(3) 测试摄像头的连接 二、安装usb驱动二、运行usb_cam.launch时出现select timeout的报错…

vulhub中Nexus Repository Manager 3 未授权目录穿越漏洞(CVE-2024-4956)

Nexus Repository Manager 3 是一款软件仓库&#xff0c;可以用来存储和分发Maven、NuGET等软件源仓库。 其3.68.0及之前版本中&#xff0c;存在一处目录穿越漏洞。攻击者可以利用该漏洞读取服务器上任意文件。 环境启动后&#xff0c;访问http://your-ip:8081即可看到Nexus的…

npm发布、更新、删除包

如何将自己开发的依赖包发布到npmjs上供别人使用&#xff1f;五个步骤搞定&#xff01; 实现步骤&#xff1a; 创建自己的工具包项目&#xff0c;进行开发。注册npmjs账号。执行npm login在控制台登录&#xff0c;填写用户信息。执行npm publish发布包。更新及删除。 步骤一…

MongoDB~俩大特点管道聚合和数据压缩(snappy)

场景 在MySQL中&#xff0c;通常会涉及多个表的一些操作&#xff0c;MongoDB也类似&#xff0c;有时需要将多个文档甚至是多个集合汇总到一起计算分析&#xff08;比如求和、取最大值&#xff09;并返回计算后的结果&#xff0c;这个过程被称为 聚合操作 。 根据官方文档介绍&…

虚拟化软件(VMWare、VB)异常最后解决手段

Version V0.0&#xff1a;20240601 Ini 前言 这里描述的是常规的解决办法还是无法解决的严重问题&#xff0c;比如”虚拟化软件(VMWare、VB)“启动”虚拟机“、和”CPU硬件加速“开启不了等问题。 一、安装了加速器、游戏平台、模拟器的电脑 解决办法&#xff1a; 把这些…