当前位置: 首页 > news >正文

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题型的创建完成。

相关文章:

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

接上文&#xff0c;这篇主要是结合阿里云ACR来实现动态flag题型的创建。 这里顺便也介绍一下阿里云的ACR服务。 阿里云容器镜像服务&#xff08;简称 ACR&#xff09;是面向容器镜像、Helm Chart 等符合 OCI 标准的云原生制品安全托管及高效分发平台。 ACR 支持全球同步加速、…...

【面试经典150题】删除有序数组中的重复项

目录 一.删除有序数组中的重复项 一.删除有序数组中的重复项 题目如上图所示&#xff0c;这里非严格递增排序的定义是数字序列&#xff0c;其中相邻的数字可以相等&#xff0c;并且数字之间的差值为1。 这题我们依旧使用迭代器进行遍历&#xff0c;比较当前的数据是否与下一个数…...

太阳能辐射整车综合性能环境试验舱

产品别名 步入式恒温恒湿试验箱、步入式温湿度试验箱、温度试验室、模拟环境试验室、大型恒温恒湿箱、步入式高低温湿热交变试验箱、大型高低温箱、步入式老化箱、恒温恒湿试验房、步入式高低温试验箱. 整车综合性能环境试验舱:整车综合性能环境试验舱:主要用于整车高低温存放…...

JS脚本打包成一个 Chrome 扩展(CRX 插件)

受这篇博客 如何把CSDN的文章导出为PDF_csdn文章怎么导出-CSDN博客 启发&#xff0c;将 JavaScript 代码打包成一个 Chrome 扩展&#xff08;CRX 插件&#xff09;。 步骤&#xff1a; 1.创建必要的文件结构和文件&#xff1a; manifest.jsonbackground.jscontent.js 2.编写…...

js事件对象

js事件对象概念说明 在JavaScript中&#xff0c;事件对象是在事件触发时由浏览器自动创建的一个对象。它包含了与事件相关的信息&#xff0c;例如触发事件的元素、事件类型、鼠标的坐标等。 可以通过事件处理函数的第一个参数来访问事件对象。例如&#xff0c;在一个鼠标点击…...

希捷硬盘怎么恢复数据? 5 个免费希捷数据恢复软件

希捷已迅速成为全球最大的数字存储提供商。许多人选择并使用希捷外置硬盘来存储他们的媒体文件、学校或工作文件以及其他重要数据。有时&#xff0c;希捷硬盘中的数据会丢失。 如果您丢失了希捷硬盘上的数据&#xff0c;请不要惊慌。在专业的希捷数据恢复软件的帮助下&#xf…...

Nvidia Jetson/Orin +FPGA+AI大算力边缘计算盒子:京东无人配送机器人

电商巨头京东已选用NVIDIA Jetson AGX Xavier 平台&#xff0c;作为下一代自主配送机器人核心AI算力。 在过去的几十年中&#xff0c;中国占据了全球40&#xff05;以上的电商交易——每年约为千亿美元。根据麦肯锡全球研究院的数据&#xff0c;这一数字已经高于法国、德国、…...

STM32作业实现(七)OLED显示数据

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…...

elementui el-tooltip文字提示组件弹出层内容格式换行处理

1、第一种 1.1 效果图 1.2、代码 <template><div class"wrapper"><el-tooltip class"content" effect"dark" placement"top"><div slot"content"><div v-html"getTextBrStr(text)"&…...

Python3 笔记:每天一个函数——str.join()

join() &#xff1a;连接字符串数组。将字符串、元组、列表中的元素以指定的字符&#xff08;分隔符&#xff09;连接生成一个新的字符串。 语法&#xff1a;sep.join(seq) 参数说明&#xff1a; sep&#xff1a;分隔符。可以为空。 seq&#xff1a;要连接的元素序列、字符串…...

深入解析Python中的None与null:它们真的不同吗?

标题&#xff1a;深入解析Python中的None与null&#xff1a;它们真的不同吗&#xff1f; 摘要 在Python编程中&#xff0c;None是一个常见的概念&#xff0c;而null则通常与Python之外的语言相关。尽管None和null在某些语言中可以互换使用&#xff0c;但在Python中&#xff0…...

论文作图之高压缩比导出PDF

笔者使用Adobe Illustrator 2023创建可编辑pdf图&#xff0c;按照默认的导出设置保存pdf文件时&#xff0c;得到的图存储很大。为了解决存储过大且还保留一定编辑功能的问题&#xff0c;作者实践出了一种导出pdf的设置方法。 首先在AI中点击文件->存储为&#xff0c;点击保…...

SpringBoot的启动流程

SpringBoot的启动流程 主要包括初始化配置、创建应用程序上下文、刷新上下文以及通知监听者等步骤。 下面将详细探讨SpringBoot的启动流程&#xff0c;以了解其背后的工作原理和机制&#xff1a; 初始化配置&#xff1a;当main方法被调用时&#xff0c;首先通过类加载器读取cla…...

Kubernetes资源调度策略及实现机制

目录 一、资源调度策略 1.默认调度器&#xff08;Default Scheduler&#xff09; 2.自定义调度器&#xff08;Custom Scheduler&#xff09; 3.亲和性与反亲和性&#xff08;Affinity and Anti-Affinity&#xff09; 4.污点与容忍&#xff08;Taint and Tolerations&#…...

finetuning大模型准备(基于Mac环境)

为finetuning进行的热身准备&#xff0c;涉及周边的软件工具&#xff0c;方法。 问题1&#xff1a;finetuning过程较长&#xff0c;采用系统自带命令行没有后台&#xff0c;前台被杀后&#xff0c;容易造成训练失败。 解决方法&#xff1a; tmux可以开启后台训练 问题2&…...

js检验一个字符串是否是正确时间格式的工具方法

js检验一个字符串是否是正确时间格式的工具方法 (()> {/*** 检验字符串是否为时间格式* param {String} date 需要检验的时间格式* returns true 为时间格式&#xff0c;false 为非时间格式*/const isTimaFormat (date) > {if(!date) return false;try{const tempTime …...

大型制造业集团IT信息化总体规划方案(65页PPT)

方案介绍&#xff1a; 本大型制造业集团IT信息化总体规划方案旨在通过构建先进、高效、稳定的IT信息化系统&#xff0c;支撑集团各业务领域的运营和管理需求&#xff0c;促进集团整体运营效率和竞争力的提升。通过实施本项目&#xff0c;集团将能够更好地应对市场变化和客户需…...

【LIN】STM32新能源汽车LIN通信实现过程

【LIN】STM32新能源汽车LIN通信实现过程 文章目录 前言一、软件二、接线图三、硬件原理图四、上位机五、PICO示波器串行解码1.软件中的LIN波特率设置-192002.PIC设置3.PIC串行解码 六.引用总结 前言 【电机控制】直流有刷电机、无刷电机汇总——持续更新 使用工具&#xff1a;…...

【LeetCode:575. 分糖果+ 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

全文检索-ElasticSearch

1.基本概念 1.Index索引 动词&#xff1a;相当于MySQL中的insert&#xff1b; 名词&#xff1a;相当于MySQL中的DataBase&#xff1b; 2.Type&#xff08;类型&#xff09; 在Index&#xff08;索引&#xff09;中&#xff0c;可以定义一个或多个类型 类似于MySQL中的Tab…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...