CTFd-Web题目动态flag

news/2024/5/19 12:16:02 标签: web安全, CTF, docker

CTFd-Web题目动态flag

  • 1. dockerhub注册
  • 2. dockerfile编写
  • 3. 上传到docker仓库
  • 4. 靶场配置
  • 5. 动态flag实现

dockerhub_1">1. dockerhub注册

想要把我们的web题目容器上传到docker仓库中,我们需要dockerhub官网注册一个账号,网址如下

https://hub.docker.com/

dockerfile_9">2. dockerfile编写

dockerfile内容大致如下

dockerfile">FROM ctftraining/base_image_nginx_mysql_php_56 #导入基础web环境镜像
COPY src /var/www/html	#将本地src文件夹里的题目源码copy到镜像的web目录
COPY ./flag / #将flag复制到镜像根目录

我的题目文件结构如下

在这里插入图片描述

docker_24">3. 上传到docker仓库

首先我们需要在命令行执行以下命令,用来登陆我们的dockerhub账号,第一次登陆需要输入账号和密码

我们执行命令的文件夹一定要为dockerfile文件所在的文件夹,并以root权限运行

docker login

在这里插入图片描述

然后运行以下命令,生成下镜像

名称要为 dockerhub用户名/镜像名 的格式

docker build -t name/image .

#name为dockerhub名,image为镜像名(自定义)
#"."为版本号,代表latest

运行该命令生成一个名称为 name/image 的镜像

在这里插入图片描述

这时我们的镜像已经构造完成,然后我们将镜像上传到dockerhub的仓库,运行以下命令

docker push name/image

在这里插入图片描述

上传成功后,我们登陆dockerhub可以看到

在这里插入图片描述

4. 靶场配置

这里以nssctf平台为例,基本上原理都一样

设置大体如下

在这里插入图片描述

题目名我们自拟即可

转发端口即题目镜像内默认的80端口

镜像名填写我们上传的镜像的名称,例如 elitewa/pop

点击开启环境,即可看到题目正确生成

在这里插入图片描述

5. 动态flag实现

别的步骤和上面相同,只是需要更改下dockerfile并创建动态flag脚本flag.sh

内容如下:

dockerfile

dockerfile">FROM ctftraining/base_image_nginx_mysql_php_56
COPY src /var/www/html
COPY ./flag /
RUN mv /var/www/html/flag.sh / \
    && chmod +x /flag.sh

flag.sh

#!/bin/sh
sed -i "s/flag{flag}/$FLAG/" /flag #用动态生成的flag替换flag文件中的占位的flag
export FLAG=""

flag文件内容

flag{flag}

题目文件结构如下

在这里插入图片描述

题目配置如下

在这里插入图片描述

我们解出题目,发现flag成功变为了动态的(动态flag的题目环境开启较慢,需要耐心等一小会)

在这里插入图片描述


http://www.niftyadmin.cn/n/5189960.html

相关文章

MySQL事务特性原理

文章目录 事务四特性预备知识checkpoint机制redo日志redo的流程事务提交后什么时候进行刷盘 undo日志:数据还未被修改、也是备份Undo日志的作用undo的存储结构回滚段与事务回滚段中的数据分类undo的类型undo log的生命周期 MVCC一、 原子性原理如何通过undo日志实现…

使用 Redis 构建轻量的向量数据库应用:图片搜索引擎(二)

本篇文章我们来继续聊聊轻量的向量数据库方案:Redis,如何完成整个图片搜索引擎功能。 写在前面 在上一篇文章《使用 Redis 构建轻量的向量数据库应用:图片搜索引擎(一)》中,我们聊过了构建图片搜索引擎的…

Python基础:正则表达式(regular expression)详解

在Python中,正则表达式是一种强大的工具,可用于匹配和操作字符串。什么是正则表达式? 正则表达式是一种模式匹配语言,用于匹配字符串中的特定模式。这些模式可以是字母、数字、字符组合或其他符号。正则表达式通常用于文本处理、网…

C++(适配器):stack和queue的底层实现,以及优先级队列和仿函数

stack和queue的接口比较简单&#xff0c;使用起来也十分方便&#xff0c;只需要注意一个先进先出、后进先出就可以 void test_queue() {queue<int> qe;qe.push(1);qe.push(2);qe.push(3);qe.push(4);qe.push(5);while (!qe.empty()){cout << qe.front() << …

openRPA开源项目源码编译

最近接触到了一个新的领域——RPA&#xff0c;RPA全称Robotic Process Automation&#xff0c;中文名为机器人流程自动化。RPA可以视作一个数字机器人&#xff0c;它可以通过程序来模拟人与软件系统的交互过程&#xff0c;代替人工将大量重复、有规则的计算机操作自动化&#x…

以太网基础——DoIP报文类型

文章目录 前言一、DoIP payload types二、节点管理报文0x0000:Generic DoIP header negative acknowledge0x0001:Vehicle identification request message0x0002:Vehicle identification request message with EID0x0003:Vehicle identification request message with VIN0…

MFA多因子认证

什么是多因子认证&#xff08;MFA&#xff09;&#xff1f;为什么需要MFA&#xff1f; 同义词 多因子认证或者多因素验证 [尤其是需要做等级保护测评的时候需要用到] 摘要 多因子认证MFA&#xff08;Multi Factor Authentication&#xff09;是一种安全认证过程&#xff0c;需…

Arduino驱动DHT22温湿度传感器(温湿度传感器)

目录 1、传感器特性 2、控制器和传感器连线图 3、驱动程序 DHT22数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。 传感器包括一个电容式感湿元件和一个NTC…