看来反序列化要多打点了,反序列化这块都不怎么熟~
AreUSerialz
源码
1 |
|
考点:
序列化后产生不可见字符
private、protected序列化后产生不可见字符
1 | private属性序列化的时候格式是 %00类名%00成员名 |
__destruct()
而__destruct()这个魔术方法在每次销毁一个对象时触发。
而 PHP 的特性 「 运行完一次请求则销毁环境 」 的做法。反正执行完请求后所有该销毁的都会销毁。
但是我们要把op == 2才能进入read利用
绕过
PHP7.1以上的反序列化不会判断里面参数的属性类型了,所以可以改成public再进行反序列化,绕过private、protected序列化后产生不可见字符。__destruct()方法,当op===”2”时会将”2”变成”1”,可以把op转成int型进行绕过~
读取
因为默认路径改了个名~
先读取一下index.php

1 |
|
再将文件后缀改为xlsx文件
监控我们linux靶机的2333端口(记得进去/var/www/html):
1 | nc -lvvp 2333 |
然后上传我们的xlsx文件就行了
就可以看到靶机上的注入结果了
notes
CVE-2019-10795 undefsafe原型链污染
最近在研究jsouyp搞爬虫,准备开发个阅读器自用= =,最后一题等我有时间在做好了,node这方面也不怎么熟,希望后面用vue开发完后能很快理解~~~
参考
PHP反序列化从初级到高级利用篇
proc/self/目录的意义
网鼎杯-web
Apache POI XML外部实体(XML External Entity,XXE)攻击详解