反序列化漏洞学习

序列化就是把一个对象转成字符串的形式,可以保存起来

反序列化就是把已经转成字符串的对象,再还原变成原对象

一个实例

定义了一个baby 对象,再定义一个$file 变量。中间的自定义函数先不管,我们先给$file一个变量值 flag.php ,通过serialize函数 将这个对象变为 字符串。

就是0开头绿色那条。解释下这个字符串

0:4:"baby"  0 对象 4 d 对象名长度   s 字符串 4 变量名长度 "file"变量名   后面就是变量值长度和值

再通过unserialize 函数 将字符串反序列化 还原成 $file=flag.php

这就是序列化 和反序列化的过程!

漏洞的核心思想还是在于unserialize函数,漏洞利用的核心思路在于控制魔术方法中的代码从而产生代码注入,SQL注入,目录遍历等一系列的漏洞利用。


这是一道运用反序列化漏洞的ctf题目。看到上面这个源码,当这个对象被序列化后,__tostring() 将自动执行下面的语句,file_get_contents()

如果括号中时flag.php ,那就会输出flag.php的值,就能得到flag了。这里就用到了反序列化漏洞,当你给$password 传入一个 序列化的值,序列化的$file=flag.php  这就是我们可以控制的序列化的值,再经过反序列化,就输出了这个Falg 对象。执行$file=flag.php,输出 file_get_contents(flag.php)。。这是反序列化漏洞的一种利用方式 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,947评论 0 5
  • php对象注入是一个非常常见的漏洞,这个类型的漏洞虽然有些难以利用,但仍旧非常危险。为了理解这个漏洞,请读者具备基...
    BerL1n阅读 8,917评论 0 2
  • 曾为你肆意把天地写进诗歌 如今举目 皆是你的山河
    张芷扬阅读 1,313评论 0 0
  • 测试
    chen0430tw阅读 1,735评论 1 1