当前位置: 首页 > news >正文

WEB渗透—PHP反序列化(八)

Web渗透—PHP反序列化        课程学习分享(课程非本人制作,仅提供学习分享)


靶场下载地址:GitHub - mcc0624/php_ser_Class: php反序列化靶场课程,基于课程制作的靶场

课程地址:PHP反序列化漏洞学习_哔哩哔_bilibili


十五、字符串逃逸例题-增多

1.实例代码

目标:判断是否pass=='escaping'

<?php
function filter($name){$safe=array("flag","php");$name=str_replace($safe,"hack",$name);return $name;
}
class test{var $user;var $pass='daydream';                  //pass默认值为'daydream'function __construct($user){$this->user=$user;}
}
$param=$_GET['param'];                     //$_GET[‘param’]获取值给$param
$param=serialize(new test($param));        //并放在实例化test里作为参数,实例化触发__construct赋值给user
$profile=unserialize(filter($param));      //对$param值进行安全性检查,filter把”flag”,”php”替换为”hack”,然后在反序列化
if ($profile->pass=='escaping'){           //判断pass是否为'escaping'echo file_get_contents("flag.php");
}
?>

2.解题过程

思路:

        1)字符串过滤后减少还是增多

        2)构造出关键成员属性序列化字符串

        3)增多则判断一次吐出多少个字符串

        4)构造payload并提交

构造关键成员属性序列化字符:

<?php
class test{var $user="123";         //任意字符var $pass='escaping';
}
echo serialize(new test());
?>

O:4:"test":2:{s:4:"user";s:3:"123";s:4:"pass";s:8:"escaping";}

php被替换成hack,字符串增多,会吐出字符串变成结构代码,一个php吐出1个字符串;

flag被替换成hack,字符串不变,无法吐出字符串变成结构代码

";s:4:"pass";s:8:"escaping";}

$user可控,我们通过param参数进行传参,我们需要将$pass及其参数吐出,同时我们需要补全前面$user的序列化结构,所以我们需要吐出29个字符

构造payload:

URL?param=phpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphpphp";s:4:"pass";s:8:"escaping";}

3.回显结果

利用构造的pyload进行参数传递,得到flag(页面无法直接回显,需要查看网页源代码)

ctfstu{5c202c62-7567-4fa0-a370-134fe9d16ce7}

十六、字符串逃逸例题-减少

1.实例代码

目标:判断vip是否为

<?php
function filter($name){$safe=array("flag","php");$name=str_replace($safe,"hk",$name);return $name;
}
class test{var $user;var $pass;var $vip = false ;                     //vip默认值为falsefunction __construct($user,$pass){$this->user=$user;$this->pass=$pass;}
}
$param=$_GET['user'];
$pass=$_GET['pass'];
$param=serialize(new test($param,$pass));
$profile=unserialize(filter($param));      //对$parm值'user'进行安全性检查,filter把'flag','php'替换为'hk',然后在反序列化
if ($profile->vip){                        //判断vip值是否为真echo file_get_contents("flag.php");
}
?>

2.解题过程

思路:

        1)字符串过滤后减少还是增多

        2)构造出关键成员属性序列化字符串

        3)减少则判断吃掉的内容,并计算长度

        4)构造pyload并提交

构造关键成员属性序列化字符:

<?php
class test{var $user = '123';          //任意字符var $pass = '123';          //任意字符var $vip = true;
}
echo serialize(new test());
?>

O:4:"test":3:{s:4:"user";s:3:"123";s:4:"pass";s:3:"123";s:3:"vip";b:1;}

php被替换成hk,字符串减少,会吃掉字符串变成结构代码,一个php吃掉1个字符串;

flag被替换成hk,字符串减少,会吃掉字符串变成结构代码,一个flag吃掉2个字符串

";s:4:"pass";s:3:"123";s:3:"vip";b:1;}

$user和$pass可控,我们通过user和pass参数进行传参,我们需要将$pass及其参数吃掉,只保留参数内容以及结构 " 符号,同时我们需要补全前面$user的序列化结构,所以我们需要吃掉19个字符(flag每次吃掉2个字符,吃19个字符最少要吃10次,所以我们会多吃1位,在后面字符位置补)

在PHP中,当进行序列化时,字符串的长度标识小于两位时会被算作两位的原因是为了确保序列化后的数据能够正确地被反序列化。在PHP的序列化中,字符串的长度使用一个表示字符数的整数来进行标识。

构造payload:

URL?user=flagflagflagflagflagflagflagflagflagflag&pass=1";s:4:"pass";s:3:"123";s:3:"vip";b:1;}

3.回显结果

利用构造的pyload进行参数传递,得到flag(页面无法直接回显,需要查看网页源代码)

ctfstu{5c202c62-7567-4fa0-a370-134fe9d16ce7}

相关文章:

WEB渗透—PHP反序列化(八)

Web渗透—PHP反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩…...

LeetCode——2415. 反转二叉树的奇数层

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff1a;给你一个完全二叉树&#xff0c;然后将其奇数层进行反转。思路&#xff1a;这个题他都说了是奇数层了&#xff0c;那基本就是层序遍历了。但是存在两个问题&#xff0c;一个是如何判断奇数层&#xff0c;另外一…...

【Spring学习笔记】Spring 注解开发

Spring学习——注解开发 注解开发注解开发定义bean纯注解开发 Bean管理bean作用范围bean生命周期 依赖注入自动装配 第三方bean管理注解开发总结XML配置与注解配置比较 注解开发 注解开发定义bean 使用Component定义开发 Component("bookDao") public class BookD…...

【华为数据之道学习笔记】6-5数据地图的核心价值

数据供应者与消费者之间往往存在一种矛盾&#xff1a;供应者做了大量的数据治理工作、提供了大量的数据&#xff0c;但数据消费者却仍然不满意&#xff0c;他们始终认为在使用数据之前存在两个重大困难。 1&#xff09;找数难 企业的数据分散存储在上千个数据库、上百万张物理表…...

JavaWeb笔记之JSP

一、引言 现有问题 在之前学习Servlet时&#xff0c;服务端通过Servlet响应客户端页面&#xff0c;有什么不足之处&#xff1f; 开发方式麻烦&#xff1a;继承父类、覆盖方法、配置Web.xml或注解。 代码修改麻烦&#xff1a;重新编译、部署、重启服务。 显示方式麻烦&#x…...

在x64上构建智能家居(home assistant)(二)(新版Debain12)连接Postgresql数据库

新版数据库安装基本和旧版相同,大部分可以参考旧版本在x64上构建智能家居(home assistant)&#xff08;二&#xff09;连接Postgresql数据库_homeassist 数据库-CSDN博客 新版本的home assistant系统安装,我在原来写的手顺上直接修改了,需要的可以查看在x64上构建智能家居(home…...

八股文打卡day6——计算机网络(6)

面试题&#xff1a;GET请求和POST请求的区别 我的回答&#xff1a; 1.作用不同&#xff1a;GET是用来获取服务器资源的;POST是用来向服务器提交资源的&#xff1b; 2.参数传递方式不同&#xff1a;GET请求参数一般写在URL中的&#xff0c;只能接收ASCII字符&#xff1b;POST的…...

【PHY6222】绑定详解

1.函数详解 bStatus_t GAPBondMgr_SetParameter( uint16 param, uint8 len, void* pValue ) 设置绑定参数。 bStatus_t GAPBondMgr_GetParameter( uint16 param, void* pValue ) 获取绑定参数。 param&#xff1a; GAPBOND_PAIRING_MODE&#xff0c;配对模式&#xff0c;…...

vue事件绑定

vue提供了v-on事件绑定指令&#xff0c;用来辅助程序员为DOM元素绑定事件监听&#xff0c;语法格式如下&#xff1a; v-on&#xff1a;指令可以简写为 注意&#xff1a;原生DOM对象有onclick&#xff0c;oninput&#xff0c;onkeyup等原生事件&#xff0c;替换为vue的事件绑定…...

如何在服务器上部署springboot项目

在服务器上部署Spring Boot项目通常有以下步骤&#xff1a; 在服务器上安装Java运行环境&#xff1a;首先确保服务器上已经安装了Java运行环境&#xff08;至少需要Java 8或以上版本&#xff09;。 快速安装JDK命令&#xff1a; yum install java-1.8.0-openjdk.x86_64 打包S…...

基于Spring Boot的支教志愿者招聘网站

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于Spring Boot的支教志愿者招聘网站,j…...

安装gnvm,nodejs,npm使用方法

安装gnvm,nodejs,npm使用方法 一、安装gnvm gnvm.exe下载地址&#xff1a; https://download.csdn.net/download/hsg77/88651752 http://ksria.com/gnvm/#download 二、配置gnvm环境变量 新建目录&#xff0c;如&#xff1a;d:/nodejs 并把gnvm.exe存储到此目录 并把d:/node…...

word导入导出-Apache POI 和 Poi-tl

word 文件读取 使用Apache POI Word 进行读取文件 使用poi 时如果报ClassNotFoundException 等错误&#xff0c;请注意请求以下maven 文件的版本 Apache POI Word 说明文档&#xff1a;Apache POI Word 说明文档 maven 解决依赖冲突教程&#xff1a;https://www.cnblogs.com/…...

Hadoop 集群环境搭建

目录 第一部分&#xff1a;系统安装... 3 1&#xff1a;图形化安装... 3 2&#xff1a;选择中文... 3 3&#xff1a;安装选项... 3 4&#xff1a;软件选项... 4 5&#xff1a;安装位置... 4 6&#xff1a;网络配置... 6 7&#xff1a;开始安装... 7 8&#xff1a;创建用户... 7…...

maven完结,你真的学完了吗

书接上文&#xff1a;必学的maven的起步-CSDN博客 分模块开发与设计 分模块开发&#xff1a; 创建模块书写代码模块 模块中需要其他的模块&#xff0c;就将他安装到仓库然后再dep中导入依赖通过maven指令安装模块到本地仓库&#xff08;install&#xff09; 聚合与继承 聚合…...

【Xcode】解决Unable to process request - PLA Update available

出现场景 IOS更新app时&#xff0c;使用Xcode上传新版本的包时&#xff0c;提示无法上传。 Unable to process request -PLA update available you currently dont have access to this membership resource. To resolve this issue ,agree to the latest program license a…...

力扣单调栈算法专题训练

目录 1 专题说明2 训练 1 专题说明 本博客用来计算力扣上的单调栈题目、解题思路和代码。 单调栈题目记录&#xff1a; 2232866美丽塔II 2 训练 题目1&#xff1a;2866美丽塔II。 解题思路&#xff1a;先计算出prefix[i]&#xff0c;表示0~i满足递增情况下&#xff0c;0~i…...

【NI-RIO入门】理解Windows、Real Time与FPGA之间数据通信的原理

于NI kb摘录 1.概述 对于NI RIO系列设备&#xff08;CompactRIO、sbRIO、myRIO等&#xff09;进行编程时&#xff0c;需要注意有三个不同的组件。 人机界面 (HMI) 。有时称为“主机”&#xff0c;为用户提供图形用户界面&#xff08;GUI&#xff09;&#xff0c;用于监控系统…...

关于游戏性能优化的技巧

关于游戏性能优化的技巧 游戏性能优化对象池Jobs、Burst、多线程间隔处理定时更新全局广播缓存组件缓存常用数据2D残影优化2D骨骼转GPU动画定时器优化DrawCall合批处理优化碰撞层优化粒子特效 游戏性能优化 好久没有在CSDN上面写文章了&#xff0c;今天突然看到鬼谷工作室技术…...

antdesignpro实现滚动加载分页数据

原理解析&#xff1a;每滚动一次相当于翻页&#xff0c;请求后端时给的页码参数要想办法加1&#xff0c;后端才能根据页码给出相应数据 注意后端收到页码参数之后要准确计算出每页的首行数据&#xff0c;关键逻辑代码&#xff1a; # 根据前端传的页码&#xff0c;进行计算下一…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

深度解析云存储:概念、架构与应用实践

在数据爆炸式增长的时代&#xff0c;传统本地存储因容量限制、管理复杂等问题&#xff0c;已难以满足企业和个人的需求。云存储凭借灵活扩展、便捷访问等特性&#xff0c;成为数据存储领域的主流解决方案。从个人照片备份到企业核心数据管理&#xff0c;云存储正重塑数据存储与…...