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

寒假学web--day10

简介

一些高级的反序列化

phar反序列化

phar类似于java的jar包,将多个php文件合并为独立的压缩包,不用解压就能执行里面的php文件,支持web服务器和命令行

metadata

$phar->setmetadata($h);

metadata可以存放一个类实例,生成phar文件后,会把这个类实例以序列化字符串的形式存放至phar文件内

phar协议

phar://xxx.phar

当使用phar协议加载phar文件时,会自动反序列化这个类的的序列化字符串

生成phar包时,可以往metadata里面放对象,生成后,对象会自动序列化保存到ohar包中,使用phar协议读取phar包时,如果当前脚本识别了这个类,会自动调用这个类的魔术方法

可以触发phar反序列化的函数

include

file_exists

file_get_contents

file_put_contents

require

fileinode

filetime

filesize

is_dir

scandir

highlight_file   

通过phar协议包含phar文件,都可以触发phar反序列化

也可以在.user.ini文件里写auto_append_file=phar://xxx.phar

应用

要求:能够写phar包并上传,有可以利用的函数,并能控制协议头,使用phar协议解析,有可以利用的恶意类

首先利用脚本生成phar文件

如果有上传点,上传文件的前半部分可控,后缀有过滤,不能是php,phps,pthmml,ini但是没有禁止phar文件,我们找到大量使用的file_exits等文件读取函数,通过控制phar://头,来使用phar协议来解析phar包,就能自动进行反序列化

session反序列化

tips

php的session存放在文件中,默认位置是/tmp/sess_PHPSESSID

session可以是字符串,数字,也可以是对象,session里面存放对象时,会自动进行序列化,存放的是序列化后的字符串,session里面拿取对象时,会自动进行反序列化,执行对象的魔术方法

session序列化处理器

不同session序列化处理器的处理方式不同

php处理器

通过|分割类和key

u|O:4:"user":2:{s:8:"username";N;s:8:"password";N;}

u表示session的key,后面的表示类

php_serialize处理器

用数组存session的key和类

a:1:{s:1:"u";O:4:"user":2:{s:8:"username";N;s:8:"password";N;}}

应用

如果我们使用php_serialize处理器,并给username赋值

admin|O:4:"user":2:{s:8:"username";N;s:8:"password";N;}

此时session里存放的内容就会变成

a:1:{s:1:"u";O:4:"user":2:{s:8:"username";s:57:"admin|O:4:"user":2:{s:8:"username";N;s:8:"password";N;}";s:8:"password";N;}}

这是虽然没有逃逸出来,但是如果我们换成php处理器,并使用相同的cookie来访问,php从session文件里拿取这个对象时,就会认为|左边的时key,将右边的对象反序列化

这是存取的处理器不一致导致的漏洞

构造pop链并上传

我们分析类,得出读flag的payload

我们可以利用PHP的强制文件上传来上传我们构造的payload,我们可以上传文件上传的进度PHP_SESSION_UPLOAD_PROGRESS

需要写脚本,我们给PHP_SESSION_UPLOAD_PROGRESS上传进度值,123(任意数字),然后上传一个文件,filename为payload,内容随意

前面我们了解到强制上传的文件会存到临时的session文件里,由于开启了session,写进去后,当我们用相同的cookie再去访问时,服务器就会从我们刚刚的session文件里解析我们的payload,就会反序列化里面的内容,从而触发魔法函数

相关文章:

寒假学web--day10

简介 一些高级的反序列化 phar反序列化 phar类似于java的jar包,将多个php文件合并为独立的压缩包,不用解压就能执行里面的php文件,支持web服务器和命令行 metadata $phar->setmetadata($h); metadata可以存放一个类实例,…...

【全栈】SprintBoot+vue3迷你商城(9)

【全栈】SprintBootvue3迷你商城(9) 往期的文章都在这里啦,大家有兴趣可以看一下 后端部分: 【全栈】SprintBootvue3迷你商城(1) 【全栈】SprintBootvue3迷你商城(2) 【全栈】Spr…...

系统思考—问题分析

很多中小企业都在面对转型的难题:市场变化快,资源有限,团队协作不畅……这些问题似乎总是困扰着我们。就像最近和一位企业主交流时,他提到:“我们团队每天都很忙,但效率始终没见提升,感觉像是在…...

系统架构设计师教材:信息系统及信息安全

信息系统 信息系统的5个基本功能:输入、存储、处理、输出和控制。信息系统的生命周期分为4个阶段,即产生阶段、开发阶段、运行阶段和消亡阶段。 信息系统建设原则 1. 高层管理人员介入原则:只有高层管理人员才能知道企业究竟需要什么样的信…...

美国三种主要的个人数据产业模式简析

文章目录 前言一、个人征信(Credit Reporting)模式1、定义:2、特点:数据来源:核心功能:服务对象:代表性公司:监管框架:示例应用:二、面向垂直场景的个人数据公司(Consumer Reporting,消费者报告模式)1、定义:2、特点:数据来源:核心功能:服务对象:主要公司:监…...

js手撕 | 使用css画一个三角形 使用js修改元素样式 驼峰格式与“-”格式相互转化

1.使用css画一个三角形 借助 border 实现,在 width 和 height 都为 0 时,设置 border,便会呈现三角形。想要哪个方向的三角形,设置其他三边为 透明即可。同时,可以通过调整不同边的宽度,来调整三角形的高度…...

每日一道算法题

题目:最长递增子序列的个数 给定一个未排序的整数数组,找到最长递增子序列的个数。 示例 1 输入:nums [1,3,5,4,7]输出:2解释:有两个最长递增子序列,分别是 [1,3,4,7] 和 [1,3,5,7] 。 示例 2 输入&a…...

低代码系统-产品架构案例介绍、明道云(十一)

明道云HAP-超级应用平台(Hyper Application Platform),其实就是企业级应用平台,跟微搭类似。 通过自设计底层架构,兼容各种平台,使用低代码做到应用搭建、应用运维。 企业级应用平台最大的特点就是隐藏在冰山下的功能很深&#xf…...

论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(三)

Understanding Diffusion Models: A Unified Perspective(三) 文章概括 文章概括 引用: article{luo2022understanding,title{Understanding diffusion models: A unified perspective},author{Luo, Calvin},journal{arXiv preprint arXiv:…...

利用机器学习创建基于位置的推荐程序

推荐系统被广泛应用于不同的应用程序中,用于预测用户对产品或服务的偏好或评价。在过去的几分钟或几小时里,你很可能在网上遇到过或与某种类型的推荐系统进行过互动。这些推荐系统有不同的类型,其中最突出的包括基于内容的过滤和协作过滤。在…...

每日一题 429. N 叉树的层序遍历

429. N 叉树的层序遍历 /*class Solution { public:vector<vector<int>> levelOrder(Node* root) {queue<Node*> que;que.push(root);vector<vector<int>> ans;if(root nullptr){return ans;}while(!que.empty()){int sizeQue que.size();vec…...

AIP-132 标准方法:List

编号132原文链接AIP-132: Standard methods: List状态批准创建日期2019-01-21更新日期2022-06-02 在许多API中&#xff0c;通常会向集合URI&#xff08;例如 /v1/publishers/1/books &#xff09;发出GET请求&#xff0c;获取集合中资源的列表。 面向资源设计&#xff08;AIP…...

CSAPP学习:前言

前言 本书简称CS&#xff1a;APP。 背景知识 一些基础的C语言知识 如何阅读 Do-做系统 在真正的系统上解决具体的问题&#xff0c;或是编写和运行程序。 章节 2025-1-27 个人认为如下章节将会对学习408中的操作系统与计算机组成原理提供帮助&#xff0c;于是先凭借记忆将其简单…...

【统计的思想】假设检验(二)

假设检验是根据人为设定的显著水平&#xff0c;对被测对象的总体质量特性进行统计推断的方法。 如果我们通过假设检验否定了零假设&#xff0c;只是说明在设定的显著水平下&#xff0c;零假设成立的概率比较小&#xff0c;并不是说零假设就肯定不成立。如果零假设事实上是成立…...

KNN算法学习实践

1.理论学习 原文链接 ShowMeAI知识社区 2.案例实践 假如一套房子打算出租&#xff0c;但不知道市场价格&#xff0c;可以根据房子的规格&#xff08;面积、房间数量、厕所数量、容纳人数等&#xff09;&#xff0c;在已有数据集中查找相似&#xff08;K近邻&#xff09;规格…...

数据可视化的图表

1.折线图反映了一段时间内事物连续的动态变化规律,适用于描述一个变量随另一个变量变化的趋势,通常用于绘制连续数据,适合数据点较多的情况。 2.散点图是以直角坐标系中各点的密集程度和变化趋势来表示两种现象间的相关关系&#xff0c;常用于显示和比较数值。当要在不考虑时间…...

动手学深度学习-卷积神经网络-3填充和步幅

目录 填充 步幅 小结 在上一节的例子&#xff08;下图&#xff09; 中&#xff0c;输入的高度和宽度都为3&#xff0c;卷积核的高度和宽度都为2&#xff0c;生成的输出表征的维数为22。 正如我们在 上一节中所概括的那样&#xff0c;假设输入形状为nhnw&#xff0c;卷积核形…...

【JS|第28期】new Event():前端事件处理的利器

日期&#xff1a;2025年1月24日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…...

Spring Boot 中的事件发布与监听:深入理解 ApplicationEventPublisher(附Demo)

目录 前言1. 基本知识2. Demo3. 实战代码 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 基本的Java知识推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&am…...

【Spring】Spring启示录

目录 前言 一、示例程序 二、OCP开闭原则 三、依赖倒置原则DIP 四、控制反转IOC 总结 前言 在软件开发的世界里&#xff0c;随着项目的增长和需求的变化&#xff0c;如何保持代码的灵活性、可维护性和扩展性成为了每个开发者必须面对的问题。传统的面向过程或基于类的设计…...

45V耐压CSM7345SG ESOP8,可调12V输出+使能端+散热片,低压差线性稳压器

CSM7345 ESOP8可调12V输出带使能端 全方案深度分析我会从芯片核心特性、12V输出原理、使能端设计、电路参数计算、保护机制、PCB设计要点等维度&#xff0c;做完整的工程级拆解&#xff0c;帮你彻底吃透这个方案。一、芯片核心特性&#xff08;适配12V输出的关键参数&#xff0…...

intv_ai_mk11惊艳效果展示:输入‘设计一个碳中和主题PPT’→大纲+每页文案+视觉建议

intv_ai_mk11惊艳效果展示&#xff1a;输入设计一个碳中和主题PPT→大纲每页文案视觉建议 1. 效果预览&#xff1a;从简单指令到完整PPT方案 当我向intv_ai_mk11输入"设计一个碳中和主题PPT"这个简单指令时&#xff0c;它在30秒内就生成了一个专业级的完整方案。这…...

router.push(‘/‘)跳转不触发重定向

我来帮你分析为什么 router.push(/) 没有按照预期跳转到 /fenlei 路径。 首先让我查看相关的代码文件&#xff1a; router/index.js{path: /,component: Layout,redirect: /fenlei},已查看文件 index.vue 225-240 已查看文件 index.js 65-85 现在让我查看更多上下文&#xff0c…...

Steam API集成:构建智能游戏生态的完整PHP解决方案

Steam API集成&#xff1a;构建智能游戏生态的完整PHP解决方案 【免费下载链接】Steam A composer package to make use of the steam web api. 项目地址: https://gitcode.com/gh_mirrors/stea/Steam 在当今游戏开发和社区管理领域&#xff0c;与Steam平台的深度集成已…...

SeamlessM4T v2:如何突破语言障碍的5个实用技巧

SeamlessM4T v2&#xff1a;如何突破语言障碍的5个实用技巧 【免费下载链接】seamless-m4t-v2-large 项目地址: https://ai.gitcode.com/hf_mirrors/ai-gitcode/seamless-m4t-v2-large 想象一下这样的场景&#xff1a;你在参加一个国际会议&#xff0c;演讲者正在用你听…...

腾讯 CodeBuddy 全形态解析:IDE、CLI 与插件如何重塑 AI 编程体验

1. CodeBuddy 三形态全景解析&#xff1a;从终端到桌面的AI编程革命 第一次用CodeBuddy的CLI工具时&#xff0c;我在终端里输入"帮我写个Python爬虫抓取天气数据"&#xff0c;三秒钟后看着自动生成的完整代码&#xff0c;手里的咖啡差点洒在键盘上。这就是腾讯CodeB…...

Oracle 身份证号码解析与年龄计算实战指南

1. 身份证号码解析基础 身份证号码作为个人身份标识&#xff0c;蕴含着丰富的个人信息。在Oracle数据库中处理身份证数据时&#xff0c;首先需要理解其编码规则。我国现行18位身份证号码由6位地区码、8位出生日期、3位顺序码和1位校验码组成。其中第7到14位就是关键的出生日期信…...

Go语言中的网络编程

Go语言中的网络编程 1. 网络编程的基本概念 网络编程是指编写在网络上进行通信的程序。在Go语言中&#xff0c;网络编程主要通过net包来实现&#xff0c;支持TCP、UDP、HTTP等多种协议。 2. TCP服务器 2.1 基本TCP服务器 package mainimport ("fmt""net" )…...

TOAST UI Chart折线图实战:实时数据更新与同步工具提示完整指南

TOAST UI Chart折线图实战&#xff1a;实时数据更新与同步工具提示完整指南 【免费下载链接】tui.chart &#x1f35e;&#x1f4ca; Beautiful chart for data visualization. 项目地址: https://gitcode.com/gh_mirrors/tu/tui.chart TOAST UI Chart是一款功能强大的数…...

手机也能跑AI?实测3B以下小模型在安卓/iOS端的部署教程(附性能对比)

手机端AI模型实战&#xff1a;3B以下小模型在安卓/iOS的部署与优化指南 当ChatGPT需要数据中心级算力支撑时&#xff0c;你可能没想到自己的手机也能运行类似技术。本文将带你探索移动端AI部署的完整方案——从Termux环境配置到CoreML模型转换&#xff0c;实测Redmi Note 12 Tu…...