PHP反序列化漏洞说明

------正文内容展示,开始汲取新知识啦------

序列化

PHP程序为了保存和转储对象,提供了序列化的方法,序列化是为了在程序运行的过程中对对象进行转储而产生的。

序列化可以将对象转换成字符串,但仅保留对象里的成员变量,不保留函数方法。

PHP序列化的函数为serialize,反序列化的函数为unserialize.

举个栗子:

输出结果:

O:表示对象

:4:表示该对象名称有四个字符

"Test":表示该对象的名称

3:表示该对象有3个成员变量

接着是括号里面的,这个类的三个成员变量由于变量前的修饰不同,在序列化出来后显示的也不同。

s:1:"a";s:5:"ThisA"; :以 ;分开变量名和变量值,变量名为1个字符的a,变量值为”ThisA”

s:4:"*b";s:5:"ThisA";:多了 *,用以区分 protected 修饰符,另外实际页面中会出现乱码,实际上 protected属性的表示方式是在变量名前加个%00%00

s:7:"Testc";s:5:"ThisC";: 在变量名前加上%00类名%00

可以看到, 序列化后的字符串中并没有包含这个test方法的信息, 因为序列化不保存方法

反序列化

反序列化就是序列化的逆过程,即对于将对象进行序列化后的字符串,还原其成员变量的过程。

1 2 3 4 5 6 7

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞1633赞赏 分享
抢沙发

请登录后发表评论

    暂无评论内容