| |
|
开发:
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 -> 正文阅读 |
|
[PHP知识库]WEB漏洞-反序列化之PHP |
WEB漏洞-反序列化之PHP所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。unserialize()函数能够重新把字符串变回php原来的值。 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。 --php官方文档 原理未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果。在反序列化的过程中自动触发了某些魔术方法。当进行反序列化的时候有可能触发对象中的一些魔术方法。 有类与无类有类就是要依靠对象,无类就是不需要依靠 php弱类型PHP 比较 2 个值是否相等可以用 " == “或 " === ”,” == " 会在比较时自动转换类型而不改变原来的值,因此这个符号经常出现漏洞。" == " 比较相等的一些常见值如下,当某些语句的判断条件是使用 " == "来判断时,就可以使用弱类型来替代。 无类php: serialize()
unserialize()
PHP 反序列化热身题-无类问题-本地
flag.php
将xxx字符串序列化带入url后面的参数str即可 CTF 反序列化小真题-无类执行-实例这个靶场在bugku已经找不到了,所以就不贴地址了 根据提示用 GET 方法传递个 hint 参数,参数值随便(我觉得这个点毫无意义),得到题目的 PHP 源码。 源码中有 3 个部分,其中第二部分是我们看到的页面的源码,第三部分无意义,因此我们着重分析第一部分。
这段代码会取回 cookie 的值,unserialize 函数是对单一的已序列化的变量进行操作,将其转换回 PHP 的值。也就是说 unserialize 函数出现的地方是解题的关键,如果变量 cookie反序列化的结果和KEY 变量完全相同,就会显示 flag。因此我们需要传递一个名为 ISecer 的 cookie,里面的值应该是 $KEY 变量序列化后的结果。
有类例如:O:4:“user”:2:{s:3:“age”;i:18;s:4:“name”;s:3:“LEO”;} 触发unserialize函数的变量可控,文件中存在可利用的类,类中有魔术方法 魔术方法构造函数和析构函数__construct() __sleep() 和 __wakeup()serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 null 被序列化,并产生一个 E_NOTICE 级别的错误。
__sleep() 方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。 与之相反,unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。 __serialize() 和 __unserialize()serialize() 函数会检查类中是否存在一个魔术方法 __serialize()。如果存在,该方法将在任何序列化之前优先执行。它必须以一个代表对象序列化形式的 键/值 成对的关联数组形式来返回,如果没有返回数组,将会抛出一个 TypeError 错误。
_toString() //echo或者拼接字符串或者其他隐式调用该方法的操作都会触发 CTF 反序列化练习题-有类魔术方法触发-本地
效果: 网鼎杯 2020 青龙大真题-有类魔术方法触发-实例靶场
涉及:反序列化魔术方法调用,弱类型绕过,ascii 绕过 步骤:
|
|
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/15 9:52:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |