web——php反序列化,pop链构造


前置知识

序列化

会变成这样

序列化解释

反序列化

public,private,protetced

当它是private时

当他是protetcted

当我在类之后在创建一个类

反序列化只可以改变变量,然后不可以自己调用里面的函数,只可以用它给出的函数调用

安全问题

——construct是构造函数

——destruct是析构函数

当我这么调用函数时

只会输出变量

当我没有创建新的对象,只将序列化后的字符串进行反序列化,它会调用析 构函数

test也被触发了,明明没有创建对象

to_string函数

所以会输出tostring

当我们这么做时

当我们不创建对象

输入 编译后的payload,也会自动执行析构函数

重要

跟前面一样,它会自动析构,

我们可以修改url

改成3,ver,他就会只执行ver

ctf反序列化问题

第一

第二

我们得尝试更改isvip中的值改为false,才可以输出flag

我们根据上面的知识3         将halse改成true

第三

前面要求要求密码相同,后面要求密码不同

改成这样

第四关

出现了多个class,还有eval

这里只可以用destruct这个魔术方法

而destruct这个函数下面的变量是上面new的一个对象

当我们直接将原函数序列化

所以我么改成backdoor

然后再改变code

第五关

出现了过滤意思是匹配o或c后面带有数字的,(i代表大小写)

之前的那个

o后面就有11,匹配到了无法继续执行

就如这样

所以我们就得将11改成+11这样就看避免数组直接接触

先将他序列化,然后再编码

第六关

前置知识

用php原生类

这个原生类是php自带的

__sleep()

序列化之前调用 的函数

它会调用sleep函数

然后不返回password

__wakeup()

__tostring()

echo会把对象当成字符串,所以会触发__tostring()

--invoke()

—call

当我们调用一个不存在的函数,这个函数不存在

——callstatic

 __get()

__set()

_isset()

_unset()

__clone()

魔术方法总结

pop链前置知识(tostring和wakeup的使用)

l

当我想触发__tostring时,我们得使用上面的source,让source变成一个对象,这样——tostring()刚好能触发,所以我们这么构造

pop链构造(所以函数的触发)

找小括号,就是当成函数使用的变量

首先我们想得到flag就得使用involve这个函数,而它又由invoke来调用,所以我们就得想办法触发这个函数,就找下面有没有将变量当函数使用的就发现第22是这样的

构造推到

然后这么写

字符串逃逸(字符串减少)

序列化代码一般以}结束,以;来分隔

当我们再后面随便写东西,不会影响反序列化

加成员属性不会报错

它会将system给去掉,但最终无法反序列化,因为长度不一样

所以我们这么构造

例题

字符串增多

例题

wakeup()绕过

引用绕过

这么构造

session反序列化

第一种格式

第二种格式

第三种

漏洞(当seesion序列化和反序列化用不同的方式时会造成这个漏洞)

在save.php中,存入session并且将其序列化,当我们打开vul.php就会将这个session反序列化,就跟unserialize一样,自动执行,而默认的就会从|开始读

phar反序列化漏洞

一般改这个

例题

这里没有反序列化,但我们看到了file_exists这个函数

返回true说明有这个文件,就可以触发漏洞

就可以调用这个为协议

改成jpg也可以,都可以当初phar执行、

——————图片取自b站橙子科技工作室,小迪

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue文档

Vue是什么?为什么要学习他 Vue是什么? Vue是前端优秀框架, 是一套用于构建用户界面的渐进式框架 为什么要学习Vue Vue是目前前端最火的框架之一Vue是目前企业技术栈中要求的知识点Vue可以提升开发体验Vue学习难度较低… Vue开发前的准备 安…

2024智能计算、大数据应用与信息科学国际会议(ICBDAIS2024)

2024智能计算、大数据应用与信息科学国际会议(ICBDAIS2024) 会议简介 智能计算、大数据应用与信息科学之间存在相互依存、相互促进的关系。智能计算和大数据应用的发展离不开信息科学的支持和推动,而信息科学的发展又需要智能计算和大数据应用的不断拓展和应用。智…

海山数据库(He3DB)技术干货:StarRocks Compaction机制解析及性能调优

以StarRocks 新发布的3.2.1版本为基准,剖析了Compaction任务管理器设计架构,分析了基于Size-Tiered挑选rowset进行Compaction的策略,介绍了Compaction的调度执行流程。最后,针对两种常见问题场景,给出Compaction性能调…

LeetCode-139. 单词拆分【字典树 记忆化搜索 数组 哈希表 字符串 动态规划】

LeetCode-139. 单词拆分【字典树 记忆化搜索 数组 哈希表 字符串 动态规划】 题目描述:解题思路一:Python动态规划五部曲:定推初遍举【先遍历背包 后遍历物品】必须是排列解题思路二:Python动态规划版本二解题思路三:回…

tensorflow.js 使用 opencv.js 将人脸特征点网格绘制与姿态估计线绘制结合起来,以获得更高的帧数

系列文章目录 如何在前端项目中使用opencv.js | opencv.js入门如何使用tensorflow.js实现面部特征点检测tensorflow.js 如何从 public 路径加载人脸特征点检测模型tensorflow.js 如何使用opencv.js通过面部特征点估算脸部姿态并绘制示意图 文章目录 系列文章目录前言一、实现步…

实验:基于Red Hat Enterprise Linux系统建立逻辑卷并进行划分

目录 一. 实验目的 二. 实验内容 三. 实验设计描述及实验结果 1. 为虚拟机添加三块大小为5GB的磁盘nvme0n2 nvme0n3 nvme0n4 2. 将三块硬盘转换为物理卷,并将nvme0n2 nvme0n3两pv建立成名为"自己名字_vg“的卷组,并将nvme0n4扩展进该卷组。 LVM管…

基于单片机四路继电器温湿度控制

**单片机设计介绍, 基于单片机四路继电器温湿度控制 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机四路继电器温湿度控制的设计是一种能够实现精确环境调控的智能化系统。它利用单片机作为核心控制器&…

渗透测试面试题汇总(全)

思路流程 信息收集漏洞挖掘漏洞利用&权限提升清除测试数据&输出报告复测 问题深信服一面:SQL注入防护为什么参数化查询可以防止sql注入SQL头注入点盲注是什么?怎么盲注?宽字节注入产生原理以及根本原因 产生原理在哪里编码根本原因解决办法sql里…

力扣刷题Days33-274. H 指数(js)

目录 1,题目 2,代码 2.1排序 2.2计数排序 3,学习与总结 3.1排序实现的学习总结 3.2计数排序的学习总结 1,题目 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返…

Java 线程池 参数

1、为什么要使用线程池 线程池能有效管控线程,统一分配任务,优化资源使用。 2、线程池的参数 创建线程池,在构造一个新的线程池时,必须满足下面的条件: corePoolSize(线程池基本大小)必须大于…

1.Spring的核心思想 —— IOC和DI

1. Spring是什么? 简单的说,Spring其实指的是Spring Framework(Spring框架),是一个开源框架。 如果要用一句话概括:它是包含众多工具方法的IOC(Inverse of Control控制反转)容器。…

【THM】Net Sec Challenge(网络安全挑战)-初级渗透测试

介绍 使用此挑战来测试您对网络安全模块中获得的技能的掌握程度。此挑战中的所有问题都可以仅使用nmap、telnet和来解决hydra。 挑战问题 您可以使用Nmap、 Telnet 和Hydra回答以下问题。 2.1小于10000的最大开放端口号是多少? 8080 nmap -p- -T4 10.10.234.218 2.2普通…

Java入门-java的方法

java方法 java的方法是用来完成某种功能的代码块。使用方法封装代码块,可以提高代码的可复用性,模块化,使用者无需知道代码的具体实现也能通过方法调用使用其提供的功能,简化了应用过程。 方法结构 一般一个方法的构成有如图几部…

【C++】vector问题解决(非法的间接寻址,迭代器失效 , memcpy拷贝问题)

送给大家一句话: 世界在旋转,我们跌跌撞撞前进,这就够了 —— 阿贝尔 加缪 vector问题解决 1 前言2 迭代器区间拷贝3 迭代器失效问题4 memcpy拷贝问题 1 前言 我们之前实现了手搓vector,但是当时依然有些问题没有解决&#xff…

HarmonyOS 开发-多模态页面转场动效实现案例

介绍 本示例介绍多模态页面转场动效实现:通过半模态转场实现半模态登录界面,通过配置NavDestinationMode类型为DIALOG,实现半模态的背景为透明,再与 全屏模态和组件转场结合实现多模态组合登录场景,其中手机验证码登录…

基于springboot+vue+Mysql的学习平台

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

【Web】CTFSHOW-2023CISCN国赛初赛刷题记录(全)

目录 Unzip BackendService go_session deserbug 主打一个精简 Unzip 进来先是一个文件上传界面 右键查看源码,actionupload.php 直接访问/upload.php,看到后端的源码 就是上传一个压缩包,对其进行解包处理 因为其是在/tmp下执行…

ip地址切换器安卓版,保护隐私,自由上网

在移动互联网时代,随着智能手机和平板电脑的普及,移动设备的网络连接变得愈发重要。为了满足用户在不同网络环境下的需求,IP地址切换器安卓版应运而生。本文将以虎观代理为例,为您详细解析IP地址切换器安卓版的功能、应用以及其所…

机器学习 基础 笔记 1

train阶段就是正常的学习 validation是知道正确答案是啥,检查正确率 test是不知道正确答案是啥,看看有啥结果 训练的时候记得model.train 测试(后面两种都是)的时候要model.eval (有些模型两种阶段做的事不一样&a…

不要抱怨,不如抱 Java 运算符吧 (下篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接…