如何用 PayloadsAllTheThings 做 XSS 漏洞检测:一条从找入口到交卷的完整路线
【免费下载链接】PayloadsAllTheThingsA list of useful payloads and bypass for Web Application Security and Pentest/CTF项目地址: https://gitcode.com/GitHub_Trending/pa/PayloadsAllTheThings
XSS 漏洞检测说穿了就一件事:你构造的 payload 能不能原样"活着"到达浏览器。PayloadsAllTheThings 是一个收录 Web 安全渗透与 CTF 常用 payload 及绕过方法的清单项目,其中 XSS 方向给了现成的检测向量、WAF 过滤绕过思路和上传场景样例,克隆下来照着用即可:git clone https://gitcode.com/GitHub_Trending/pa/PayloadsAllTheThings
🔍 为什么 XSS 漏洞检测总卡在半路
新手做 XSS 检测常见的三个卡点:
- 入口没反馈:你提交的输入进了后台日志、工单系统,页面什么都不显示,得等管理员打开那条记录才触发,只能靠盲测加外带确认
- 门卫太敏感:WAF 像门卫,见到
script、onerror=这类已知签名直接拦 - 参数被转义:
<变成<,脚本在页面上只是一段普通文本
想明白"它是在哪一步死的",比多试一百条 payload 更有用。
🧩 WAF 与编码:同一串字符的两种命运
编码变换是绕过滤过的核心手段。比如javascript:prompt(1)被拦后,把冒号后面的换行符编码一下写成javascript://%0Aalert(1),浏览器照样执行,WAF 的签名却对不上了——相当于给检查单换了封皮,内容没变。下面这张对比图正好演示了同一 payload 在正常写法和编码混淆写法下的差异:

这类"换个写法就放行"的例子在项目的 Encoding Transformations 模块 里成体系地整理着。思路记住一句:已知签名被拦,就改编码、换协议写法、大小写混合,每次只动一处,方便你复盘到底哪一手起了作用。
🎯 如何按上下文挑对 payload,而不是乱试
挑 payload 前先问一句:这个输入落在哪?
- 落在 URL 或协议位置(比如跳转参数)→ 试伪协议写法
- 落在 HTML 标签内部 → 用
<svg onload=alert(1)>,一个标签加一个事件,最短路径验证脚本能否执行 - 落在联系表单、管理后台这类不回显的位置 → 盲发加外带,等回调
别现场手写,直接复制 XSS Injection 模块 里的现成串,效率高,也不容易拼错。
📦 注入点不止在页面表单:上传场景怎么看
XSS 的藏身处经常被漏测:图片元数据、SVG、上传后生成的预览页都可能带脚本。项目里有一张覆盖 Shell、XSS、图片、配置等分支的文件上传漏洞脑图,可以当排查清单用:

测完别忘了交卷:把 payload、参数、页面、截图存下来,确认有效而不是误报,报告里写清触发条件和影响范围。发现洞第一时间联系项目负责人——测试只在授权范围内使用,payload 挑无害的,有效就立即上报,这条线任何时候别松。
【免费下载链接】PayloadsAllTheThingsA list of useful payloads and bypass for Web Application Security and Pentest/CTF项目地址: https://gitcode.com/GitHub_Trending/pa/PayloadsAllTheThings
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考