极客大挑战 2019]PHP CVE-2016-7124 绕过__wakeup()

极客大挑战 2019]PHP

 
 
扫描发现备份源代码www.zip
 
 
 
注意 private私有属性,不能从外面去更改访问
只能从内部函数里面进行更改
 
源代码如下:
 
 
 
 
 
__wakeup()是被反序列后自动调用的函数。
自动将属性改为guest但是和后面的admin有所冲突。
 
 
 
 
O:4:"Name":2:{s:14:"�Name�username";s:5:"admin";s:14:"�Name�password";i:100;}
私有属性,Name两边有两个空字节。url编码为%00
 
 
冲突后,使用CVE-2016-7124 绕过__wakeup()
 
其中name后面的2,代表类中有2个属性,但如果我们把2改成3,就会绕过__wakeup()函数。而且因为是private声明,我们需要在类名和字段名前面都会加上\0的前缀
 
将属性个数变更为3(实际为2)。
 
O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}