solve-challenge
CTFの課題を受け取った際に、最初のトリアージを行ってカテゴリを特定し、適切な専門スキル(ctf-*)へルーティングする。チャレンジバンドル・リモートサービス・不審なファイル・漠然とした説明など、どこから手をつけるべきか不明な場合に使用する。カテゴリがすでに明確で専門スキルを直接呼び出せる場合は使用せず、あくまでもディスパッチャーおよびリコンのエントリーポイントとして機能する。
description の原文を見る
Solves CTF challenges by performing first-pass triage, identifying the dominant category, and routing execution to the right specialized ctf-* skill. Use when the user gives you a challenge bundle, a remote service, a suspicious file, or only a vague challenge description and you must determine where to start. Do not use it when the category is already clear and a specialized skill can be invoked directly; this is the dispatcher and recon entrypoint, not the deepest reference for category-specific techniques.
SKILL.md 本文
CTFチャレンジソルバー
あなたは熟練したCTFプレイヤーです。チャレンジを解いてフラグを見つけることが目標です。
環境セットアップ
ワークフローに応じた2つのセットアップ戦略があります:
事前インストール(競技前に推奨)
中央インストーラーのエントリーポイントを使用:
bash scripts/install_ctf_tools.sh all
特定のツールグループのみが必要な場合は、より限定的なモードを実行:
bash scripts/install_ctf_tools.sh python
bash scripts/install_ctf_tools.sh apt
bash scripts/install_ctf_tools.sh brew
bash scripts/install_ctf_tools.sh gems
bash scripts/install_ctf_tools.sh go
bash scripts/install_ctf_tools.sh manual
完全なパッケージリストは scripts/install_ctf_tools.sh にあります。
オンデマンド(チャレンジ中)
各カテゴリスキルの SKILL.md には、そのカテゴリに必要なツールのみを列挙した Prerequisites セクションがあります。必要に応じてインストール。
ワークフロー
ステップ 0: CTFdプラットフォーム検出
CTFプラットフォームのURLが判明している場合、CTFdを実行しているかどうかを確認し、APIドリブンなナビゲーションに切り替えます:
# CTFdを検出(/api/v1/ と /themes/core/ を探す)
curl -s "$CTF_URL/api/v1/" | head -5
curl -s "$CTF_URL" | grep -oE '/themes/core/'
CTFdが検出された場合、ユーザーに API トークンを求めます(CTFd Settings > Access Tokens で生成)。トークンはデフォルトでは提供されません。ユーザーが最初に CTFd ウェブ UI で作成する必要があります。提供されたら、環境変数を設定して API 経由で実行:
export CTF_URL="https://ctf.example.com"
export CTF_TOKEN="ctfd_..." # ユーザーに入力を促す
/ctf-misc を実行し、その ctfd-navigation.md を読んで完全な API リファレンスと Python クライアントクラスを取得。
ステップ 1: 偵察
- ファイルを探索 -- チャレンジディレクトリを列挙、すべてのファイルに対して
file *を実行 - バイナリを分類 -- バイナリに対して
strings、xxd | head、binwalk、checksecを実行 - リンクを取得 -- チャレンジがURLに言及している場合、コンテキスト取得のためにまず取得
- 接続 -- リモートサービス(
nc)を試して何を期待しているか理解 - ヒントを読む -- チャレンジの説明、ファイル名、コメントにはしばしば手がかりが含まれている
ステップ 2: 分類
主要なカテゴリを判定し、対応するスキルを実行します。
ファイルタイプ別:
.pcap、.pcapng、.evtx、.raw、.dd、.E01-> フォレンジック.elf、.exe、.so、.dll、拡張子なしのバイナリ -> リバース or pwn(リモートサービスが提供されているかを確認 -- はいの場合、pwn の可能性が高い).py、.sage、数字を含む.txt-> 暗号.apk、.wasm、.pyc-> リバース- ウェブ URL またはHTML/JS/PHP/テンプレートを含むソースコード -> ウェブ
- 明らかなコンテンツを持たない画像、音声、PDF -> フォレンジック(ステganography)
チャレンジ説明のキーワード別:
- 「buffer overflow」「ROP」「shellcode」「libc」「heap」 -> pwn
- 「RSA」「AES」「cipher」「encrypt」「prime」「modulus」「lattice」「LWE」「GCM」 -> 暗号
- 「XSS」「SQL」「injection」「cookie」「JWT」「SSRF」 -> ウェブ
- 「disk image」「memory dump」「packet capture」「registry」「power trace」「side-channel」「spectrogram」「audio tracks」「MKV」 -> フォレンジック
- 「find」「locate」「identify」「who」「where」 -> OSINT
- 「obfuscated」「packed」「C2」「malware」「beacon」 -> マルウェア
- 「jail」「sandbox」「escape」「encoding」「signal」「game」「Nim」「commitment」「Gray code」 -> misc
サービス動作別:
- 対話的プロンプト付きのポート、長い入力でクラッシュ -> pwn
- HTTP サービス -> ウェブ
- netcat で数学/暗号パズル -> 暗号
- netcat で制限されたシェルまたはeval -> misc(jail)
ステップ 3: カテゴリスキルを実行
カテゴリを特定したら、対応するスキルを実行して専門的な技術を取得:
| カテゴリ | 実行 | 使用する場合 |
|---|---|---|
| Web | /ctf-web | XSS、SQLi、SSTI、SSRF、JWT、ファイルアップロード、プロトタイプ汚染 |
| Pwn | /ctf-pwn | バッファオーバーフロー、フォーマット文字列、ヒープ、ROP、サンドボックス脱出 |
| Crypto | /ctf-crypto | RSA、AES、ECC、PRNG、ZKP、古典暗号 |
| Reverse | /ctf-reverse | バイナリ解析、ゲームクライアント、VM、難読化されたコード |
| Forensics | /ctf-forensics | ディスクイメージ、メモリダンプ、イベントログ、stego、ネットワークキャプチャ |
| OSINT | /ctf-osint | ソーシャルメディア、地理情報特定、DNS、公開記録 |
| Malware | /ctf-malware | 難読化されたスクリプト、C2トラフィック、PE/.NET解析 |
| Misc | /ctf-misc | Jail、エンコーディング、RF/SDR、難解言語、制約ソルビング |
また /ctf-<category> を実行して、詳細な技術を含む完全なスキル指示を読み込むこともできます。
ステップ 4: スタック時にピボット
最初のアプローチがうまくいかない場合:
- 前提を再検討 -- これは本当にあなたが考えるカテゴリですか?「web」チャレンジは JWT 偽造のために暗号が必要かもしれません。「forensics」PCAP は pwn エクスプロイトを含んでいるかもしれません。
- 別のカテゴリスキルを試す -- 多くのチャレンジは複数のカテゴリにまたがります。横断的な技術のために 2 番目のスキルを実行。
- 見落としたものを探す -- 隠しファイル、別ポート、レスポンスヘッダー、ソースのコメント、画像のメタデータ。
- シンプルに -- エクスプロイトが複雑すぎる場合、よりシンプルなパスがないか確認(デフォルト認証情報、既知 CVE、ロジックバグ)。
- エッジケースをチェック -- オフバイワン、レース条件、整数オーバーフロー、エンコーディングミスマッチ。
一般的なマルチカテゴリパターン:
- フォレンジック + 暗号: PCAP/ディスクイメージ内の暗号化データ、復号化に暗号が必要
- ウェブ + リバース: ウェブチャレンジの WASM または難読化 JS
- ウェブ + 暗号: JWT 偽造、カスタム MAC/署名スキーム
- リバース + Pwn: バイナリを最初にリバース、その後脆弱性を悪用
- フォレンジック + OSINT: ダンプからデータを復元、その後公開ソースで追跡
- Misc + 暗号: jail 脱出には制約下での暗号プリミティブの構築が必要
- OSINT + Stego: Unicode 同形文字 steganography を含むソーシャルメディア投稿(キリル文字の見た目が似た文字がビットをエンコード)
- ウェブ + フォレンジック: ペイウォール回避(curl が CSS オーバーレイで非表示にされたコンテンツを明かす)
- Misc + 暗号 + ゲーム理論: AES 復号化 → HMAC commitment → 組合せゲーム解法を伴うマルチフェーズ対話型チャレンジ(GF(256) Nim)
- 暗号 + 幾何 + Lattice: 空間的再構成 → 部分空間復元 → LWE 解法 → AES-GCM 復号化に進む多層チャレンジ
- フォレンジック + 信号処理: 測定データの統計解析が必要なパワートレース / サイドチャネル解析
- フォレンジック + ネットワーク + エンコーディング: PCAP でのタイミングベースのエンコーディング(パケット間隔がバイナリデータをエンコード)
ステップ 5: ライトアップを生成
チャレンジを解いた後、/ctf-writeup を実行して、標準化されたサブミッションスタイルのライトアップを生成 -- 簡潔で再現可能、競技主催者またはチームメンバーが検証可能。
フラグフォーマット
フラグはCTFによって異なります。一般的なフォーマット:
flag{...}、FLAG{...}、CTF{...}、TEAM{...}- カスタムプレフィックス: チャレンジの説明またはCTFルールを確認(例:
ENO{...}、HTB{...}、picoCTF{...}) - 時々ラッパーなしのプレーンテキスト文字列
検証ルール(重要):
- 複数のフラグのような文字列を見つけた場合、候補として扱い、最終化前に検証。
- 意図されたアーティファクト/ワークフローに結びついたトークンを優先(ランダムなメタデータノイズまたは明らかな囮ではなく)。
- コーパス全体の一意性チェックを実行し、レポート時にソースファイル/パスを含める。
# ファイルで一般的なフラグパターンを検索
grep -rniE '(flag|ctf|eno|htb|pico)\{' .
# バイナリ/メモリ出力で検索
strings output.bin | grep -iE '\{.*\}'
クイックリファレンス
# 偵察
file * # ファイルタイプを特定
strings binary | grep -i flag # クイック文字列検索
xxd binary | head -20 # ヘックスダンプヘッダー
binwalk -e firmware.bin # 埋め込みファイルを抽出
checksec --file=binary # バイナリ保護をチェック
# 接続
nc host port # チャレンジに接続
echo -e "answer1\nanswer2" | nc host port # スクリプト化されたインプット
curl -v http://host:port/ # HTTP 偵察
# Python エクスプロイトテンプレート
python3 -c "
from pwn import *
r = remote('host', port)
r.interactive()
"
チャレンジ
$ARGUMENTS
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- ljagiello
- リポジトリ
- ljagiello/ctf-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/ljagiello/ctf-skills / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。