XSS-Labs靶场实战:从搭建到通关的完整指南
1. XSS-Labs靶场环境搭建第一次接触XSS漏洞实战的朋友们建议你们先把这个靶场环境搭建起来。我当年刚开始学XSS的时候就是从这个靶场入门的现在手把手教你们怎么搭建。必备工具清单Windows系统Win10/Win11都行PHPstudy集成环境我用的是v8.1版本火狐浏览器Chrome也可以XSS-Labs源码包GitHub上搜do0dl3/xss-labs具体操作步骤1.1 PHPstudy安装配置先去官网下载PHPstudy安装过程一路下一步就行。装完后别急着启动有个关键设置要做1. 打开PHPstudy安装目录 2. 进入WWW文件夹 3. 把下载的XSS-Labs压缩包解压到这里这里有个坑我踩过PHP版本要用5.3.45nts非线程安全版不然有些关卡会报错。切换方法是在PHPstudy面板里选择PHP版本切换。1.2 数据库配置虽然XSS-Labs不用数据库但建议你们顺手把MySQL配好1. 打开PHPstudy的MySQL管理 2. 默认账号root密码root 3. 新建数据库xss_labs其实用不上但养成好习惯1.3 部署XSS-Labs把下载的靶场文件放到WWW目录后记得做关键检查检查文件结构应该能看到level1.php到level20.php修改index.php可选把默认首页改成?php phpinfo(); ?测试环境启动Apache服务端口建议用8080避免和本地其他服务冲突测试访问浏览器打开http://127.0.0.1:8080/xss-labs-master看到那个大大的欢迎来到XSS挑战就成功了。2. 基础关卡通关技巧前五关是给新手练手的但别小看它们我见过不少人在第三关卡壳。下面是我的通关笔记2.1 第一关直接注入最简单的反射型XSS直接在URL参数里插入脚本http://127.0.0.1:8080/xss-labs-master/level1.php?namescriptalert(1)/script原理分析这关没有任何过滤name参数的值直接被拼接到HTML里。你们可以右键查看网页源码能看到完整的script标签被输出。2.2 第二关表单注入这关有个搜索框尝试直接输入scriptalert(1)/script发现没反应看源码会发现输入内容被放到input标签的value属性里input valuescriptalert(1)/script正确解法闭合value属性后插入新标签scriptalert(1)/script实际效果是构造出input valuescriptalert(1)/script2.3 第三关事件触发这关过滤了尖括号但留了个后门。试试这个payload onmouseoveralert(1)技巧说明单引号闭合原有的value属性onmouseover是鼠标悬停事件最后再用单引号保持语法正确实测时把鼠标移到输入框上就会触发。3. 中级绕过技巧从第六关开始各种过滤机制就来了。这里分享几个实用绕过姿势3.1 大小写绕过第六关当发现script被过滤时试试ScRiPtalert(1)/ScRiPt原理有些过滤器只检测小写字符串HTML标签本身不区分大小写。3.2 双写绕过第七关遇到字符串替换时比如把script替换为空可以scrscriptiptalert(1)/scrscriptipt替换后就变成scriptalert(1)/script3.3 JavaScript伪协议第八关当标签属性被过滤时试试a hrefjavascript:alert(1)点击/a更隐蔽的版本iframe srcjavascript:alert(1)4. 高级实战技巧后面关卡越来越难需要组合使用各种技术4.1 HTML实体编码第十二关当常规字符被过滤时可以用HTML实体#106;#97;#118;#97;#115;#99;#114;#105;#112;#116;#58;#97;#108;#101;#114;#116;#40;#49;#41;这串编码解码后就是javascript:alert(1)。4.2 隐藏表单利用第十关查看网页源码发现隐藏inputinput typehidden namet_sort value通过URL参数注入?t_sort onclickalert(1) x4.3 HTTP头注入第十三关这关需要修改Cookie值浏览器F12打开开发者工具找到Application Cookies添加名为user的Cookie值为 onmouseoveralert(1)刷新页面后鼠标滑过任意位置触发。5. 防御方案建议通关后别忘了学习防御措施这才是重点输入过滤// 过滤特殊字符 htmlspecialchars($input, ENT_QUOTES, UTF-8);输出编码// 对输出内容编码 echo htmlentities($output);CSP策略!-- 在HTML头部添加 -- meta http-equivContent-Security-Policy contentdefault-src self最后提醒这些技术请仅用于合法测试未经授权的渗透测试是违法行为。建议在自己搭建的靶场或者获得授权的平台上练习。