位置: 编程技术 - 正文

深入浅析PHP的session反序列化漏洞问题(php sid)

编辑:rootadmin

推荐整理分享深入浅析PHP的session反序列化漏洞问题(php sid),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php-s,php-s,phpsh,phpsh,phpseclib,php-s,phpseclib,php-s,内容如对您有帮助,希望把文章链接给更多的朋友!

在php.ini中存在三项配置项:

以上的选项就是与PHP中的Session存储和序列话存储有关的选项。

在使用xampp组件安装中,上述的配置项的设置如下:

在上述的配置中,session.serialize_handler是用来设置session的序列话引擎的,除了默认的PHP引擎之外,还存在其他引擎,不同的引擎所对应的session的存储方式不相同。

php_binary:存储方式是,键名的长度对应的ASCII字符+键名+经过serialize()函数序列化处理的值

php:存储方式是,键名+竖线+经过serialize()函数序列处理的值

php_serialize(php>5.5.4):存储方式是,经过serialize()函数序列化处理的值

在PHP中默认使用的是PHP引擎,如果要修改为其他的引擎,只需要添加代码ini_set('session.serialize_handler', '需要设置的引擎');。示例代码如下:

session 的目录在 /var/lib/php/sessions 中

在 php_serialize 引擎下,session文件中存储的数据为:

php 引擎下文件内容为:

php_binary 引擎下文件内容为:

由于name的长度是4,4在ASCII表中对应的就是EOT。根据php_binary的存储规则,最后就是names:6:"spoock";。(突然发现ASCII的值为4的字符无法在网页上面显示,这个大家自行去查ASCII表吧)

PHP Session中的序列化危害

PHP中的Session的实现是没有的问题,危害主要是由于程序员的Session使用不当而引起的。

如果在PHP在反序列化存储的$_SESSION数据时使用的引擎和序列化使用的引擎不一样,会导致数据无法正确第反序列化。通过精心构造的数据包,就可以绕过程序的验证或者是执行一些系统的方法。例如:

php文件如:

深入浅析PHP的session反序列化漏洞问题(php sid)

访问后得到session文件中的内容如下:

但此时模拟在其他页面使用不同的php引擎来读取时的内容如下:(默认使用php引擎读取session文件)

访问该页面输出xx

这是因为当使用php引擎的时候,php引擎会以|作为作为key和value的分隔符,那么就会将 a:1:{s:4:"ryat";s::" 作为SESSION的key,将 O:1:"A":1:{s:1:"a";s:2:"xx";} 作为value,然后进行反序列化,最后就会得到A这个类。

这种由于序列话化和反序列化所使用的不一样的引擎就是造成PHP Session序列话漏洞的原因。漏洞在加载使用php引擎的页面时session去读session中的内容并反序列化导致漏洞触发,不需要任何输出

GCTF上的一道session反序列化漏洞分析:

index.php中内容为:

在php中,经常会使用序列化操作来存取数据,但是在序列化的过程中如果处理不当会带来一些安全隐患。

query.php 中的内容为:

思路如下:

这题中我们构造一个TOPC,在析构的时候则会调用echo $this->attr;;

将attr赋值为TOPB对象,在echo TOPB的时候会自动调用__tostring魔术方法

在__tostring中会调用unserialize($this->attr),因为后面用到token和ticket,所以显然时TOPA对象。后面判断需要$this->obj->token === $this->obj->ticket,所以在序列化的时候进行指针引用使$a->ticket = &$a->token;,即可绕过判断。

至于为什么(string)$this->obj会输出flag,后台写的login可能是__tostring吧。

其中反序列化字符串中会有一个__wakeup()函数清空里面的参数,我问可以通过一个cve来绕过:CVE--。将Object中表示数量的字段改成比实际字段大的值即可绕过wakeup函数。

最后的代码为:

最终payload为:

以上所述是小编给大家介绍的PHP的session反序列化漏洞,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面) 首先来看一下我已经实现的效果图:消费者页面:(本篇随笔)(1)会显示店主的头像(2)当前用户发送信息显示在右侧,接受的信息,显示在左侧店

详解Yii2 之 生成 URL 的方法 前言在项目中,推荐使用Yii2内置的URL工具类生成链接,这样可以非常便捷的管理整站的URL行为:比如通过修改配置改变整站的URL格式等。URL更多高级的

详解Yii2.0使用AR联表查询实例 Yii2.0中使用联表查询有两种办法,第一种是查询构建器(QueryBuilder),第二种使用活动记录(ActiveRecord),中文网对查询构建器讲的很详细,AR则说的很

标签: php sid

本文链接地址:https://www.jiuchutong.com/biancheng/293238.html 转载请保留说明!

上一篇:iis 7下安装laravel 5.4环境的方法教程

下一篇:PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)

  • PHP:virtual()的用法_Apache函数(php vr)

    PHP:virtual()的用法_Apache函数(php vr)

  • sql语句中单引号嵌套问题(一定要避免直接嵌套)(sql语句中单引号是什么)

    比如下面例子是存储过程里查询时的语句示例

    红色部分是会报错的,应该写成 @condition= 'ROOMTYPElike ‘ ‘%标准间%' ‘ ', 蓝色部分不是双引号,而是两个单引号

    谈谈sqlserver自定义函数与存储过程的区别 一、自定义函数:1.可以返回表变量2.限制颇多,包括不能使用output参数;不能用临时表;函数内部的操作不能影响到外部环境;不能通过select返回结果

    深入分析SqlServer查询计划 对于SQLServer的优化来说,优化查询可能是很常见的事情。由于数据库的优化,本身也是一个涉及面比较的广的话题,因此本文只谈优化查询时如何看懂SQ

    sql 判断字符串中是否包含数字和字母的方法 判断是否含有字母selectPATINDEX('%[A-Za-z]%',‘ads')=0(如果存在字母,结果1)判断是否含有数字PATINDEX('%[0-9]%',‘sdf" class="img-responsive" alt="sql语句中单引号嵌套问题(一定要避免直接嵌套)(sql语句中单引号是什么)">

    sql语句中单引号嵌套问题(一定要避免直接嵌套)(sql语句中单引号是什么)

  • 阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法(阿里云linux 服务器 字符集)

    阿里云Linux CentOS 7.2下自建MySQL的root密码忘记的解决方法(阿里云linux 服务器 字符集)

  • Win10 10565预览版新功能 虚拟机中运行虚拟机(w10预览版新功能)

    Win10 10565预览版新功能 虚拟机中运行虚拟机(w10预览版新功能)

  • macOS Sierra更新了什么?苹果macOS Sierra新特性汇总(macos sierra版本10.12.6升级)

    macOS Sierra更新了什么?苹果macOS Sierra新特性汇总(macos sierra版本10.12.6升级)

  • windows在无网络的情况下截取图片的方法(windows没网络是怎么回事)

    windows在无网络的情况下截取图片的方法(windows没网络是怎么回事)

  • 找回删除的文件方法小结(手机找回删除的文件)

    找回删除的文件方法小结(手机找回删除的文件)

  • Win10预览版10576更新内容汇总(windows 10预览版)

    Win10预览版10576更新内容汇总(windows 10预览版)

  • Javascript实现图片轮播效果(二)图片序列节点的控制实现(javascript图片)

    Javascript实现图片轮播效果(二)图片序列节点的控制实现(javascript图片)

  • jQuery基本选择器(实例及表单域value的获取方法)(jQuery基本选择器总结)

    jQuery基本选择器(实例及表单域value的获取方法)(jQuery基本选择器总结)

  • 非居民企业享受协定待遇
  • 人力资源外包可以选择简易计税吗
  • 什么叫应纳税所得额
  • 新入股的钱入什么科目
  • 专票打印偏下可以用吗
  • 付款给对方未开具发票
  • 分公司非独立核算是什么意思
  • 存货盘点科目
  • 房屋租赁费如何计提
  • 内部企业借款利息在建工程资本化
  • 预付款发票未到如何入成本
  • 赠品折扣计算法
  • 应收应付明细表模板图片
  • 出口货物退税率查询
  • 抬头是别的公司怎么报销
  • 企业增值税留抵退税新闻稿范文
  • 租金发票会计分录
  • 提高主营业务收入的意义
  • 收购药材再销售可以免税
  • 坏账的计提和发生分录
  • 公司账户怎么走账
  • 委托出口业务的账务如何处理呢?
  • 拆迁补偿款需要交企业所得税吗
  • 空调计入什么会计科目二级
  • 汇算清缴当年分配的股息红利
  • linux如何使用
  • 鸿蒙系统小艺怎么改声音
  • php 字符串函数
  • 餐饮业原料采购都包括哪些
  • 草丛里的野花像
  • php通用分页类
  • 经营性存款人违反规定
  • 《ai人工智能》
  • thinkphp常用函数
  • Nat Biotechnol –精准 CRISPR-Cas噬菌体疗法将为重症感染患者带来福音
  • php封装数据库操作
  • 增值税报税后多久缴纳期限
  • 销售折扣购物卡怎么做账
  • 500元以下开收据要交税吗
  • 企业购进商品支付货款时,实际发生现金折扣,应计入
  • 现金流量表中有应收账款吗
  • 企业发生的咨询费应计入哪个科目
  • 以前年度损益调整会计分录
  • mongodb怎么导入文件
  • 增值税发票过了两个月怎么作废
  • 购买办公用品没有发票可以入账吗
  • 开出去的发票没有进项发票怎么核算成本?
  • 用人单位劳务派遣人员工资怎么做账
  • 没有销售怎么写总结
  • 购买机器的会计分录
  • 费用发票的种类
  • 年末出现打一数字
  • 子公司和区域公司的区别
  • 久期缺口计算公式解析
  • mysql安装配置教程5.7.16
  • sql server删除重复数据保留一条
  • windows xp简单操作教程
  • redhat常用命令总结
  • linux如何替换
  • VMware虚拟机安装miui14
  • win7系统cpu占用率过高怎么办
  • ubuntu16.04添加用户
  • xp系统个性化
  • xp系统桌面图标怎么设置
  • win10系统宽带连接错误解决方法
  • macbook xcode
  • bootstrap不支持ie
  • 考四级题型
  • ztree拖动
  • node+mongodb
  • android studio官网
  • 编写shell脚本,实现备份文件:每天18:00归档
  • js每天的定时任务
  • JavaScript jquery及AJAX小结
  • python async
  • 工会经费税务代收
  • 简并税率是什么意思
  • 代理记账广告语怎么写
  • 撤销存款证明需要什么手续
  • 最近领导故意挑事
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设