0x00 基本知识
1.PHP反序列化代码审计,POP链寻找
2.__wakeup绕过(CVE-2016-7124)
0X01 题解
进入题目直接给源码
1 | Welcome to index.php |
反序列化,漏洞点很明显
1 | if(isset($_GET['pop'])){ |
开始寻找pop链
Modifier
类中有一个include
文件包含,且参数可以通过控制反序列化来控制,考虑可以用这个结合伪协议来代码读取
1 | class Modifier { |
利用__invoke
魔术方法来执行文件包含,所以需要找一个可控的动态调用,在Test
类中可以找到
1 | class Test{ |
当使用私有属性或不存在的属性时,__get
魔术方法将被调用,所以还需要考虑如何调用不存在的属性
1 | class Show{ |
可以利用Show
类中的toString
方法,将str赋值为Test对象,调用不存在的属性source时就可触发__get方法
至于触发__toString
方法,则可以考虑用Show
对象自身的___wakeup
方法中的preg_match
函数来触发
编写exp
1 |
|