burp不行了,就用这个的利用session.upload_progress进行文件包含。payload,来打打试试,。
1. 在session反序列化,PHP解析器的考点中使用。
PHP反序列化之SEESSION反序列化(二):切入学习点:jarvis OJ PHPINFO.
这个是利用了当session.upload_progress.enabled
开启时如果我们上传了一个和session.upload_progress.name
同名的变量,也就是名字为PHP_SESSION_UPLOAD_PROGRESS
的时候,且为 POST 请求的时候,他就会在$_SESSION
中添加一组键值对。键名就是session.upload_progress.name
。然后键值就是我们POST中上传的键值,
上面这个jarvis oj 用到点就是PHP的反序列化解析器不同,然后 反序列化的rce。没有写入session的点,所以就用这个了,然后就将这个的值变成我们构造的恶意的反序列化的字符串。
POST上传这个变量,就会在session中放入这么一组键值对,然后在burp中改包,把123变成我们构造的恶意反序列化的字符串。
键值对是 post 中的 键值对中的 文件名,所以burp改的时候,就是上面的就好。
2. 进行文件包含:
这个我的锅,都说如果session.auto_start
,没开的话,我们没办法自动生成一个session文件,然后大佬们就说,可以手动写一个PHPSESSID
,然后就有了,我就一直在我本地尝试,但是都没有发现,在win10本地,和阿里云上面都试过了,就是没有,,然后我就猛然想到了,大佬们还说了,
我们写入这个session文件的时候,要知道不这个的文件名,并且知道session文件的存放位置。
session里有一个默认选项,session.use_strict_mode
默认值为off
。
也就是为off
的时候,我们用户是可以自己定义SESSIONID
的,比如,我们在Cookie里设置PHPSESSID=flag,PHP将会在服务器上创建一个文件:/tmp/sess_flag”。即使此时用户没有初始化Session,PHP也会自动初始化Session,并产生一个键值。
注:在Linux系统中,session文件一般的默认存储位置为 /tmp 或 /var/lib/php/session。
但是!
但是session.upload_progress.cleanup默认是开启的
框着的这句话意思就是说在默认情况