| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> unserialize3与反序列化漏洞零基础详解 -> 正文阅读 |
|
[PHP知识库]unserialize3与反序列化漏洞零基础详解 |
在解这道题之前,首先非常感谢https://www.ajsafe.com/news/315.html这篇文章,给反序列化不太了解的我带来了启发,与借鉴,比如反序列化是什么,怎么形成反序列化漏洞等等 目录 反序列化漏洞(序列化←→反序列化)什么是序列化(serialize)将对象的状态信息转换为可以存储或传输的形式的过程,简单来说,就是将状态信息保存为字符串 什么是反序列化(unserialize)将字符串转换为状态信息 PHP内的几个特殊魔术方法
通过demo理解反序列化漏洞如果将序列化理解为编码时,那么反序列化即为解码 举例解释: 下面这段代码为序列化,可以理解为编码
O代表object(为A时代表Array),4代表"test"占4个字符长度,2代表着对象具有两个变量:name和age,s代表string,字符型(如果为i,代表int型) 下面这段代码为反序列化,可以理解为解码
当使用unserialize()恢复对象时,将调用__weakup(),serialize()函数将表单内容序列化成一个字符串 通过某道CTF实际题目理解反序列化漏洞,与解题过程
__destruct:对象操作执行完毕之后自动执行该函数内的代码 __wakeup:遇到unserialize()时自动触发 __wakeup是优先执行的, 优先级高于__destruct。 优先级演示证明:
再回到之前的CTF题目就明白了,优先执行wakeup的内容,才执行destruct,由于wakeup时会将warn值进行过滤,变为null值,所以不能使wakeup执行 wakeup是当反序列化成功时,才会调用,那我们让它失败呢?其实只要让它失败,是不是就不会调用这个魔术方法了?
最后将构造的payload传入即可,当看到这里的时候,再回去看我们这道题就非常非常简单了 unserialize3解题当看到这里的时候,那么恭喜你,这题对你来说只是单纯的__wakeup(),将构造的payload输入至?code后即可 首先将代码补全
输出
修改下,绕过即可
回车拿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/24 1:08:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |