熟悉情况
照例先简单看看目录、首页文件、配置文件、过滤函数等。
首页就引用了两个php文件和首页html文件
include/common.inc.php
include/index.fun.php
/index.html
(粗略过了几个php文件,都引用了common.inc.php,如果有全局过滤,那么十有八九就在这里)
在common.inc.php文件的get_magic_quotes_gpc()中,发现对$_POST
、$_GET
、$_COOKIES
、$_REQUEST
统一进行了过滤,使用addslashes()函数
后面路由方式什么的就不重复说了,在这里做过了:[[6.案例与学习/PHP审计实战-bluecms审计_SQLi|PHP审计实战-bluecms审计_SQLi]]
功能点方式审计
找输出点:
XSS先找输出然后找输入点,这样来比较快,以目标为导向
场景设置为前台打后台,这里找到了会员列表:
上图没有体现到,点击到"会员列表"后的url是:/admin/user.php
取出会员数据也没做任何处理直接发给了user.html:
展示HTML代码:
找输入点:
因为是为了前台打到后台,所以找的前台注册,后台的新建会员也是在输出点的admin/user.php文件中,但在这里不去看它。
前面取数据输出点没做处理,现在来看看输入点有没有处理:
根目录下/user.php是前台的会员注册:
可以看到,user_name、pwd、email都没做过滤处理,不过user_name用户名长度有限制,最长不能超过16位,没关系,email没做限制
Payload:1%40qq.com<script>alert(/XSS/)</script>
后台触发: