ctfshow-web82-文件包含-session包含
web82-文件包含-php_session_upload_progress文件包含.md
题目源码
1 |
|
多过滤掉了点.
,这样file
中就不能出现文件名了
可以利用session.upload_progress
进行文件包含
引用参考文章:https://www.freebuf.com/articles/web/288430.html
什么是session.upload_progress?
1
2
3
4
session.upload_progress.enabled = on
session.upload_progress.cleanup = on
session.upload_progress.prefix = "upload_progress_"
session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
- session.upload_progress.enabled可以控制是否开启session.upload_progress功能
- session.upload_progress.cleanup可以控制是否在上传之后删除文件内容
- session.upload_progress.prefix可以设置上传文件内容的前缀
- session.upload_progress.name的值即为session中的键值
session.upload_progress开启之后会有什么效果?
当我们将
session.upload_progress.enabled
的值设置为on时,此时我们再往服务器中上传一个文件时,PHP会把该文件的详细信息(如上传时间、上传进度等)存储在session当中。问题一:如何初始化session并且把session中的内容写到文件中去呢?
我们可以注意到,php.ini中
session.use_strict_mode
选项默认是0,在这个情况下,用户可以自己定义自己的sessionid,例如当用户在cookie中设置sessionid=Lxxx
时,PHP就会生成一个文件/tmp/sess_Lxxx
,此时也就初始化了session,并且会将上传的文件信息写入到文件/tmp/sess_Lxxx
中去。问题二:当session.upload_progress.cleanup的值为on时,即使上传文件,但是上传完成之后文件内容会被清空,怎么办?
利用Python的多线程,进行条件竞争(在系统自动清理前,抢先完成文件包含并执行代码。这种手法在文件上传漏洞利用中很常见,本质是“赶在系统删除前抢占执行权”)。
如何利用session.upload_progress进行RCE?
以本题为例
exp如下
1 |
|
ctfshow-web82-文件包含-session包含
https://yschen20.github.io/2025/05/25/ctfshow-web82-文件包含-session包含/