美文网首页我爱编程
php反序列化漏洞

php反序列化漏洞

作者: CSeroad | 来源:发表于2018-04-10 16:02 被阅读46次

    php反序列化漏洞我本身也不太懂,看到大佬们的资料,自己进行小结一下

    漏洞原因

    php反序列化漏洞的原因是unserialize函数的参数可控,如果反序列化对象中存在魔术方法,如:__construct()构造函数,__destruct()析构函数,__call()调用不可访问的方法  等等,而魔术方法的代码可以被控制,漏洞由此产生。

    根据不同代码导致各种攻击,如代码注入,目录遍历等等

    漏洞源代码

    <?php

    class A{

    var $a="test";

    function    __destruct(){

    $fp=fopen(dirname(__FILE__)."/save.php","w");

    fputs($fp,$this->a);

    fclose($fp);

    }

    }

    //$a=new A();

    //echo serialize($a);

    $test=$_POST['test'];

    $test_unset=unserialize($test);

    ?>

    destruct魔术方法,当一个对象被销毁时进行自动调用,函数serialize为序列化函数

    进行访问

    序列化之后

    O代表对象,A代表类名,a是类实例化之后的对象

    由此可以构造payload

    ok

    payload将生成在save.php文件下。

    进行访问,成功利用。

    成功

    参考资料

    https://www.waitalone.cn/php-serialize-inject.html

    http://www.cnbraid.com/2016/unserialize.html

    相关文章

      网友评论

        本文标题:php反序列化漏洞

        本文链接:https://www.haomeiwen.com/subject/oohnhftx.html