偷工减料笔记12(反序列化)

总结:反序列化的一些知识点【利用反序列化要考虑回显问题即shell反弹】

序列化:把对象转换成字节流保存

反序列化:把字节流还原成对象

【序列化可以理解成一种压缩算法方便数据的传输和读取,反序列化就是对应的还原算法】

反序列化之php

php反序列化详细

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

序列化:serialize()将对象转发成字符串

反序列化:unserialize()将字符串还原成对象

字符串格式:  对象:长度:名字:{类型:长度:名字;对象:类型:名字;}

技术:

技术上分有类和无类【即还原构造对象时,是否有创建类的过程】、

无类的话就是一个简单的数据”压缩“ ”解压缩“

有类的话就会触发一系列魔术方法

_construct()//创建对象时触发
_destruct() //对象被销毁时触发

_wakeup()//反序列化执行时
_call() //在对象上下文中调用不可访问的方法时触发
_callStatic() //在静态上下文中调用不可访问的方法时触发
_ get() //用于从不可访问的属性读取数据
_set() //用于将数据写入不可访问的属性
_isset() //在不可访问的属性上调用isset)或empty0触发
_unset() //在不可访问的属性上使用unset()时触发
_invoke()//当脚本尝试将对象调用为函数时触发
 

【魔术方法其实就是对象的生命流程会发生的事情和对应的自动触发的函数】

 这个就是例子,通过满足下面的if条件然后利用反序列化函数unserialize构造对象然后执行魔术方法,打印处flag

然后小知识点:

一个=是赋值,俩个是比较值不比较类型(应该说会自动转换类型去比对),三个是比较类型也比较值,都相同都会返回ture

绕md5比对手段

php反序列之java

ysoserial工具的使用【构造payload(这个是重点)】

题目例子

java实现序列化:ObjectOutputStream类--> writeObject()

java实现反序列化:ObjectInputStream类-->readObject()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唯熟唯尔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值