web安全之反序列化漏洞
一、基本概念
什么是序列化
序列化:将对象转化为字符串的过程,便于存储或传输。 类似vm做快照。
什么是反序列化
反序列化:将字符串转化为对象的过程,便于调用。 类似vm恢复快照。
编程基础:
class 属性、方法 例:car
object 属性、方法 例:BMW
redis常用来缓存序列化之后的字符串。
redis类似字典的键值对格式。MySQL表类似excel格式。
跨平台传输标准:JSON/XML
JSON格式:轻量级的数据交换格式。类似字典格式的字符串。
二、反序列化漏洞
PHP反序列化漏洞
原理:又称PHP对象注入。程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程被恶意控制,进而导致代码执行、getshell等。PHP序列化函数serialize()、反序列化函数unserialize()。同时需要理解,为什么phpinfo()被成功执行?因为类中的魔术方法在特殊情况下被自动调用,并输出字符串[This is function ____destruct()]。
利用:Typecho cms_exp——getshell