设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > PHP教程 > 正文

深入浅析PHP的session反序列化漏洞问题(2)

发布时间:2021-01-18 07:14 所属栏目:121 来源:网络整理
导读:在__tostring中会调用 unserialize($this->attr) ,因为后面用到token和ticket,所以显然时TOPA对象。后面判断需要 $this->obj->token === $this->obj->ticket ,所以在序列化的时候进行指针引用使 $a->ticket = ,即

在__tostring中会调用unserialize($this->attr),因为后面用到token和ticket,所以显然时TOPA对象。后面判断需要$this->obj->token === $this->obj->ticket,所以在序列化的时候进行指针引用使$a->ticket = &$a->token;,即可绕过判断。

至于为什么(string)$this->obj会输出flag,后台写的login可能是__tostring吧。

其中反序列化字符串中会有一个__wakeup()函数清空里面的参数,我问可以通过一个cve来绕过:CVE-2016-7124。将Object中表示数量的字段改成比实际字段大的值即可绕过wakeup函数。

最后的代码为:

username = 0; $testa->password = 0; $testa->ticket = &$testa->token; $sa = serialize($testa); $testc->attr = $testb; $testb->attr = $sa; $test = serialize($testc); echo $test;

最终payload为:

以上所述是小编给大家介绍的PHP的session反序列化漏洞,希望对大家有所帮助。程序员遇到问题都会上(编程之家52php.cn)查找问题解答方法!如果觉得站点还不错,随手转发给程序员朋友一下!

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读