Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Payload-and-Polyglot-Lists — GromHacks Labs -- 那些他们不想让你拥有的 payload 列表。母舰降下 1,324 个注入探测,检测 20 种常见漏洞类别的可注入点。我们不利用漏洞,只是敲门看看谁会在里面回应。每个 payload 都经过真实解析器测试,因为外星人要求证据。不要信任任何输入。质疑一切! | Kitploit
工具/GitHubGitHub/gromhacks/payload-and-polyglot-lists
OSINT (开源情报)Payload生成漏洞分析Web应用程序漏洞利用模糊测试渗透测试学习与教育
GitHubgromhacks/payload-and-polyglot-lists

Payload-and-Polyglot-Lists

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

GromHacks Labs -- 那些他们不想让你拥有的 payload 列表。母舰降下 1,324 个注入探测,检测 20 种常见漏洞类别的可注入点。我们不利用漏洞,只是敲门看看谁会在里面回应。每个 payload 都经过真实解析器测试,因为外星人要求证据。不要信任任何输入。质疑一切!

查看仓库
369259天前Kitploit 审核通过

Payload 与 Polyglot 列表

发现某个 payload 不起作用? 请提交 issue,附上该 payload、目标上下文以及你预期的结果。我们始终欢迎包含修复或新 payload 的 pull request。

研究仍在进行中。 本项目处于活跃开发阶段,将持续更新新的注入上下文、payload 以及验证改进。

免责声明: 这些 payload 仅供授权的安全测试、教育和研究用途。作者对任何误用或由此产生的后果不承担任何责任或义务。使用风险完全由你自行承担。使用本项目即表示你对自己的行为承担全部责任。

许可证: MIT - 参见 LICENSE

1,618 个唯一 payload 字符串,涵盖 37 个安全测试类别,外加一组跨领域的 polyglot 集合、35 个具名反序列化格式、库和 sink,以及 20 个模板引擎。保留上下文的 master 包含 661 个 section 中的 1,760 个 payload 到 section 的分配,因此共享字符串会与其适用的每个解析器和插入上下文保持关联。108 个 payload 的最小列表包含针对 GraphQL、HQL/JPQL、XPath、JSONPath、JSON 构造、HTTP 参数污染、XQuery、Firestore、SMTP/IMAP 和电子邮件头、Host 头、XML/SOAP 结构、LDAP DN、HTML/CSS、CSV、日志和 LaTeX 的代表性探针。验证覆盖范围因 payload、解析器和插入上下文而异。

语言矩阵涵盖 C、C++、C#、Dart、Elixir、Erlang、Go、Java、JavaScript、Kotlin、Lua、Objective-C、Perl、PHP、Python、Ruby、Rust、Scala、Swift 和 TypeScript。

通用验证器是一种冒烟检查,而非漏洞利用的证明:早期结果将任意错误和请求超时都计为命中。上下文回归覆盖九种实时 SQL 方言,包括字符串、数值、注入的 ORDER BY 子句和直接排序表达式位置;GraphQL.js、Hibernate HQL/JPQL、直接 XPath/XQuery/JSONPath、JSON 构造和重复参数污染、Firestore 结构化过滤器、SMTP/IMAP 命令和电子邮件头注入、Host 头 URL 投毒、XML 和 SOAP 结构、LDAP 过滤器和 DN 注入、Chromium 中的 HTML/CSS/XSS、CSV 公式单元格突破、日志伪造、LaTeX 源码注入、POSIX shell 引号/反引号/管道、$() 和百分号解码换行上下文、本地 SSRF/路径/XXE 夹具、MongoDB/CouchDB/Redis/ArangoDB/DynamoDB PartiQL/Cassandra CQL/Couchbase SQL++/Elasticsearch/Neo4j、EL、XSLT、SSI、原型污染以及代表性反序列化回调。浏览器检查包括未加引号的属性、属性片段、HTML 注释和 </script> 解析器上下文。语言矩阵在所有 20 种请求的语言中检查数学、错误、时序、OOB 以及生成源码的引号突破;在支持的情况下测试常见的替代引号和反引号字符串上下文,并在所有 20 种语言中测试共享的算术 polyglot,以及在适用时测试运行时格式字符串。请参阅 COVERAGE.md 了解已验证的矩阵和剩余的引擎特定缺口。


概念

传统 Payload 列表的问题

大多数公开可用的 payload 列表按漏洞类型组织:一个列表用于 SQL 注入,另一个用于 XSS,再一个用于命令注入,依此类推。测试人员挑选他们认为与目标匹配的列表,将其加载到 intruder 工具中,然后针对某个参数运行。如果他们猜错了漏洞类别,整个扫描将一无所获。如果后端是不常见的数据库、非标准模板引擎,或列表未考虑到的语言,payload 会静默失败。测试人员继续前进,认为该参数是干净的。

这种方法有两个根本问题。首先,它要求测试人员在发现漏洞之前就知道存在什么漏洞。其次,流通中的大多数 payload 都是理论性的——在项目和博客文章之间复制粘贴,从未针对真实解析器进行过测试。它们看起来正确。它们甚至可能在语法上有效。但它们实际上并不会从目标触发可检测的响应。

Polyglot 优先,信号驱动

本项目在单个字符串可以覆盖多个相关上下文的地方使用 polyglot。payload 的行为仍然取决于应用程序如何插入它:shell 参数可能未加引号、单引号或双引号;SQL 字符串和数值表达式不同;模板引擎使用不兼容的分隔符。测试平台需要显式建模这些包装器。不应假设任何单个字符串都能突破每个引号、注释或解析器。

payload 围绕 检测支柱 分组——在匹配上下文中可以提供证据的可观察响应:

  • 错误:payload 导致响应中出现可见的服务器端解析器或解释器错误。与基线比较;仅凭错误并不能证明注入。
  • 数学:payload 包含一个算术表达式,如 7*191,其计算结果为 1337。如果该数字出现在响应中,而 payload 只发送了 7*191(而不是字面量 1337),则目标解析器计算了该表达式。该结果证明了在该 sink 中的求值,该 sink 可能是查询、模板、表达式语言或代码运行时。
  • 时序:payload 强制产生延迟(5 秒以上)。在将延迟视为执行之前,与基线比较并排除客户端或服务器超时。
  • OOB(带外):payload 导致后端向测试人员控制的回调服务器发起出站 HTTP、DNS、LDAP 或 TCP 连接。这确认了通过被测 sink 的出站交互,即使响应完全不透明;它本身并不能识别发出请求的原语。

这些信号只有在 payload 的实际上下文中检查时才有用。通用验证器是一种冒烟测试;仅凭解析器错误、超时或反射字符串并不能证明 payload 已执行。使用特定上下文的 Docker 检查以获得更强的证据。

内置函数优于 Shell 命令

传统的 OOB 和时序 payload 依赖 shell 命令:curl、nslookup、ping、sleep。这些会不断失效。它们取决于目标操作系统、可用的 PATH、由哪个 shell 解释命令,以及进程是否有权限生成子进程。一个基于 curl 的 OOB payload 在 Ubuntu 上有效,但在 Alpine 上失败(没有 curl),在 Windows 上失败(没有 curl),在受限容器内也失败(无法执行出站进程)。

本项目尽可能用语言原生内置函数替换 shell 命令。Python payload 使用 urllib.request.urlopen() 和 time.sleep()。Java payload 使用 java.net.URL.openStream() 和 Thread.sleep()。Ruby 使用 Net::HTTP.get() 和 Kernel.sleep()。PHP 使用 file_get_contents() 和 sleep()。这些函数来自语言运行时或标准库,因此避免了 PATH 查找和子进程依赖。运行时策略和配置仍可能禁用网络访问或单个 API;夹具矩阵记录了所演练的确切环境。

在标准库导入可能被阻止的情况下,一些 payload 使用免导入的替代方案,例如 Node 中的 Atomics.wait() 以及用于 OOB 的原始 socket 连接。资源密集型循环被排除在默认语料库检查之外。

Polyglot 无法触及之处

并非所有东西都能成为 polyglot。模板引擎使用根本性不兼容的语法——Jinja2 中的 {{}} 对 ERB 的 <%= %> 毫无意义,两者也都无法解析为 Freemarker 的 ${})。反序列化格式是特定于某个框架的二进制或结构化数据。对于这些类别,本项目使用按引擎划分的 payload,组织在相同的检测支柱系统下,涵盖 20 个模板引擎和 35 个具名反序列化格式、库和 sink,跨越 11 个运行时组。

语料库将适用于兼容上下文的 polyglot 与语法不同处的按引擎探针相结合。测试覆盖范围和结果仅限于所演练的夹具和包装器。


最小列表(108 个 Payload)

先前的 FIRE/NO-FIRE 声明已撤回:通用验证器将任意错误和请求超时都计为命中。testbed/test_context_polyglots.py 中的上下文矩阵现在检查 SQLite、PostgreSQL、MySQL、MariaDB、CockroachDB、H2、Firebird、Oracle 和 SQL Server 中的 SQL 行为;GraphQL.js;Hibernate HQL/JPQL;XPath、XQuery 和 JSONPath;Firestore 结构化过滤器;MongoDB、CouchDB、Redis、ArangoDB、DynamoDB PartiQL、Cassandra CQL、Couchbase SQL++、Elasticsearch 和 Neo4j 中的 NoSQL/查询行为;未加引号、加引号、反引号和管道上下文中的 POSIX shell 注入;本地 SSRF/路径/XXE 夹具;针对基线的 SSI 输出;代码求值和反序列化回调;验证器超时处理;以及跨引擎和按引擎的 SSTI 数学。testbed/test_windows_contexts.py 清点了 Windows CMD/PowerShell 上下文,并具有针对 Windows 主机的原生 shell 检查。

该列表在有用之处按信号对探针进行分组,但某些条目是方言或上下文特定的,并且若干类别并不支持全部四个检测支柱。将结果视为夹具特定的,然后使用相应的按类别 payload 以获得更广泛的覆盖。

Payload 数量类别支柱
4SQLi错误、字符串/数值布尔数学、MySQL 时序;无已验证的 OOB 探针
4SSTI错误、引擎子集数学/时序/OOB 探针
3OS Cmd在已测试的 POSIX sh 引号/反引号/管道上下文中的数学、时序、OOB,外加 $() 和换行突破探针
3Code Injection数学、时序、OOB(跨语言)
2XSS数学、OOB
2XXE文件读取、OOB
2SSRF错误、OOB
1Path Traversal文件读取
2NoSQL文档操作符、错误;数学和时序是方言特定的
1EL Injection数学
1Prototype Pollution数学
1CRLF/Header数学
1Format String错误
1SSI指令回显(标记与基线比较)
2LDAP Injection错误、数学
3XSLT Injection错误、数学、OOB
2Elasticsearch错误、数学
2Cypher/Neo4j错误、时序
1CouchDB错误
1CSV Injection公式前导单元格突破
1HTML Injection元素结构
1Log Injection通过 CRLF 伪造事件
1LaTeX Injection使用良性标记的命令突破
1JSON Injection属性突破
1HTTP Parameter Pollution重复值验证/使用不一致
1SMTP Header InjectionBcc 头突破;无邮件投递
1GraphQL选择突破
1HQL/JPQL共享字符串谓词突破
1XPath谓词突破
1JSONPath联合选择
1XQuery谓词突破
1Firestore结构化过滤器扩展
3Groovy数学、时序、OOB
46Deserialization在支持处多支柱,否则仅错误

使用 ready/minimal/payloads-only.txt 进行紧凑的授权测试运行。对于 shell 和 SQL 探针,在解释结果时保留目标的引号或查询上下文。


为目标选择合适的 Payload

参见 HOWTOUSE.md 获取完整操作员指南。它将“我正在查看一个参数,我该向它扔什么?”转化为可重复的工作流:

  1. 参数和上下文画像 - 5 个问题(值形态、技术栈指纹、响应可见性、OOB 可用性、WAF),在发射单个 payload 之前就剪除类别。
  2. 逐类别的“何时怀疑它” - 针对注入类别的面向生产的提示。每个类别列出应用程序功能、可见线索和探针,以在使用完整列表之前确认怀疑。
  3. 危险序列化字节指纹 - 35 个具名格式、库和 sink 的原始 magic bytes 和 base64 前缀,跨越 11 个运行时组(rO0AB = Java,AAEAAAD///// = .NET BinaryFormatter,BAg = Ruby Marshal,gASV = Python pickle P4,Tzo/YTo = PHP unserialize,等等),附带快速参考备忘卡和消歧启发式。在发射之前对 blob 进行指纹识别,这样你只加载匹配的子集,而不是全部 197 个分配。
  4. 目标提示到类别矩阵 - 从“我看到 id=42 和 JSESSIONID”到“尝试 by-category/sqli.txt + Java 反序列化 + EL 注入,观察数学支柱”,一次查找即可完成。
  5. 支柱选择规则 - 在发射之前选择你实际可以观察到的信号(OOB > 数学 > 时序 > 错误 > 反射),这样你永远不会针对无法读取的通道盲目测试。

在运行 payloadctl prepare 之前使用 HOWTOUSE.md。先指纹识别,其次最小列表,第三类别深入;将 payload 与目标解析器和插入上下文匹配。


快速开始

# 1. Prepare payloads with your callback domain
#    Replaces {domain} placeholder in all OOB payloads with your server
./tools/payloadctl prepare YOUR_CALLBACK.oastify.com

# 2. Load into Burp Intruder, ffuf, or any line-by-line injection tool
#    All output goes to ready/ (gitignored, contains your domain)

运行 prepare 后,可直接使用的文件位于 ready/full/ 和 ready/minimal/ 中,结构一致:

下载工具