CVE-2016-7124漏洞复现

__wakeup()魔术方法绕过

实验环境

操作机:Windows 10

服务器:apache 2.4

数据库:mysql 5.0

PHP版本:5.5

漏洞影响版本:

PHP5 < 5.6.25

PHP7 < 7.0.10

漏洞产生原因:

如果存在__wakeup方法,调用 unserilize() 方法前则先调用__wakeup方法,但是序列化字符串中表示对象属性个数的值大于 真实的属性个数时会跳过__wakeup的执行

漏洞复现

编写测试脚本

Test1.php

脚本上标明接收s参数,对其反序列化后输出name属性的值

访问test1.php

根据代码可以看出反序列化之前先调用了__wakeup 方法,再调用_destruct 方法。

将传入的序列化数据的对象变量个数由1更改为2,页面只执行了__destruct方法,而且输出name属性时报错,是由于反序列化数据时失败无法创建对象。

漏洞利用

更改测试代码

test.php

其中 __destruct方法在调用时将name参数写入wcute.php文件但是由于__wakeup方法清除了对象属性,所以在调用__destruct时已经没有了name属性,因此文件将会写入失败。

将对象属性个数改为2继续尝试,成功绕过__wakeup方法执行,将代码写入文件

最新文章

  1. caffe pytho接口
  2. install sublime for linux
  3. 【转】PowerShell入门(序):为什么需要PowerShell?
  4. pm2 开机自启动如何弄?
  5. Java中Runnable和Thread的区别(转)
  6. linux内核分析之进程地址空间管理
  7. 【ZT】修复iCloud中查找我的iPhone、查找我的iPad无法显示地图的方法
  8. Eclipse中设置注释、日期等信息
  9. FPGA的SPI从机模块实现
  10. C中运算符优先级
  11. shell编程之文件包含
  12. Ansible剧本介绍及使用演示(week5_day2)--技术流ken
  13. version control的简单认知
  14. Tomcat是什么:Tomcat与Java技、Tomcat与Web应用以及Tomcat基本框架及相关配置
  15. hdu 5385 The path
  16. altium designer 软件常用技巧总结(实时更新)
  17. hdu 5032 不易发觉的树状数组
  18. [翻译] RDVTabBarController
  19. 03、Windows Phone 套接字(Socket)实战之WP客户端设计
  20. Template 动画

热门文章

  1. MySQL实现Oracle rank()排序
  2. Java线程池Executor&amp;ThreadPool
  3. CentOS7下LVM的基本操作
  4. 环境搭建-Hadoop集群搭建
  5. JAVA设计模式---单例模式篇
  6. js初学总结
  7. 阿里云ESC服务器centos6.9使用及注意事项
  8. 微信小程序 实现多行文字 超出部分省略号显示
  9. Vue:获取当前定位城市名
  10. Redis的持久化机制是什么?各自的优缺点?