PHP反序列化
序列化:(将对象转换成字符串)
反序列化:(将字符串还原成对象)
(序列化和反序列化类似于加密和解密)
技术分为:有类(class):触发魔术方法(-construct,-destruct,-wake up,-tostring)
:无类
一般存在现实的网站,CTF中
危害:1.SQL注入
- 代码执行
- 目录遍历
Java(反序列化)二进制
Php(反序列化)xml
Js(反序列化)json
- (反序列化)
原理:未对用户输入的序列化字符串进行检测,导致攻击者可以进行反序列化过程,从而导致后代码执行。:SQL注入,目录遍历
无类class序列化例子o:4:”info”:2{s:4:”name”:i:2:10”;}
o:object
i:代表数据
4:数据长度
Info:对象名称
name:变量值
s:string
i:int
有分号(:)就是字符串无字符号就是赋值
有class魔术方法
_construct()创建对象时触发
_destruct()对象被销毁时触发
_call()在对象上下文被调用不可访问时触发
_callstastic()在静态上下文中调用不可访问的方法时触发
_set()用于将数据写入不可访问的属性
_isset()在不可访问的属性调用isset()或者empty()触发
_unset()在不可访问属性使用unset()触发
_invoke()当脚本尝试将对象调用为函数时触发
_set()
_get()
_isset()
_unset()