ctf-web
CTFにおけるWebアプリケーションの脆弱性を攻略するための技術を提供します。XSS・SQLi・SSTI・SSRF・XXE・JWT・認証バイパス・ファイルアップロード・リクエストスマグリング・OAuth/OIDC・SAML・プロトタイプ汚染など、HTTP/APIアプリやブラウザクライアント、テンプレートエンジン、スマートコントラクトのフロントエンド/バックエンドを主な対象とする問題で使用してください。ネイティブバイナリのメモリ破壊、スタンドアロン実行ファイルのリバースエンジニアリング、ディスク/メモリフォレンジクス、純粋な暗号解析が主眼となる問題には使用しないでください。
description の原文を見る
Provides web exploitation techniques for CTF challenges. Use when the target is primarily an HTTP application, API, browser client, template engine, identity flow, or smart-contract frontend/backend surface, including XSS, SQLi, SSTI, SSRF, XXE, JWT, auth bypass, file upload, request smuggling, OAuth/OIDC, SAML, prototype pollution, and similar web bugs. Do not use it for native binary memory corruption, reverse engineering of standalone executables, disk or memory forensics, or pure cryptanalysis unless the web flaw is still the main path to the flag.
SKILL.md 本文
CTF Web 悪用
Web ベースのチャレンジ向けのルーティングと実行ガイドとしてこのスキルを使用してください。最初のパスは短く保つ:アプリをマッピングし、信頼境界を確認してから、詳細な技法ノートに進みます。
前提条件
Python パッケージ (すべてのプラットフォーム):
pip install sqlmap flask-unsign requests
Linux (apt):
apt install hashcat jq curl
macOS (Homebrew):
brew install hashcat jq curl
Go ツール (すべてのプラットフォーム、Go が必須):
go install github.com/ffuf/ffuf/v2@latest
手動インストール:
- ysoserial — GitHub、Java が必須 (Java デシリアライゼーション ペイロード)
追加リソース
sql-injection.md- SQL インジェクション技法:認証バイパス、UNION 抽出、フィルタバイパス、セカンドオーダー SQLi、トランケーション、レース支援リーク、INSERT ON DUPLICATE KEY UPDATE パスワード上書き、innodb_table_stats WAF バイパスserver-side.md- PHP 型の綱引き、php://filter LFI、Python str.format トラバーサル、SSTI (Jinja2、Twig、ERB、Mako、EJS、Vue.js、Smarty)、SSRF (ホストヘッダ、DNS リバインディング、curl リダイレクト、エスケープなしドット正規表現、SNI FTP スマグリング、mod_vhost_alias)、PHP hash_hmac NULLserver-side-2.md- XXE (基本、OOB、DOCX アップロード)、X-Forwarded-For 経由の XML インジェクション、PHP 変数変数、PHP uniqid 予測可能なファイル名、シーケンシャル正規表現置換バイパス、コマンドインジェクション (改行、ブロックリスト、sendmail CGI、マルチバーコード、git CLI)、GraphQL インジェクション (イントロスペクション、バッチ、補間)server-side-exec.md- 直接的なコード実行パス、アップロード to RCE、デシリアライゼーション隣接実行、LaTeX インジェクション、ヘッダとAPI 乱用server-side-exec-2.md- その他の実行チェーン:SQLi フラグメンテーション、パスパーサのトリック、ポリグロットアップロード、ラッパー乱用、ファイル名インジェクション、ファイル名トランケーション付き BMP ピクセルウェブシェルserver-side-deser.md- Java/Python/PHP デシリアライゼーションとレース条件プレイブック、デシリアライゼーション経由の PHP SoapClient CRLF SSRFserver-side-advanced.md- 高度な SSRF、トラバーサル、アーカイブ、パーサ、フレームワーク、および最新アプリサーバの問題、Nginx alias トラバーサルserver-side-advanced-2.md- Docker API SSRF、Castor/XML、Apache 式の読み取り、パーサの不一致、Windows パストリック、ローグ MySQL サーバファイル読み取りserver-side-advanced-3.md- Part 3 (CSAW/35C3/ASIS/PlaidCTF 2018):WAV ポリグロットアップロード、マルチスラッシュ URLpath.startswithバイパス、Xalan XSLTmath:random()シード推測、SoapClient_user_agentCRLF メソッドスマグリング、gopher:///ノーホスト URL スキームバイパス、SSRF 認証情報リーク(攻撃者指定の送信 URL 経由)server-side-advanced-4.md- Part 4:WeasyPrint SSRF/ファイル読み取り (CVE-2024-28184)、MongoDB regex/$where ブラインドオラクル、Pongo2 Go テンプレートインジェクション、ZIP PHP ウェブシェル、basename() バイパス、wget CRLF SSRF→SMTP、Gopher SSRF to MySQL ブラインド SQLi、React Server Components Flight RCE (CVE-2025-55182)、AMQP/TLS インターセプション via sslsplit+arpspoof、CairoSVG XXE、Bazaar リポジトリ再構築client-side.md- XSS、CSRF、キャッシュポイズニング、DOM トリック、管理者ボット乱用、リクエストスマグリング、ペイウォールバイパスclient-side-advanced.md- CSP バイパス、Unicode トリック、XSSI、CSS 流出、ブラウザ正規化の奇妙な動作、postMessage null origin バイパスauth-and-access.md- 認証/認可バイパス、隠されたエンドポイント、IDOR、リダイレクトチェーン、サブドメインテークオーバー、AI チャットボットジェイルブレークauth-and-access-2.md- Part 2 (2018年代):std::unordered_setバケット衝突認証バイパス、nodeprep.prepareUnicode 同形ユーザ名衝突、SRP A=0/A=N 認証バイパス、ArangoDB AQL MERGE 特権昇格auth-jwt.md- JWT/JWE 操作、弱いシークレット、ヘッダインジェクション、キー混同、リプレイauth-infra.md- OAuth/OIDC、SAML、CORS、CI/CD シークレット、IdP 乱用、ログインポイズニングnode-and-prototype.md- プロトタイプポルーション、JS サンドボックスエスケープ、Node.js 攻撃チェーンweb3.md- Solidity と Web3 チャレンジノートcves.md- CVE ドリブン技法。チャレンジバナー、ヘッダ、依存関係リーク、またはバージョン文字列と照合可能field-notes.md- 長編エクスプロイトノート:SQLi、XSS、LFI、JWT、SSTI、SSRF、コマンドインジェクション、XXE、デシリアライゼーション、レース条件、認証バイパス、およびマルチステージチェーンのクイックリファレンス
ピボットするタイミング
- ターゲットがネイティブバイナリ、カスタム VM、またはファームウェアイメージの場合、最初に
/ctf-reverseに切り替えてください。 - HTTP バグのみがコード実行を提供し、難しい部分がメモリ破損または seccomp エスケープになる場合、
/ctf-pwnに切り替えてください。 - 「Web」チャレンジが JWT 数学、カスタム MAC、または暗号プリミティブに依存している場合、
/ctf-cryptoに切り替えてください。 - Web チャレンジにログ、PCAP の分析、または Web サーバからのアーティファクト回復が含まれる場合、
/ctf-forensicsに切り替えてください。 - チャレンジがエクスプロイト前に公開 Web ソース、DNS レコード、またはソーシャルメディアから情報を収集する必要がある場合、
/ctf-osintに切り替えてください。
ファーストパスワークフロー
- 実際の境界を識別:ブラウザのみ、バックエンドのみ、混合アプリ、または認証フロー。
- ファジングする前に、すべてのメジャー機能について1つの通常のリクエスト/レスポンスペアをキャプチャします。
- JS バンドル、レスポンスヘッダ、ルート、および代替メソッドから隠された機能を列挙します。
- 可能性の高いバグファミリーを分類:インジェクション、認可、パーサミスマッチ、アップロード、信頼プロキシ、状態マシン、またはクライアント側実行。
- 最小の証明を構築:リーク、バイパス、またはプリミティブ。フルエクスプロイトチェーンの作成は後に取っておきます。
クイックスタートコマンド
# 偵察
curl -sI https://target.com
ffuf -u https://target.com/FUZZ -w wordlist.txt
curl -s https://target.com/robots.txt
# SQLi クイックテスト
sqlmap -u "https://target.com/page?id=1" --batch --dbs
# JWT デコード (検証なし)
echo '<token>' | cut -d. -f2 | base64 -d 2>/dev/null | jq .
# Cookie デコード (Flask)
flask-unsign --decode --cookie '<cookie>'
flask-unsign --unsign --cookie '<cookie>' --wordlist rockyou.txt
# SSTI プローブ
curl "https://target.com/page?name={{7*7}}"
curl "https://target.com/page?name={{config}}"
# リクエスト検査
curl -v -X POST https://target.com/api -H "Content-Type: application/json" -d '{}'
最初に答えるべき質問
- フラグはブラウザ、API レスポンス、ローカルファイル、データベース行、または内部サービスにある可能性がありますか?
- アプリはユーザ制御データをテンプレート、リダイレクト、ファイルパス、ヘッダ、シリアライズされたオブジェクト、またはバックグラウンドジョブで信頼していますか?
- 複数のパーサが互いに不一致しているか:プロキシ対アプリ、URL パーサ対フェッチャ、サニタイザ対ブラウザ、シリアライザ対フィルタ?
- バグをより小さなプリミティブに変えることができるか:1 つのファイルを読む、1 つのトークンを偽造する、1 つの内部エンドポイントを呼び出す、1 つのボット訪問をトリガー?
高価値な偵察チェック
- API サーフェスを推測する前に、HTML、インラインスクリプト、バンドルされた JS を読みます。
- UI が送信するものと、バックエンドが受け入れるものを比較します。オプションの JSON フィールドはしばしば隠されたパスをロック解除します。
- 明らかなメタデータとヘルパーパスを早期に確認:
/robots.txt、/sitemap.xml、/.well-known/、/admin、/debug、/.git/、/.env。 - 興味深いルートで代替動詞とコンテンツタイプを試す:
GET、POST、PUT、PATCH、TRACE、JSON、form、multipart、XML。 - ファイルアップロード、PDF/エクスポート、ウェブフック、OAuth コールバック、管理ボット機能を可能性の高いエクスプロイト乗数として扱います。
高速パターンマップ
- SQL エラー、奇妙なフィルタリング、または状態依存 DB 動作:
sql-injection.mdで始めます。 - テンプレート、ファイル読み取り、SSRF、コマンド実行、XML、またはパーサバグ:
server-side.mdとserver-side-exec.mdで始めます。 - XSS、CSP バイパス、管理者ボット、クライアントルーティング、DOM 問題、またはスクリプトレス流出:
client-side.mdで始めます。 - セッション偽造、隠された管理ルート、JWT、OAuth、SAML、または弱い信頼境界:
auth-and-access.md、auth-jwt.md、およびauth-infra.mdで始めます。 - Node.js アプリ、プロトタイプポルーション、VM サンドボックス、または内部サービスへの SSRF:
node-and-prototype.mdを追加します。 - スマートコントラクトフロントエンドまたはブロックチェーン統合アプリ:
web3.mdを追加します。
一般的なチェーン形状
- 偵察 -> 隠されたルート -> 認証バイパス -> 内部ファイル読み取り -> トークンまたはフラグ
- XSS または HTML インジェクション -> 管理ボット -> 特権アクション -> シークレットリーク
- トラバーサルまたはアップロード -> 設定/ソースリーク -> シークレット回復 -> セッション偽造
- SSRF -> メタデータまたは内部 API -> 認証情報リーク -> コード実行
- SQLi または NoSQL インジェクション -> 認証情報バイパス -> セカンドステージテンプレートまたはアップロード乱用
ディープダイブノート
チャレンジが真に Web ヘビーであることを確認し、長いエクスプロイトカタログが必要になったら、field-notes.md を使用します。
- 偵察、SQLi、XSS、トラバーサル、JWT、SSTI、SSRF、XXE、およびコマンドインジェクションのクイックノート
- デシリアライゼーション、レース条件、ファイルアップロード to RCE、およびマルチステージチェーン例
- Node、OAuth/SAML、CI/CD、Web3、ボット乱用、CSP バイパス、および最新ブラウザトリック
- CVE 形のプレイブックと、最新の CTF にも表示される古いチャレンジパターン
一般的なフラグの場所
- ファイル:
/flag.txt、/flag、/app/flag.txt、/home/*/flag* - 環境:
/proc/self/environ、プロセスコマンドライン、デバッグ設定ダンプ - データベース:
flag、flags、secretという名前のテーブル、またはシードされたチャレンジコンテンツ - HTTP:カスタムヘッダ、アーカイブレスポンス、隠されたルート、管理エクスポート
- ブラウザ:隠された DOM ノード、
data-*属性、インラインステートオブジェクト、ソースマップ
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- ljagiello
- リポジトリ
- ljagiello/ctf-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/ljagiello/ctf-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。