Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Payload-and-Polyglot-Lists — GromHacks Labs -- 彼らがあなたに持たせたくないペイロードリスト。母船から送り込まれた1,324のインジェクションプローブで、20種類の脆弱性クラスにわたって何がインジェクション可能かを検出します。私たちは悪用はしません。ただドアをノックして、誰が出てくるか見るだけです。すべてのペイロードは実パーサーでテスト済み。なぜならエイリアンが証拠を要求するからです。入力を信じるな。すべてに疑問を持て! | Kitploit
ツール/GitHubGitHub/gromhacks/payload-and-polyglot-lists
OSINT (オープンソースインテリジェンス)ペイロード生成脆弱性分析ウェブアプリケーション悪用ファジングペネトレーションテスト学習と教育
GitHubgromhacks/payload-and-polyglot-lists

Payload-and-Polyglot-Lists

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

GromHacks Labs -- 彼らがあなたに持たせたくないペイロードリスト。母船から送り込まれた1,324のインジェクションプローブで、20種類の脆弱性クラスにわたって何がインジェクション可能かを検出します。私たちは悪用はしません。ただドアをノックして、誰が出てくるか見るだけです。すべてのペイロードは実パーサーでテスト済み。なぜならエイリアンが証拠を要求するからです。入力を信じるな。すべてに疑問を持て!

リポジトリを見る
3694ヶ月前Kitploit レビュー済み

ペイロード&ポリグロットリスト

動作しないペイロードを見つけましたか? issueを開く 際に、ペイロード、ターゲットコンテキスト、期待した動作を記載してください。修正や新しいペイロードを含むプルリクエストはいつでも歓迎します。

研究は継続中です。 このプロジェクトは活発に開発が進められており、新しいペイロード、脆弱性クラス、検証の改善が定期的に追加されます。

免責事項: これらのペイロードは、許可されたセキュリティテスト、教育、研究目的のみで提供されます。著者は、誤用や派生的な影響について一切の責任を負いません。ご自身の責任でご使用ください。このプロジェクトを使用することにより、お客様はご自身の行動に対して全責任を負うことに同意したものとみなされます。

ライセンス: MIT - LICENSE を参照

20の脆弱性クラス、31のデシリアライゼーションフレームワーク、14のテンプレートエンジンをカバーする1,353の検証済みインジェクションペイロード。すべてのペイロードは検出可能なシグナルを生成します。理論上のペイロードはゼロです。

検証:1,353テスト / 1,353発火 / 0失敗 / 0スキップ(35のDockerテストベッドスタックに対して)。厳密な検証により、実際の悪用(サーバーサイド計算、実際のパーサーエラー、測定されたタイミング遅延、ターゲットコンテナからのOOBコールバック)が証明されており、単なる文字列マッチングではありません。


コンセプト

従来のペイロードリストの問題点

公開されているペイロードリストのほとんどは、脆弱性の種類ごとに整理されています。SQLインジェクション用のリスト、XSS用の別のリスト、コマンドインジェクション用の別のリストといった具合です。テスターはターゲットに合致すると思われるリストを選び、それを侵入ツールにロードして、パラメータに対して実行します。脆弱性クラスを誤って推測すると、スキャン全体が何も生成しません。バックエンドが珍しいデータベース、非標準のテンプレートエンジン、またはリストが想定していなかった言語である場合、ペイロードは静かに失敗します。テスターはパラメータはクリーンだと思い込んで先に進みます。

このアプローチには2つの根本的な問題があります。第一に、テスターは脆弱性を見つける前に、それが何であるかを知っている必要があります。第二に、流通しているペイロードのほとんどは理論上のものであり、プロジェクトやブログ記事の間でコピーされるだけで、実際のパーサーに対してテストされたことはありません。見た目は正しいかもしれません。構文的に有効かもしれません。しかし、ターゲットから検出可能な応答を実際に引き起こすことはありません。

ポリグロットファースト、シグナル保証

このプロジェクトは別のアプローチを取ります。主な作業単位はポリグロットです。これは、同時にできるだけ多くのインジェクションコンテキストで有効(または意味のある無効)になるように設計された単一のペイロード文字列です。1つのポリグロットで、シングルクォート、ダブルクォート、括弧、ブロックコメント、HTML属性、テンプレート区切り文字、バックティックコンテキストを同時に脱出します。脆弱性が何であるかを知る必要はなく、テスターはすべてのパラメータにポリグロットを発射し、シグナルを監視します。

このコレクションのすべてのペイロードは、検出ピラーを中心に構築されています。これは、サーバーログ、ソースコード、ファイルシステムへのアクセスを必要とせずに脆弱性の存在を確認する観測可能な応答です。

  • Error(エラー):ペイロードがバックエンドに例外、パーサーエラー、またはスタックトレースを引き起こし、それが応答に表示されます。
  • Math(計算):ペイロードに7*191のように評価すると1337になる算術式が含まれています。応答にその数字が現れ、ペイロードがリテラルの1337ではなく7*191のみを送信した場合、バックエンドが式を計算したことになります。これはコード実行の証拠です。
  • Timing(タイミング):ペイロードが遅延(5秒以上)を強制します。応答が遅い場合、バックエンドがスリープまたはCPU負荷の高い操作を実行したことを示します。
  • OOB(Out-of-Band):ペイロードがバックエンドに、テスターが制御するコールバックサーバーへのアウトバウンドHTTP、DNS、LDAP、またはTCP接続を強制します。応答が完全に不透明な場合でも、実行を確認できます。

ペイロードがターゲットコンテキストに対してテストされたときにこれらのシグナルの少なくとも1つを生成しない場合、そのペイロードはリストに含める価値がありません。ここにある1,353のペイロードはすべて、厳密な悪用証明を伴う専用のDockerテストベッドに対して検証されています。理論上のものはゼロです。

シェルコマンドよりも組み込み関数

従来のOOBおよびタイミングペイロードは、curl、nslookup、ping、sleepなどのシェルコマンドに依存しています。これらは常に壊れます。ターゲットOS、利用可能なPATH、どのシェルがコマンドを解釈するか、プロセスにサブプロセスを生成する権限があるかどうかに依存します。Ubuntuで動作するcurlベースのOOBペイロードは、Alpine(curlなし)、Windows(curlなし)、制限されたコンテナ内部(アウトバウンドプロセス実行なし)では失敗します。

このプロジェクトでは、可能な限りシェルコマンドを言語ネイティブの組み込み関数に置き換えています。Pythonペイロードはurllib.request.urlopen()とtime.sleep()を使用します。Javaペイロードはjava.net.URL.openStream()とThread.sleep()を使用します。RubyはNet::HTTP.get()とKernel.sleepを使用します。PHPはfile_get_contents()とsleep()を使用します。これらの関数は、それぞれの言語のすべての標準インストールに存在します。PATHの参照、サブプロセス、OS依存性はありません。

標準ライブラリのインポートさえブロックされている場合(サンドボックス化されたeval、制限されたexecなど)、ペイロードはインポート不要の代替手段にフォールバックします。タイミングにはCPUスピンループ(Pythonのsum(range(500000000))、NodeのAtomics.wait())、OOBには生のソケット接続(__import__('socket').create_connection()、fsockopen()、TCPSocket.new())です。

ポリグロットが届かない場所

すべてがポリグロットになるわけではありません。テンプレートエンジンは根本的に互換性のない構文を使用します。Jinja2の{{}}はERBの<%= %>には意味がなく、どちらもFreemarkerの${}として解析されません。デシリアライゼーションフォーマットは、バイナリまたは特定のフレームワークに固有の構造化データです。これらのカテゴリでは、プロジェクトは同じ検出ピラーシステムの下で整理されたエンジン別のペイロードを使用し、14のテンプレートエンジンと7言語にわたる31のデシリアライゼーションフレームワークをカバーしています。

結果として、ポリグロットが処理できるコンテキスト(SQLi、OSコマンドインジェクション、XSS、コードインジェクション)を処理し、残りを専用のエンジン別ペイロードが処理する単一のコーパスが得られます。すべて検証済み、すべて検出可能なシグナルを生成、すべてラインごとのインジェクションツールで使用可能です。


最小限リスト(82ペイロード)

すべての35テストベッドスタック、55以上のエンドポイント、カテゴリごとの4つの検出ピラーすべてをカバーする83のペイロード。検証:83発火 / 0不発 / 0スキップ。

すべてのインジェクションカテゴリは、アーキテクチャ的に可能な場合、エラー+計算+タイミング+OOBのカバレッジを取得します。コード実行をサポートするデシリアライゼーションフレームワーク(Pickle、PyYAML、jsonpickle、node-serialize、XMLDecoder、.NET Json.NET)は、完全なマルチピラーカバレッジを取得します。プローブに限定されたフレームワーク(PHP unserialize、Ruby Marshal、SnakeYAMLなど)は、エラーベースの検出を取得します。フルカテゴリリストに切り替える前に、すべてのパラメータに対してこれを発射してください。

1,353ではなく83リクエスト。 Burp Intruderには ready/minimal/payloads-only.txt を使用してください。


ターゲットに適したペイロードの選び方

完全なオペレーターガイドは HOWTOUSE.md を参照してください。「パラメータを見ているが、何を投入すればいいのか?」を反復可能なワークフローに変換します。

  1. パラメータとコンテキストのプロファイリング - 1つのペイロードを発射する前にカテゴリを絞り込む5つの質問(値の形状、スタックのフィンガープリント、応答の可視性、OOBの可用性、WAF)。
  2. カテゴリ別「いつ疑うべきか」 - 20のカテゴリすべてに対する網羅的でプロダクションに焦点を当てたヒント。各カテゴリは、実際のSaaS機能タイプ(ローコードプラットフォーム、BI/レポート、監視、ワークフロー自動化、SSO、SSRFフェッチャー、evalシンク、メールテンプレートビルダーなど)、視覚的および行動的な手がかり(evalの兆候として7*7が49を返す、{{name}}が"Alice"としてレンダリングされることでSSTIが確定する、診断フィールドから漏れるping出力、OOBログでフェッチャーライブラリを特定するUser-Agent文字列)、最新スタックのORMの落とし穴(Prismaの$queryRaw、Railsの.order()、HibernateのJPQL concat、MongooseのfindOne(req.body))、そしてフルリストを使い尽くす前に疑いを確認するための安価なプローブをリストします。
  3. 危険なシリアライゼーションバイトフィンガープリント - Python、PHP、Java、.NET、Node、Ruby、Perlの31のフレームワークに対する生のマジックバイトとbase64プレフィックス(rO0AB = Java、AAEAAAD///// = .NET BinaryFormatter、BAg = Ruby Marshal、gASV = Python pickle P4、Tzo/YTo = PHP unserializeなど)。16エントリのクイックリファレンスチートカードと曖昧性解消ヒューリスティック付き。発射する前にブロブをフィンガープリントして、232すべてではなく5~15の一致するペイロードをロードします。

payloadctl prepareを実行する前にHOWTOUSE.mdを使用してください。最初にフィンガープリント、次に最小限リスト、3番目にカテゴリのドリルダウン。すべてのパラメータに1,353のペイロードをショットガンのように使わないでください。


クイックスタート```bash

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)

root@kitploit:~
`prepare`実行後、使用可能なファイルは `ready/full/` および `ready/minimal/` に格納され、以下の構造で提供されます。

| ファイル | 説明 | 件数 |
|------|------|-------|
| `ready/minimal/payloads-only.txt` | **最小構成 -- 83リクエスト、全カテゴリ** | 83 |
| `ready/full/payloads-only.txt` | 完全なリスト、1行に1ペイロード | 1,353 |
| `ready/full/by-category/sqli.txt` | SQLインジェクションのみ | 211 |
| `ready/full/by-category/ssti.txt` | テンプレートインジェクションのみ | 206 |
| `ready/full/by-category/deserialization.txt` | デシリアライゼーションのみ | 232 |
| `ready/full/by-category/os-cmd-injection.txt` | OSコマンドインジェクションのみ | 120 |
| `ready/full/by-category/code-injection.txt` | コードインジェクションのみ | 123 |
| `ready/full/by-category/ssrf.txt` | SSRFのみ | 156 |
| `ready/full/by-category/path-traversal.txt` | パストラバーサルのみ | 113 |
| `ready/full/by-category/xss.txt` | XSSのみ | 58 |
| `ready/full/by-category/nosql.txt` | NoSQLインジェクションのみ | 32 |
| `ready/full/by-category/format-string.txt` | フォーマット文字列のみ | 38 |
| `ready/full/by-category/el-injection.txt` | 式言語のみ | 34 |
| `ready/full/by-category/header-crlf.txt` | CRLF/ヘッダーインジェクションのみ | 17 |
| `ready/full/by-category/prototype-pollution.txt` | プロトタイプ汚染のみ | 12 |
| `ready/full/by-category/xxe.txt` | XXEのみ | 11 |
| `ready/full/by-category/ldap-injection.txt` | LDAPインジェクションのみ | 35 |
| `ready/full/by-category/xslt-injection.txt` | XSLTインジェクションのみ | 30 |
| `ready/full/by-category/elasticsearch-injection.txt` | Elasticsearchのみ | 30 |
| `ready/full/by-category/cypher-injection.txt` | Neo4j/Cypherのみ | 27 |
| `ready/full/by-category/couchdb-injection.txt` | CouchDBのみ | 5 |
| `ready/full/by-category/polyglots.txt` | コンテキスト横断ポリグロット | 246 |
| `ready/full/by-pillar/error-payloads-only.txt` | エラーベースペイロード | 324 |
| `ready/full/by-pillar/timing-payloads-only.txt` | タイミングベース(ブラインド) | 227 |
| `ready/full/by-pillar/oob-payloads-only.txt` | アウトオブバンドコールバック | 209 |
| `ready/full/by-pillar/math-payloads-only.txt` | 数学カナリア(1337) | 182 |
| `ready/full/by-pillar/reflected-payloads-only.txt` | リフレクション/エッジケース | 374 |
| `ready/full/encoded/url-encoded/payloads.txt` | URLエンコード版 | 1,353 |
| `ready/full/encoded/base64/payloads.txt` | Base64版 | 1,353 |
| `ready/full/encoded/json-safe/payloads.txt` | JSONセーフ版 | 1,353 |
| `ready/full/encoded/double-url-encoded/payloads.txt` | 二重URLエンコード版 | 1,353 |
| `ready/full/encoded/html-entity/payloads.txt` | HTMLエンティティエンコード版 | 1,353 |
| `ready/full/encoded/hex-escaped/payloads.txt` | 16進エスケープ版 | 1,353 |
| `ready/full/encoded/unicode-escaped/payloads.txt` | Unicodeエスケープ版 | 1,353 |

`ready/minimal/` ディレクトリも同じ構造(by-category、by-pillar、encoded)を持ち、最小ペイロードセットが格納されています。

カスタム出力ディレクトリ:```bash
./tools/payloadctl prepare YOUR_CALLBACK.oastify.com -o /path/to/engagement/payloads

Raw templates with {domain} placeholder (for scripted substitution) are in payloads/lists/full/ and payloads/lists/minimal/.


Detection Pillars

すべてのペイロードは、これらのシグナルの少なくとも1つを生成します。応答でこれらをgrepしてください:

Canary values: 1337 (primary, from 7*191) and 7331 (secondary). Detection is a simple grep.


Payload Coverage

By Vulnerability Class

13 of 20 categories have all 4 pillars. The 7 that don't (XSS, XSLT, Format String, Prototype Pollution, CRLF, XXE, CouchDB) have architectural reasons -- you can't do timing-based CRLF or OOB format strings. Where cross-pillar IS possible, the polyglots section covers it.

Encoded Variants

7 encoding formats, each with all 1,353 payloads:


Design Principles

Minimum payloads, maximum context coverage. See SPEC.md for the full technical specification with per-engine pillar tables and exact payload syntax.

  1. Polyglots first. One payload breaks out of ', ", ), */, -->, backticks, and template delimiters simultaneously. Polyglot sections lead the master list.

  2. Per-engine where polyglots can't reach. SSTI delimiters and deserialization formats are fundamentally incompatible across engines.

  3. Built-in over shell. OOB and timing payloads use language-native libraries:


CLI Tool (payloadctl)```bash

USAGE: prepare payloads for an engagement

./tools/payloadctl prepare abc123.oastify.com # output -> ready/ ./tools/payloadctl prepare abc123.oastify.com -o /tmp/payloads # custom dir

DEVELOPMENT: build, distribute, validate, generate

./tools/payloadctl build # sources/ -> payloads/full.txt ./tools/payloadctl dist # full.txt + minimum.txt -> payloads/lists/full/ + lists/minimal/ ./tools/payloadctl validate # test all 1,353 payloads against 35 testbed stacks ./tools/payloadctl validate # test a specific wordlist (e.g. lists/minimal/master.txt) ./tools/payloadctl generate # regenerate computed payloads (deser, ssti, sqli, misc) ./tools/payloadctl generate deser # deserialization only ./tools/payloadctl generate ssti # SSTI only

root@kitploit:~
### 典型的な開発ワークフロー```bash
# 1. Edit source files
vim payloads/sources/sqli.txt

# 2. Rebuild
./tools/payloadctl build       # rebuild full.txt from sources
./tools/payloadctl dist        # regenerate lists/full/ + lists/minimal/

# 3. Validate (requires Docker testbeds running)
cd testbed && ./testbed up sqli-sqlite && cd ..
./tools/payloadctl validate    # expect: N FIRE / 0 NO-FIRE / 0 SKIPPED

# 4. Prepare for use
./tools/payloadctl prepare YOUR_CALLBACK.oastify.com

リポジトリ構造```

. ├── README.md # This file ├── HOWTOUSE.md # Operator guide: context profiling + category selection matrix ├── SPEC.md # Technical spec - per-engine pillars, payload syntax, coverage │ ├── tools/ # CLI and generators │ ├── payloadctl # CLI entry point │ ├── cmd_build.py # Build full.txt from source files │ ├── cmd_dist.py # Generate lists/ directory │ ├── cmd_validate.py # Validate payloads against testbeds │ ├── cmd_validate_strict.py # Strict validation (proves actual exploitation) │ ├── cmd_generate.py # Run payload generators │ ├── cmd_prepare.py # Prepare payloads with callback domain │ ├── generate-deser-final.py # Deserialization generator (31 frameworks) │ ├── generate-ssti-missing.py # SSTI generator (14 engines) │ ├── generate-sqli-code-missing.py # SQLi and code injection generator │ └── generate-misc-missing.py # XXE, XSS, SSRF, path traversal generator │ ├── payloads/ │ ├── full.txt # Master list (1,353 payloads, with ## headers) │ ├── sources/ # Source files (edit these, all validated) │ │ ├── minimum.txt # 83-payload minimal list (validated, all pillars) │ │ ├── polyglots-condensed.txt # Cross-context polyglots (first in master) │ │ ├── sqli.txt # SQL injection (204) │ │ ├── ssti.txt # Template injection (168) │ │ ├── deserialization.txt # Deserialization (116, 31 frameworks) │ │ ├── os-cmd-injection.txt # OS command injection (116) │ │ ├── code-injection.txt # Code injection (112, includes Groovy) │ │ ├── ssrf.txt # SSRF (117) │ │ ├── path-traversal.txt # Path traversal (98) │ │ ├── xss.txt # XSS (49) │ │ ├── format-string.txt # Format string (33) │ │ ├── nosql.txt # NoSQL (26) │ │ ├── el-injection.txt # Expression language (26, includes MVEL) │ │ ├── header-crlf.txt # CRLF/header (14) │ │ ├── prototype-pollution.txt # Prototype pollution (10) │ │ ├── xxe.txt # XXE (8) │ │ ├── ldap-injection.txt # LDAP injection (30) │ │ ├── xslt-injection.txt # XSLT injection (25) │ │ ├── elasticsearch-injection.txt # Elasticsearch (25) │ │ ├── cypher-injection.txt # Neo4j/Cypher (22) │ │ └── couchdb-injection.txt # CouchDB (4) │ └── lists/ # Generated (don't edit, use payloadctl dist) │ ├── full/ # Full payload set │ │ ├── master.txt # 1,353 payloads with ## headers │ │ ├── payloads-only.txt # Raw lines for Burp Intruder │ │ ├── by-category/ # 20 category files │ │ ├── by-pillar/ # 5 pillar files (with -payloads-only variants) │ │ └── encoded/ # 7 encoding variants │ └── minimal/ # Minimal payload set (same structure) │ ├── master.txt # 83 payloads with ## headers │ ├── payloads-only.txt # Raw lines for Burp Intruder │ ├── by-category/ # 20 category files │ ├── by-pillar/ # 5 pillar files (with -payloads-only variants) │ └── encoded/ # 7 encoding variants │ ├── ready/ # Output from payloadctl prepare (gitignored) │ └── testbed/ # Docker validation infrastructure ├── testbed # CLI: ./testbed up ├── docker-compose.oob.yml # OOB callback catcher (HTTP 9999, TCP 9998, DNS 5353) ├── shared/oob-catcher/ # HTTP + LDAP/binary + raw TCP + DNS callback server └── stacks/ # 35 vulnerable application stacks

root@kitploit:~
## ペイロードの追加

### 既存カテゴリへのペイロード追加

1. `payloads/sources/` 内のソースファイルを編集します。各 `##Header##` セクションの下に1行に1ペイロードを記述します。
2. すべてのペイロードは、検出可能なシグナル(error, math 1337, timing >4.5s, OOB, reflection)を生成する必要があります。
3. リビルドして検証します。   ```bash
   ./tools/payloadctl build && ./tools/payloadctl dist
   ./tools/payloadctl validate    # 0 NO-FIRE required

新しい脆弱性カテゴリを追加する

  1. payloads/sources/<category>.txtを作成し、各柱(error, math, timing, OOB)ごとに##ヘッダーを付ける。
  2. ファイルをtools/cmd_build.pyのSOURCE_FILESとtools/cmd_dist.pyのCATEGORY_SOURCESに追加する。
  3. testbed/stacks/<category>/にテストベッドスタックを作成する(Dockerfile + POST /<endpoint>を公開するサーバー。input=<payload>を受け取り、{"output": "...", "error": "...", "time_ms": N}を返す)。
  4. tools/cmd_validate.pyにエンドポイントルーティングを追加する(ENDPOINTSディクショナリと_get_endpoints()関数)。
  5. 検証: ./tools/payloadctl validate

新しいデシリアライゼーションフレームワークを追加する

  1. tools/generate-deser-final.pyを編集し、ペイロード(error, math, timing, OOB)を出力する関数を追加する。
  2. ./tools/payloadctl generate deser && ./tools/payloadctl build を実行する
  3. 必要に応じてテストベッドのエンドポイントとルーティングを追加する。

新しいSSTIエンジンを追加する

  1. payloads/sources/ssti.txtを編集し、##EngineName (Language) - Pillar##セクションを追加する。タイミング/OOBには言語の組み込み機能を使用する。
  2. 対応するssti-<language>スタックにテストベッドエンドポイントを追加する。
  3. tools/cmd_validate.pyのENGINE_MAPにルーティングを追加する。

ペイロードフォーマットのルール

  • 1行に1ペイロード(複数行のYAMLはリテラルの\nを使用)
  • OOBコールバックURL用の{domain}プレースホルダ
  • すべてのmathペイロード用の1337カナリア
  • ##Header##セクションはカテゴリと柱ごとにグループ化
  • 重複なし(ビルドステップで自動的に重複排除)

検証

バリデータは、実際の脆弱なアプリケーションに対してすべてのペイロードをテストします。```bash

Start testbeds (Docker required)

cd testbed ./testbed up sqli-sqlite ./testbed up ssti-python ./testbed up deserialization-java

... (35 stacks total)

Run validation

cd .. ./tools/payloadctl validate

Output: 1,353 FIRE / 0 NO-FIRE / 0 SKIPPED / 1,353 TOTAL

root@kitploit:~
動作の仕組み:
1. ペイロードファイルを読み込み、各`##`セクションを対応するテストベッドエンドポイントにルーティングします
2. `input=<payload>`をエンドポイントにPOSTし、レスポンス内のシグナルをチェックします
3. ペイロードは、いずれかのエンドポイントが次の条件を満たした場合に発火します: 実際のパーサー/インタプリタエラー、サーバー計算による`1337`(`7*191`から)、4.5秒超の遅延、ターゲットコンテナからのOOBコールバック、ファイル読み取り内容(`root:x:0:0`)、または有効なコンテキスト(XSS、CRLF)での入力の反映

厳格なバリデーション(`tools/cmd_validate_strict.py`)ではさらに以下を検証します:
- 計算ペイロードがサーバーサイドの計算を証明すること(ペイロードは`7*191`を送信し、リテラル`1337`は送信しない)
- OOBコールバックがテストベッドコンテナのIPから発信されていること
- エラーメッセージに実際のパーサー/インタプリタのシグネチャが含まれ、汎用的なHTTPエラーではないこと
- タイミング遅延が想定範囲(約5秒)内であること

### テストベッドスタック(全35スタック)

| スタック | ポート | 言語 | エンドポイント |
|-------|------|----------|-----------|
| sqli-sqlite | 8001 | Python | `/sqli`, `/sqli-numeric` |
| sqli-postgres | 8030 | Python | `/sqli` |
| ssti-python | 8003 | Python | `/jinja2`, `/mako`, `/tornado` |
| ssti-node | 8011 | Node | `/ejs`, `/nunjucks`, `/pug` |
| ssti-php | 8020 | PHP | `/twig`, `/smarty` |
| ssti-ruby | 8025 | Ruby | `/erb`, `/slim`, `/haml` |
| ssti-java | 8040 | Java | `/freemarker`, `/velocity`, `/pebble`, `/thymeleaf` |
| os-cmd-injection | 8002 | Python | `/system`, `/popen` |
| code-injection-python | 8004 | Python | `/eval` |
| code-injection-node | 8012 | Node | `/eval` |
| code-injection-php | 8021 | PHP | `/eval` |
| code-injection-ruby | 8026 | Ruby | `/eval`, `/yaml`, `/marshal`, `/oj` |
| code-injection-perl | 8031 | Perl | `/eval`, `/storable`, `/yaml` |
| xss | 8010 | Node | `/reflected` |
| xxe | 8008 | Python | `/parse`, `/xinclude` |
| ssrf | 8007 | Python | `/fetch` |
| path-traversal | 8006 | Python | `/read` |
| nosql-redis | 8015 | Node | `/eval` |
| el-injection-java | 8041 | Java | `/spel`, `/ognl` |
| prototype-pollution | 8013 | Node | `/merge` |
| deserialization-python | 8005 | Python | `/pickle`, `/yaml`, `/jsonpickle` |
| deserialization-node | 8014 | Node | `/unserialize`, `/yaml`, `/funcster` |
| deserialization-php | 8022 | PHP | `/unserialize`, `/unserialize-b64`, `/phar` |
| deserialization-java | 8042 | Java | `/deserialize`, `/yaml`, `/jackson`, `/fastjson`, `/xstream`, `/xmldecoder`, `/hessian` |
| deserialization-dotnet | 8045 | .NET | `/jsonnet`, `/binaryformatter`, `/xmlserializer`, `/losformatter`, `/javascriptserializer` |
| log4j-jndi | 8046 | Java | `/log` |
| sqli-mysql | 8050 | Python | `/sqli`, `/sqli-numeric` |
| nosql-mongo | 8051 | Node | `/find`, `/where`, `/aggregate` |
| ssi-esi | 8035 | Python | `/ssi` |
| ldap-injection | 8055 | Python + OpenLDAP | `/search`, `/auth` |
| xslt-injection | 8056 | Python | `/transform`, `/xpath` |
| elasticsearch | 8057 | Python + ES 7.17 | `/search`, `/script` |
| cypher-injection | 8058 | Python + Neo4j 5 | `/query`, `/search` |
| couchdb-injection | 8059 | Python + CouchDB 3 | `/find` |
| groovy-injection | 8060 | Groovy/JDK 21 | `/eval` |

OOBキャッチャーはポート9999(HTTP + LDAP/バイナリ検出)および9998(生のTCPキャッチオール)上にあり、DNSは5353/UDP上にあります。HTTPコールバック、LDAP/ASN.1バイナリ接続(JNDI)、DNSクエリ、生のTCP接続を検出します。すべてのエンドポイントは`POST /<sink>`で`input=<payload>`を受け付け、`{"output": "...", "error": "...|null", "time_ms": N}`を返します。

---

## クレジット

ペイロードは[Grom Hacks](https://github.com/gromhacks)によって調査・開発されました。PayloadsAllTheThings、HackTricks、PortSwigger Web Security Academy、および個々の研究者を含むセキュリティ研究コミュニティの成果を基に構築されています。すべてのペイロードは実際の脆弱なアプリケーションに対して検証済みです。
ツールをダウンロード
ペイロード数カテゴリピラー
4SQLierror, math, timing, OOB(方言横断ポリグロット)
4SSTIerror, math, timing, OOB(エンジン横断ポリグロット)
3OSコマンドmath, timing, OOB(シェル横断ポリグロット)
3コードインジェクションmath, timing, OOB(言語横断)
2XSSmath, OOB
2XXEファイル読み取り, OOB
2SSRFerror, OOB
1パストラバーサルファイル読み取り
2NoSQLmath, error
1ELインジェクションmath
1プロトタイプ汚染math
1CRLF/ヘッダーmath
1フォーマット文字列error
1SSImath
2LDAPインジェクションerror, math
3XSLTインジェクションerror, math, OOB
2Elasticsearcherror, math
2Cypher/Neo4jerror, timing
1CouchDBerror
3Groovymath, timing, OOB
41デシリアライゼーションサポートされている場合はマルチピラー、それ以外はエラーのみ
  • ターゲットヒントからカテゴリへのマトリックス - 「id=42とJSESSIONIDが見える」から「by-category/sqli.txt + Javaデシリアライゼーション + ELインジェクションを試して、mathピラーを監視」へと1回のルックアップで移行します。
  • ピラー選択ルール - 発射する前に実際に観測可能なシグナル(OOB > math > timing > error > reflected)を選択し、読み取れないチャネルに対して盲目的にテストしないようにします。
  • PillarPayloadsWhat to look forUse when
    Error324Exception text, stack trace, parser error in responseApp reflects errors
    Timing227Response takes >4.5 secondsBlind - no output, no errors
    OOB209Outbound HTTP/DNS/LDAP/TCP to your callback serverBlind + async - timing unreliable
    Math1821337 literal in response body (server computed 7*191)Output reflected but no errors
    Reflected374Input value echoed back in responseFuzzing for parser anomalies
    File-read(subset)root: or [extensions] content in responsePath traversal, XXE file read
    CategoryCountPillarsCoverage
    SQLi211error, math, timing, oobMySQL, PostgreSQL, Oracle, MSSQL, SQLite, CockroachDB. UNION, error, timing, OOB. Context breakouts: ', ", ), )), */, numeric.
    SSTI206error, math, timing, oobJinja2, Mako, Tornado, EJS, Nunjucks, Pug, Twig, Smarty, ERB, Slim, Haml, Thymeleaf, Pebble, Freemarker, Velocity, Razor, Go template, Mustache, Liquid. All use language built-ins.
    Deserialization232error, math, timing, oob31 frameworks / 7 languages. All language-native payloads use built-ins (no shell commands). Python (pickle P0/P2/P4 via time.sleep/builtins.eval/urllib, YAML via time.sleep/builtins.eval, jsonpickle), PHP (unserialize), Node (node-serialize via JS busy-wait/http.get, js-yaml, funcster, cryo), Ruby (YAML, Marshal, Oj), Java (Jackson, Fastjson, XStream, SnakeYAML, XMLDecoder, Hessian, JNDI/Log4Shell, ObjectInputStream, ysoserial URLDNS), .NET (Json.NET, BinaryFormatter, SoapFormatter, XmlSerializer, JavaScriptSerializer, LosFormatter, ViewState, ObjectStateFormatter), Perl (Storable, YAML).
    OS Cmd Injection120error, math, timing, oobBash, CMD, PowerShell. Breakouts: ;, |, ||, &&, $(), backticks. IFS bypass, glob bypass, hex encoding.
    Code Injection123error, math, timing, oobPython, Node, PHP, Ruby, Perl, Lua, Java ScriptEngine, Groovy. Import-free CPU spin, socket-level OOB.
    SSRF156error, math, timing, oobCloud metadata (AWS/GCP/Azure), IP bypass, protocol schemes, DNS rebinding, internal service probes.
    Path Traversal113error, math, timing, oobLinux + Windows, encoding bypass, null byte, PHP wrappers, UNC, NTFS ADS, 8.3 short names.
    XSS58error, math, oobCross-context polyglots (20+ contexts), event handlers, filter evasion, DOM clobbering, mutation XSS, SVG, OOB.
    Format String38error, mathC/C++ (%s%n%x), Python ({0.__class__}), .NET ({0:X}).
    NoSQL32error, math, timing, oobMongoDB operator injection, $where timing, OOB, Redis commands.
    EL Injection34error, math, timing, oobSpEL, OGNL, MVEL, Unified EL. OOB via java.net.URL.
    CRLF/Header17error, math, oobResponse splitting, header injection, OOB via Host header.
    Prototype Pollution12error, math__proto__, constructor.prototype, JSON and query string variants.
    XXE11error, timing, oob, file-readExternal entities, XInclude, parameter entities, Billion Laughs DoS.
    LDAP Injection35error, math, timing, oobFilter injection, auth bypass, wildcard timing, referral OOB.
    Elasticsearch30error, math, timing, oobPainless script injection, query DSL, query_string syntax.
    Cypher/Neo4j27error, math, timing, oobCypher query injection, APOC sleep, LOAD CSV OOB.
    CouchDB5error, mathMango query injection, operator injection, auth bypass.
    XSLT Injection30error, math, oob, file-readXPath math, document() SSRF, file read, system-property() info leak.
    Polyglots/Edge Cases246error, math, timing, oobCross-context polyglots + buffer overflow, integer boundary, type confusion, null byte.
    EncodingUse case
    URL-encodedStandard query/form parameters
    Double-URL-encodedWAF bypass, double-decode vulns
    Base64API bodies, JWT, serialized params
    JSON-safeJSON request bodies (escaped quotes)
    HTML entityHTML attribute injection
    Hex-escapedBinary protocols, low-level injection
    Unicode-escapedUnicode normalization bypass
    LanguageOOB Built-inTiming Built-in
    Pythonurllib.request.urlopen()time.sleep(5)
    Javajava.net.URL.openStream()Thread.sleep(5000)
    Noderequire('http').get()Date.now() busy-wait loop
    PHPfile_get_contents(), fsockopen()sleep(5)
    RubyNet::HTTP.get(), TCPSocket.new()sleep(5)
    PerlIO::Socket::INETselect(undef,undef,undef,5)
    .NETSystem.Net.WebClientThread.Sleep(5000)

    Shell commands (curl, nslookup) depend on OS and PATH. Built-ins work everywhere.

  • Import-free where possible. CPU spin timing works even when imports are blocked:

    • Python: sum(range(500000000)) (~7s, no imports)
    • Node: Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,5000) (precise 5s)
    • Ruby: 99999999.times{1+1}
  • Socket-level OOB as fallback. When HTTP libraries are blocked: __import__('socket').create_connection(), fsockopen(), TCPSocket.new(), new java.net.Socket().