文件包含之session.upload_progress的使用

目录

原理

环境搭建

渗透

结果


一次项目经历复现

原理

session.auto_start顾名思义,如果开启这个选项,则PHP在接收请求的时候会自动初始化Session,不再需要执行session_start()。但默认情况下,也是通常情况下,这个选项都是关闭的。

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

默认情况session.upload_progress.enabled是开启的

然后我们上传在这个字段PHP_SESSION_UPLOAD_PRORESS下面,然后一旦有这个字段php会认为你是要做一个 进度条的上传这样就会自动生成一个session文件,session文件的内容是你的上传内容和PHP_SESSION_UPLOAD_PRORESS字段对应的值,然后我们就可以包含了。然后由于session.upload_progress.cleanup是1默认开启的,你上传完成以后文件会马上删掉。

环境搭建

文件上传

html 复制代码
<html>
<body>

<form action="2024_8_28_1.php" method="post"
      enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file" />
    <br />
    <input type="submit" name="upload" value="upload" />
</form>

</body>
</html>

文件包含

php 复制代码
<?php
include $_REQUEST['file'];

渗透

如下抓包,添加字段cookie,然后在上传文件的时候整一个PHP_SESSION_UPLOAD_PRORESS字段,这样在session文件中就会你刚刚设置的cookie的session名字的session文件

session文件,这个文件是空的原因就是session.upload_progress.cleanup是开启的,所以上传以后里面的内容被删除掉了

如何继续包含,我们在没有删除的时候进行竞争,可以使用bp爆破抓包,两个线程一起竞争,一边上传session,一边包含

结果

包含成功

相关推荐
yzx991013几秒前
图像去雾:从暗通道先验到可学习融合——一份可跑的 PyTorch 教程
人工智能·pytorch·学习
泰迪智能科技37 分钟前
案例分享|企微智能会话风控系统:为尚丰盈铝业筑牢沟通安全防线
安全·企业微信
练习时长两年半的Java练习生(升级中)1 小时前
从0开始学习Java+AI知识点总结-30.前端web开发(JS+Vue+Ajax)
前端·javascript·vue.js·学习·web
Rhys..2 小时前
python + Flask模块学习 1 基础用法
python·学习·前端框架·flask
lingggggaaaa2 小时前
小迪安全v2023学习笔记(七十八讲)—— 数据库安全&Redis&CouchDB&H2database&未授权&CVE
redis·笔记·学习·算法·安全·网络安全·couchdb
Jayyih3 小时前
嵌入式系统学习Day29(tcp)
网络·学习·tcp/ip
MoloXuanhe3 小时前
[TryHackMe]Wordpress: CVE-2021-29447(wp漏洞利用-SSRF+WpGetShell)
运维·网络·安全·tryhackme·thm
wanhengidc3 小时前
网页版的云手机都有哪些优势?
运维·网络·安全·游戏·智能手机
g_i_a_o_giao4 小时前
Android8 binder源码学习分析笔记(一)
android·java·笔记·学习·binder·安卓源码分析
yuxb734 小时前
Docker学习笔记(三):镜像与容器管理进阶操作
笔记·学习·docker