| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> WEB漏洞-反序列化之PHP&JAVA全解(上) -> 正文阅读 |
|
[PHP知识库]WEB漏洞-反序列化之PHP&JAVA全解(上) |
php序列化 无类序列化小例子: 此处通过GET方式接收值存入变量str,再通过if进行判断,如果变量str的值反序列化的结果等于变量key中的值时,就输入falg
访问当前页面并在url处通过GET方式提交参数,使提交的值进行反序列化后等于变量key中的值
CTF真题https://ctf.bugku.com/challenges#flag.php $this是一个“伪对象”,代表当前所属类的当前对象。(就相当于对当前所属的类进行了一个new操作给$this $this=new FileHandler) 1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用
解析:(累死了) 1.当通过GET传入参数时,会用unserialize把传入的值进行反序列化,并执行__destruct()魔术方法。 2.如果op的值全等于(===)2就把op赋值为1,然后执行process()方法,判断op的值如果等于(==)1就进行write()方法中,如果op的值等于(==)2就进行read()的方法中。 3.因为此处要读取flag.php文件,所以自然是进入read()方法。又因为前面是通过===进行比较,后门是通过==进行比较,所以要让反序列化后op的结果即不(===)2又(==)2,所以op反序列化后的值可以是(int类型的2)或者(" 2" 中间有空格)‘ 4.进入read()方法后,通过file_get_contents对filename的内容进行读入。因为我们的目标是对flag.php中的内容进行读取,所以必须让反序列化后filename的值等于flag.php(也就是用file_get_contents对flag.php进行读取)。 5.content的值是任意的,因为不管反序列化后content的值是什么,在__destruct时,都会把content赋值为空。 综上所述: op反序列化后的值必须为int类型的2或者" 2"。 所以要构建相对应的序列化代码得到序列化结果
结果:
我们需要自己给其中添加值,并且因为三个属性是protected类型,所以会生成
但是is_valid()会对生产的payload进行检验,不能出现ascii小于32的字符。所以 这里利用的是php7.1+的版本对属性的类型不敏感,所以本地序列化时直接将属性类型改为public即可绕过。 结果:
把序列化结果复制,通过GET方式给变量$str赋值后得到结果flag |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 11:34:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |