您现在的位置是:首页 > 正文

文件包含&条件竞争

2024-02-01 05:40:48阅读 7

session.upload_progress
与open_basedir、allow_url_fopen、allow_url_include等PHP配置一样,session.upload_progress也是PHP的一个功能,同样可以在php.ini中设置相关属性。其中最重要的几个设置如下:

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.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
一:
通过session_start()才能开启session,那如果没有session_start()这个姿势岂不是就没法利用了。这里我们又要了解一个新的相关配置:session.use_strict_mode
在这里插入图片描述
该配置项默认是不启用的,这就代表着可以自己定义session id,比如我在请求包中设置Cookie为PHPSESSID=haha,那么就会生成一个sess_haha的session文件,此时php会自动初始化session,并产生一个键值,格式为配置文件中 session.upload_progress.prefix的值+传入的session.upload_progress.name的值,该键值会被写入session文件。按上面写的相关配置,该键值的格式应该为:upload_progress_+PHP_SESSION_UPLOAD_PROGRESS的值。
二:
因为 session.upload_progress.cleanup默认是开启的,这就导致在上传结束后,session文件中有关上传进度的信息会立马被删除,那怎么才能包含到恶意代码呢:

这里可以用条件竞争的方式来解决该问题,使用burp或python脚本不断发送上传数据包,然后再用相同方式发送文件包含的数据包,就能包含到了

网站文章

  • Unity:圆底烧瓶中液体液面升降变化的效果

    Unity:圆底烧瓶中液体液面升降变化的效果

    在Unity中:如何实现圆底烧瓶中液体液面升降变化的效果

    2024-02-01 05:40:21
  • Gstreamer利用category调试

    之前总结过category的定义和使用,基于这个基础,发现利用gstreamer的categories和log系统,调试起来效率会提升很多。这两个例子都是Gstreamer中基础的部分,其他的elem...

    2024-02-01 05:40:14
  • 基本算法之枚举.205.余数相同问题

    求余

    2024-02-01 05:40:07
  • selenium自动化截图的方式

    自动化截图的三种方式

    2024-02-01 05:39:37
  • idea基本建立工程与注意事项

    1.src–>new–>Package 2.File–>New–>Module 3.File–>New–>Project 4.File–>Project Structure 5.具体包–>New -->Java Class 6.remove–>delete后检查.idea下的modules.xml

    2024-02-01 05:39:31
  • BUUCTF:[watevrCTF-2019]Pickle Store

    BUUCTF:[watevrCTF-2019]Pickle Store

    题目地址:https://buuoj.cn/challenges#[watevrCTF-2019]Pickle%20Store Pickle反序列化 使用pickle.loads()和base64对这...

    2024-02-01 05:39:25
  • 阿里云网盘和百度网盘功能体验上谁更胜一筹呢?

    阿里云网盘和百度网盘功能体验上谁更胜一筹呢?

    阿里云网盘和百度网盘功能体验上谁更胜一筹呢?由阿里巴巴推出的阿里云网盘即将上线,相信这对于百度网盘来说将是一个强劲的对手,会流失许多的用户。那么阿里云网盘和百度网盘哪个好?这两个网盘在功能和体验上谁更...

    2024-02-01 05:39:18
  • Element级联选择器自定义value label

    Element级联选择器自定义value label

    实际项目中后端返回的数据属性可能不是以`label/value`等命名的,这时候数据就渲染不上去。我们需要利用`props`指定选项的值为选项对象的某个属性值。

    2024-02-01 05:38:47
  • LeetCode-160. 相交链表

    LeetCode-160. 相交链表

    于是有一个巧妙的思路诞生了,如果让短的先走完自己的再走长的,长的走完走短的,他俩就会正好对齐。如果让他们尾端队齐,那么从后面遍历就会很快找到第一个相交的点。

    2024-02-01 05:38:21
  • 2021-07-23

    2021-07-23

    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure遇到这个问题,刚开始很懵,于是疯狂百度,大多数都是让修改等待时间,但对我来说无济于事,然后就想着修改代码,于是,发现成功啦!上图:另:数据库版本和驱动jar包不一样,就在注册驱动时找到jdbc的上级目录为止...

    2024-02-01 05:37:47