PHP反序列化--_wakeup()绕过

简介: PHP反序列化--_wakeup()绕过

一、漏洞原理:

二、靶场复现:

进入靶场,分析源代码:

<?php
error_reporting(0);
class secret{
    var $file='index.php';
    public function __construct($file){
        $this->file=$file;
    }
    function __destruct(){
        include_once($this->file);
        echo $flag;
    }
    function __wakeup(){
        $this->file='index.php';
    }
}
$cmd=$_GET['cmd'];
if (!isset($cmd)){
    highlight_file(__FILE__);
}
else{
    if (preg_match('/[oc]:\d+:/i',$cmd)){
        echo "Are you daydreaming?";
    }
    else{
        unserialize($cmd);
    }
}
//sercet in flag.php
?>

分析代码可知,我们只需要将 $file 赋值为 flag.php 并且将 _wakeup()函数绕过即可。

构造payload:

并且将 "serect" 后的 1 改为 2,来绕过 _wakeup()函数。

根据正则表达式,题目不允许 O 的后面有数字,我们只能将 O:6 改为 O:%2B6,其中%2B是加号(+) 的url编码。

将最终的 payload 提交:

相关文章
|
2月前
|
缓存 安全 PHP
PHP中的魔术方法与对象序列化
本文将深入探讨PHP中的魔术方法,特别是与对象序列化和反序列化相关的__sleep()和__wakeup()方法。通过实例解析,帮助读者理解如何在实际应用中有效利用这些魔术方法,提高开发效率和代码质量。
|
7月前
|
存储 监控 安全
Pikachu PHP 反序列化通关解析
Pikachu PHP 反序列化通关解析
|
7月前
|
PHP
利用一段代码轻松绕过PHP授权系统
利用一段代码轻松绕过PHP授权系统
73 0
|
7月前
|
安全 PHP
PHP反序列化---字符串逃逸(增加/减少)
PHP反序列化---字符串逃逸(增加/减少)
|
7月前
|
PHP
PHP反序列化--引用
PHP反序列化--引用
|
7月前
|
PHP
PHP反序列化--pop链
PHP反序列化--pop链
|
7月前
|
存储 PHP 数据库
PHP序列化基础知识储备
PHP序列化基础知识储备
|
7月前
|
网络安全 PHP 数据安全/隐私保护
[网络安全/CTF] 记一次PHP序列化反序列化解题详析
[网络安全/CTF] 记一次PHP序列化反序列化解题详析
114 5
|
人工智能 安全 PHP
PHP特性之CTF中常见的PHP绕过
PHP特性之CTF中常见的PHP绕过
612 1
|
存储 SQL Java
反序列化及PHP魔法函数
反序列化及PHP魔法函数
96 0
反序列化及PHP魔法函数