本文主要是介绍XSS LABS - Level 16 过关思路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
关注这个靶场的其他相关笔记:XSS - LABS —— 靶场笔记合集-CSDN博客
0x01:过关流程
进入靶场,右击页面,查看网页源码,搜索关键词 test
查看页面回显点:
页面只有一个回显点,跟前面关卡不同,回显点没有以属性的形式出现在标签内部,而是出现在了标签外部,像这种位置,想要触发 XSS 攻击,似乎只能依靠构造新的标签来触发了(最好的情况就是 <script>
标签未被过滤)。
不清楚目标后端是否做了过滤,就整个 Payload 大杂烩,看看目标后端都过滤了哪些内容:
<sCrIpt>alert(1)</sCrIpt><a hRef="javaScript:alert(1)" onmouseover="alert(2)" onOnmouseover="alert(3)">test</a>
下面梳理一下目标后端的过滤规则:
Payload | Echo Print |
---|---|
< | < |
> | > |
script | ,且忽略大小写 |
空格 | |
" | " |
看来目标主要就是把标签之间的空格替换为了
,并没有拦着我们构造标签,说到底,就是要绕过空格。首先传入一个基础的 Payload 看看效果:
<input type="text" onmouseover="alert(1)">
那么我们下面就是去找,什么符号能够替代空格,来让标签依旧生效。而这个符号嘞,不一定是可见的。
测试方法也很简单,但是需要用到 BurpSuite(这款工具,在安全圈里非常出名,可以说是人手一个,教程我后续也会出哦,这里直接讲用法)。
首先,打开 BurpSuite,并打开 BurpSuite 中自带的浏览器:
使用 BurpSuite 自带的浏览器访问 XSS LABS Level 16 靶场,找到请求包,并发送到请求包模块:
http://127.0.0.1/xss-labs/level16.php?keyword=%3Cinput+type=%22text%22+onmouseover=%22alert(1)%22%3E
下面定位到 Intruder 模块,并且修改请求包的内容,我们要把 +
号变成 %xx
的形式:
然后进入 Payload 中,按照如下格式进行配置,并开始攻击:
这个时候 BurpSuite 会弹出一个框框,告诉你攻击的结果,我们可以查看每个攻击返回的内容,找到能成功显示 input
标签的即可,如下图:
这种能替换空格的标签还不少,作者这里根据本次攻击结果列举一下(有心者可以做成字典哦):
能成功显示的:%0a、%0c、%0d不太稳定的:%3e
那么本关的过关 Payload 如下:
<input%0atype="text"%0aonmouseover="alert(1)">
0x02:源码分析
下面是 XSS LABS Level 16 的后端源码,以及我对其的部分笔记:
<!DOCTYPE html><!--STATUS OK--><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><script>// 修改 alert 默认行为,进入下一关window.alert = function() {confirm("完成的不错!");window.location.href = "level17.php?arg01=a&arg02=b";}</script><title>欢迎来到level16</title></head><body><h1 align=center>欢迎来到level16</h1><?phpini_set("display_errors", 0);$str = strtolower($_GET["keyword"]); // 接收通过 GET 方式传入的 keyword$str2 = str_replace("script", " ", $str); // 将 script 替换为 // 下面都是一些常见的过滤形式,没啥。$str3 = str_replace(" ", " ", $str2);$str4 = str_replace("/", " ", $str3);$str5 = str_replace(" ", " ", $str4);echo "<center>" . $str5 . "</center>"; // 忽略了,有一些不可显示的字符也可以用作空格,进行绕过?><center><img src=level16.png></center><?phpecho "<h3 align=center>payload的长度:" . strlen($str5) . "</h3>";?></body></html>
这篇关于XSS LABS - Level 16 过关思路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!