反序列化漏洞简单知识

目录:

        一、概念:

        二、反序列化漏洞原因

        三、序列化漏洞的魔术方法:

        四、反序列化漏洞防御:

一、概念:

        序列化:        

        Web服务器将HttpSession对象保存到文件系统或数据库中,需要采用序列化的方式将HttpSession对象中的每个属性对象保存到文件系统或数据库中;

        例子:

        反序列化:

        Web服务器将HttpSession对象从文件系统或数据库中装载如内存时,需要采用反序列化的方式,HttpSession对象中的每个属性对象。
        PHP反序列化漏洞也叫PHP对象注入,是一个非常常见的漏洞,这种类型的漏洞虽然有些难以利用,但一旦利用成功就会造成非常危险的后果。

二、反序列化漏洞原因:

        漏洞的形成的根本原因是程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。

        漏洞原因:

        漏洞的形成的根本原因是程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。
反序列化漏洞并不是PHP特有,也存在于Java、Python等语言之中,但其原理基本相通。

三、序列化漏洞的魔术方法:

        以_开头的的方法,是PHP中的魔术方法,在特定情况下会被自动调用:

        主要魔术方法及其触发条件如下:

        _construct():构造方法,当—个对象被创建时调用此方法.

        _destruct():析构方法,PHP将在对象被销毁前(即从内存中清除前)调用这个方法

        _autoload():使用尚未被定义的类时自动调用。通过此函数,脚本引擎在PHP出错失败前有了最后一个机会加载所需的类。

        _call( $method, $arg_array ):在对象中调用一个不可访问方法时

        _callstatic():在静态上下文中调用一个不可访问的方法时使用

        _clone():使用clone方法复制一个对象时

        _invoke():当尝试调用函数的方式调用一个对象时-

        __get( $property ):从不可访问的属性中读取数据

        _set( Sproperty, Svalue ):给一个未定义的属性赋值时调用

        _isset( Sproperty ):当在一个未定义的属性上调用isset()函数时调用此方法

        _unset( $property ):当在一个未定义的属性上调用unset()函数时调用此方法

        _tostring():在将一个对象转化成字符串时自动调用

        _sleep():序列化对象前调用(其返回需要是—个数组),详见补充说明

        _wakeup():反序列化恢复对象前调用,详见补充说明

        set_state():当调用var_export()时,这个静态方法会被调用

        _invoke():当尝试以调用函数的方式调用一个对象时,_invoke方法会被自动调用

        从序列化到反序列化这几个函数的执行过程是:

        _construct()->_sleep()_wakeup()->_tostring()->_destruct()

四、反序列化漏洞防御:

        1、严格控制unserialize函数的参数,坚持用户所输入的信息都是不可靠的原则;

        2、对于unserialize后的变量内容进行检查,以确定内容没有被污染;

        3、做好代码审计相关工作,提高开发人员的安全意识;

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

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

相关文章

Cobalt Strike -- 各种beacon

今天来讲一下cs里面的beacon 其实cs真的功能很强大,自带代理创建,自带beacon通信!!! 一张图,就能说明beacon的工作原理 1.Beacon 每当有一台机器上线之后,我们都会选择sleep时间,…

代码随想录算法训练营Day56 ||leetCode 583. 两个字符串的删除操作 || 72. 编辑距离

647. 回文子串 dp[i][j]表示第i位开始&#xff0c;第j位结束的字符串是否为回文串 class Solution { public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int result 0;for (int i s.size() - 1…

Redis 教程系列之Redis PHP 使用 Redis(十二)

PHP 使用 Redis 安装 开始在 PHP 中使用 Redis 前&#xff0c; 我们需要确保已经安装了 redis 服务及 PHP redis 驱动&#xff0c;且你的机器上能正常使用 PHP。 接下来让我们安装 PHP redis 驱动&#xff1a;下载地址为:https://github.com/phpredis/phpredis/releases。 P…

Java微服务分布式分库分表ShardingSphere - ShardingSphere-JDBC

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 往期热门专栏回顾 专栏…

垂直起降机场:飞行基础设施的未来是绿色的

电动垂直起降&#xff08;eVTOL&#xff09;飞机的日益发展为建立一个新的网络来支持它们提供了理由&#xff0c;这将推动开发绿色基础设施新模式的机会。这些电气化的“短途”客运和货运飞机通常被描述为飞行汽车&#xff0c;是区域飞行和城市出租车的未来&#xff0c;有可能提…

为什么 Hashtable 不允许插入 null 键 和 null 值?

1、典型回答 浅层次的来回答这个问题的答案是&#xff0c;JDK 源码不支持 Hashtable 插入 value 值为 null&#xff0c;如以下JDK 源码所示&#xff1a; 也就是JDK 源码规定了&#xff0c;如果你给 Hashtable 插入 value 值为 null 就会抛出空指针异常 并目看上面的JDK 源码可…

2024全新多语言海外抢单刷单系统源码 订单自动匹配 支持分组 代理后台

2024全新多语言海外抢单刷单系统源码 订单自动匹配 支持分组 代理后台 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/88948076 更多资源下载&#xff1a;关注我。

蓝桥杯基础练习详细解析一(代码实现、解题思路、Python)

试题 基础练习 数列排序 资源限制 内存限制&#xff1a;512.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 给定一个长度为n的数列&#xff0c;将这个数列按从小到大的顺序排列。1<n<200 输入格式 第…

吴恩达2022机器学习专项课程(一) 3.6 可视化样例

问题预览 1.本节课主要讲的是什么&#xff1f; 2.不同的w和b&#xff0c;如何影响线性回归和等高线图&#xff1f; 3.一般用哪种方式&#xff0c;可以找到最佳的w和b&#xff1f; 解读 1.课程内容 设置不同的w和b&#xff0c;观察模型拟合数据&#xff0c;成本函数J的等高线…

MQ领消息丢失方案

⼀、哪些场景会丢失消 业务场景&#xff1a;下单⽀付成功后、给⽤户发送消费 ⽤户反馈&#xff1a;⽀付成功以后&#xff0c;没有收到优惠券。原因&#xff1a;⽀付成功的消息丢失了 ⼆、可能丢失消息的环节&#xff1a; 1、订单系统&#xff08;⽣产者&#xff09;向MQ推送…

pytorch 实现线性回归 softmax(Pytorch 04)

一 softmax 定义 softmax 是多分类问题&#xff0c;对决策结果不是多少&#xff0c;而是分类&#xff0c;哪一个。 为了估计所有可能类别的条件概率&#xff0c;我们需要一个有 多个输出的模型&#xff0c;每个类别对应一个输出。为了解决线 性模型的分类问题&#xff0c;我们…

Linux cp、mv命令显示进度条

1.advcpmv 平常使用cp 拷贝大文件时&#xff0c;看不到多久可以完成&#xff0c;虽然加上-v参数也只能看到正在拷贝文件&#xff0c;那就使用以下方法实现 git clone https://github.com/jarun/advcpmv.git cd advcpmv/ bash install.shmv ./advcp /usr/local/bin/ mv ./advmv …

【旅游景点项目日记 | 第二篇】基于Selenium爬取携程网景点详细数据

文章目录 3.基于Selenium爬取携程网景点详细数据3.1前提环境3.2思路3.3代码详讲3.3.1查询指定城市的所有景点3.3.2获取详细景点的访问路径3.3.3获取景点的详细信息 3.4数据库设计3.5全部代码3.6效果图 3.基于Selenium爬取携程网景点详细数据 3.1前提环境 确保安装python3.x环…

生产力工具|安装更新R软件(R、studio)

内容介绍&#xff1a; 安装R软件&#xff1a; 下载 R X64 3.5.1: 访问官方R网站 https://cran.r-project.org/。选择适合Windows版本的安装包。将安装包下载到您的计算机。 本地安装: 运行下载的“R-3.5.1-win.exe”文件。按照安装向导&#xff0c;选择安装路径&#xff0c;取消…

Windows 进程权限浅谈 -- 提权 / 降权

在 Windows 上&#xff0c;用户对权限并不敏感&#xff0c;可能最为直观的是 UAC &#xff0c;但相信很多人已经关掉了它的提示。 但其实安全性早已深入了 Windows 的方方面面。Windows Vista 引入了一个称为强制完整性控制&#xff08;Mandatory Integrity Controls&#xff0…

BMS设计中的短路保护和MOSFET选型(上)

电池管理系统&#xff08;BMS&#xff09;是一种能够对电池进行监控和管理的电子装备&#xff0c;是电池与用户之间的纽带。通过对电压、电流、温度以及SOC等数据采集&#xff0c;计算进而控制电池的充放电过程&#xff0c;主要就是为了能够提高电池的利用率&#xff0c;防止电…

【Python从入门到进阶】51、电影天堂网站多页面下载实战

接上篇《50、当当网Scrapy项目实战&#xff08;三&#xff09;》 上一篇我们讲解了使用Scrapy框架在当当网抓取多页书籍数据的效果&#xff0c;本篇我们来抓取电影天堂网站的数据&#xff0c;同样采用Scrapy框架多页面下载的模式来实现。 一、抓取需求 打开电影天堂网站&…

Ubuntu Desktop 更改默认应用程序 (Videos -> SMPlayer)

Ubuntu Desktop 更改默认应用程序 [Videos -> SMPlayer] References System Settings -> Details -> Default Applications 概况、默认应用程序、可移动介质、法律声明 默认应用程序&#xff0c;窗口右侧列出了网络、邮件、日历、音乐、视频、照片操作的默认应用程序…

OCR如何解决字体多样性难题?

OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;技术的确是一项非常实用的技术&#xff0c;能够将图像中的文字转化为可编辑的文本&#xff0c;大大提高了工作效率。然而&#xff0c;你所遇到的问题——字体多样性导致的模型泛化能力不足&a…

AtCoder Regular Contest 175(A~B)

补题&#xff1a;A - Spoon Taking Problem 阅读理解就能劝退好多人&#xff0c;先看B题可能收益会更高。 N个人都是这么坐的&#xff0c;勺子标号也给你标好了。 如果 s[1]L&#xff0c;那么1这个人就要拿左边的勺子&#xff0c;如果左边没有就拿右边的&#xff0c;右边也没…