美文网首页
反序列化漏洞学习

反序列化漏洞学习

作者: Emily0917 | 来源:发表于2018-12-23 20:06 被阅读0次

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

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

    一个实例

    定义了一个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)。。这是反序列化漏洞的一种利用方式 

    相关文章

      网友评论

          本文标题:反序列化漏洞学习

          本文链接:https://www.haomeiwen.com/subject/ykcvkqtx.html