2022/3/28 PHP反序列化

小迪

参考:

https://www.bilibili.com/video/BV1JZ4y1c7ro?p=36&spm_id_from=333.880.my_history.page.click
https://blog.csdn.net/Hardworking666/article/details/122373938
https://blog.csdn.net/Hardworking666/article/details/112725423

在这里插入图片描述

补充:

PHP访问控制修饰符不同,序列化后的属性的长度和属性值会有所不同:
publick(公有):属性被序列化的时候属性值会变成 :属性名
protected(受保护):属性被序列化的时候属性值会变成: \x00*\x00属性名
private: 属性被序列化的时候属性值会变成:\x00类名\x00属性名

PHP反序列化

未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化的过程,从而导致代码执行,SQL注入,目录遍历登不可控后果。在反序列化的过程中自动触发了某些魔术方法。

serialize() //将一个对象转换成一个字符串
unserialize() //将字符串还原成一个对象

无类的情况
在这里插入图片描述

在这里插入图片描述

a - array 数组型
b - boolean 布尔型
d - double 浮点型
i - integer 整数型
o - common object 共同对象
r - objec reference 对象引用
s - non-escaped binary string 非转义的二进制字符串
S - escaped binary string 转义的二进制字符串
C - custom object 自定义对象
O - class 对象
N - null 空
R - pointer reference 指针引用
U - unicode string Unicode 编码的字符串

在这里插入图片描述

案例-无类问题-ctf

https://ctf.bugku.com/challenges/detail/id/109.html

题目点登录没有反应
在这里插入图片描述
右键查看源代码,有一个admin.css
在这里插入图片描述

第一行提示传参?29524
在这里插入图片描述对cookie进行反序列化等于key就可以flag
对key序列化
在这里插入图片描述注意是if elseif,如果GET传参是29524的话就不执行flag了
抓包修改
在这里插入图片描述
在这里插入图片描述

案例-有类魔术方法触发

参考:https://www.cnblogs.com/20175211lyz/p/11403397.html
PHP中把以两个下划线__开头的方法称为魔术方法(Magic methods),serialize() 函数会检查类中是否存在一个魔术方法。如果存在,该方法会先被调用,然后才执行序列化操作。
在这里插入图片描述
** __construct()// 构造函数,创建对象时触发 **
** __destruct() //对象被销毁时触发 **
__call() //在对象上下文中调用不可访问的方法时触发
__callStatic() //在静态上下文中调用不可访问的方法时触发
__get() //用于从不可访问的属性读取数据
__set() //用于将数据写入不可访问的属性
__isset() //在不可访问的属性上调用 isset()或 empty()触发
__unset() //在不可访问的属性上使用 unset()时触发
__invoke() //当脚本尝试将对象调用为函数时触发
** __sleep() //执行serialize()时,先会调用这个方法 **
** __wakeup() //执行unserialize()时,先会调用这个方法 **
** __toString() //转换成字符串的时候 **

案例-网鼎杯

https://www.ctfhub.com/#/challenge

不是很懂,这里记得在看一遍

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值