发帖
 找回密码
 立即注册
搜索
0 0

分享 WEB渗透系统班-反序列化漏洞-PHP(上)+反序列化漏洞-PHP(下)

技术分享 1212 0 2025-9-22 16:26:12
[i=s] 本帖最后由 zeke 于 2025-9-22 16:26 编辑 [/i]

WEB渗透测试工程师系统班250303期
40 节课作业
一、反序列化漏洞产生的原因
serialize() 和 unserialize() 在 PHP内部实现上是没有漏洞的,之所以会产生反序列化漏洞是因为应用程序在处理对象、魔术函数以及序列化相关问题的时候导致的。
当传给 unserialize() 的参数可控时,那么用户就可以注入精心构造的 payload。当进行反序列化的时候就有可能会触发对象中的一些魔术方法,造成意想不到的危害。

二、复现课堂的php所有魔术方法案例
1._destruct
网站源码:
1.1.png

POP链构造:
1.2.png

传参点传入O:1:"B":1:{s:3:"cmd";s:4:"calc";}
成功打开计算器
1.3.png

2._construct
网站源码:
2.1.png

POP链构造:
2.2.png

传入O:1:"S":1:{s:4:"test";s:30:"<script>alert('zeke')</script>";}
2.3.png

3.Level 1:类的实例化
第一题考察 类的实例化 —— 也就是对象的创建。
在 PHP 中,我们使用 new + 类名() 去创建一个对象。
3.1.png

3.2.png

4.Level 2: 对象中值的传递
考察对象的赋值操作,相比于面向过程,对对象中值的更改,需要通过 -> 符号来指向可修改的变量,这里的可修改指的是 控制修饰符 public 对应的值,像 protected 和 private 修饰的值,需要使用更复杂的修改方法。

对于任何可以修改的值,我们使用 $对象名 -> 对应值 = 值 .eg: $object_name->a="a"

所以在这个题目中,我们需要将 $flag_string 赋值给 $free_flag 以便我们后面的 get_free_flag() 函数将他输出出来。
4.1.png

4.2.png

三、审计以下代码,构造pop链进行漏洞利用

0.1.png
0.2.png

POP链构造:
5.3.png

生成的序列化字符串:
O:11:"ctfShowUser":3:{s:8:"username";s:5:"admin";s:8:"password";s:5:"admin";s:5:"isVip";b:1;}

四、审计以下代码,构造pop链进行漏洞利用

0.3.png
0.4.png

POP链构造
6.1.png

生产的序列化字符串:(url编码)
user=O:11:"ctfShowUser":3:{s:8:"username";s:4:"hack";s:8:"password";s:4:"hack";s:5:"isVip";b:1;}

一、笔记标题:WEB渗透系统班-反序列化漏洞-PHP(上)+反序列化漏洞-PHP(下)

二、文章内容:

1.课程内容概要

主要知识点1:反序列化漏洞原理
主要知识点2:反序列化漏洞利用
主要知识点3:魔术方法

2.重点知识与细节

概念解析
概念1:魔术方法_destruct
1.4.png
1.5.png

概念2:

关键步骤
步骤1:无
步骤2:
步骤3:
相关代码
ctf1
5.1.png
5.2.png

ctf2
6.2.png
6.3.png

3.实操练习和解析

如作业

4.个人总结

本节课最大的收获是:学习了反序列化漏洞的原理和利用
仍然存在疑问的地方:暂无
需要课后深入学习的内容:靶场

──── 0人觉得很赞 ────

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
免责声明:
1、本论坛中所有用户发布的内容仅代表作者个人观点,与本网站立场无关,本站不对其真实性、完整性或观点承担任何责任。
2、本论坛所提供的全部信息与内容,不保证其准确性、完整性或时效性。因阅读或使用本站内容而产生的任何误导、损失或风险,本站概不承担任何连带或法律责任。
3、当国家司法、行政机关依照法定程序要求本论坛披露用户信息时,本站予以配合并因此免责。
4、因网络线路故障、技术问题、不可抗力或本站无法控制的其他原因导致的服务中断或暂停,本站不承担由此造成的任何直接或间接损失。
5、对于任何通过技术手段破坏、攻击本论坛系统或扰乱正常秩序的行为,本站有权采取包括但不限于限制账号、封禁账号、追究法律责任等措施。
您需要登录后才可以回帖 立即登录
高级模式
返回