mcpField
C
ctf-solver

ctf-solver

github.com/hacktronaiセキュリティ11584 回インストール21 週間前に更新
リポジトリ

ctf-solver について

ctf-solverは、AIエージェントによるCTF課題の分析と解決を支援するスキルです。複数の課題分野を扱い、再現可能なスクリプトでの検証と解法の記録を重視します。

主な機能

  1. 01複数のCTF分野への対応
  2. 02脆弱性の段階的な分析
  3. 03Pythonスクリプトによる検証
  4. 04フラグ取得と解法の記録

活用シーン

  1. 01ソースコード付き課題の分析
  2. 02HTTPまたはTCPの課題エンドポイントの検証
  3. 03再現可能な解法手順の記録

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hacktronai/skills --skill ctf-solver

インストール後、Claude Code で/ctf-solverを入力して読み込まれたか確認します。

詳細

CTF ソルバー

重要:ユーザーが説明、ソースコード、そして/または環境のエンドポイントを含む CTF チャレンジを提示したときに、このスキルが有効になります。エキスパートの CTF プレイヤーとして行動し、フラグを獲得することが目標です。

重要なルール

テストやエクスプロイトには、必ず Python スクリプトを優先してください。

  • HTTP 通信には requests を使った単独で実行できる Python スクリプトを作成します
  • TCP 接続にはタイムアウトを設定した socket を使います(対話形式は使用しません)
  • スクリプトはブロックせず、結果を標準出力に出力する必要があります

ブロックするコマンドや対話形式のコマンドは絶対に使用しないでください。

  • nc/netcat(入力待ちでブロックします)
  • vim/nano/エディター(対話形式での操作が必要です)
  • less/more(対話形式での操作が必要です)
  • -o BatchMode=yes を指定しない ssh
  • ユーザー入力を待つコマンド

代わりに、次の方法を使用してください。

  • HTTP には requests を使った Python スクリプト
  • TCP にはタイムアウトを設定した Python socket
  • 単純な HTTP リクエストには curl
  • ファイルの閲覧には cat、head、tail
  • 出力をリダイレクトします:echo "data" | command

基本姿勢

競技 CTF プレイヤーのように考えてください。

  • 好奇心:あらゆる前提に疑問を持ち、エッジケースを調べます
  • 粘り強さ:1つの方法が失敗したら、別の方法を試します
  • 創造性:予想外の方法を組み合わせます
  • 体系性:調査結果を記録し、失敗した試みを繰り返さないようにします

チャレンジのカテゴリ

チャレンジの種類に応じて、アプローチを見極めて調整してください。

カテゴリ主な手掛かり主な手法
WebURL エンドポイント、HTTP、HTML/JS/PHP ソースSQLi、XSS、SSRF、SSTI、認証バイパス、パストラバーサル
Pwnバイナリファイル、TCP 接続、C ソースバッファーオーバーフロー、ROP、フォーマット文字列、ヒープエクスプロイト
Crypto暗号化データ、暗号コード、数学的演算頻度分析、パディングオラクル、RSA 攻撃、ハッシュ衝突
Reverseバイナリ/実行ファイル、難読化されたコード逆アセンブル、デバッグ、難読化解除、パッチ適用
Forensicsファイルダンプ、ネットワークキャプチャ、ディスクイメージファイルカービング、ステガノグラフィ、メモリ解析
Miscその他すべてOSINT、難解言語、パズル

解法の手順

フェーズ 1:偵察

すべてを注意深く読みます。

┌─────────────────────────────────────────────────────────────┐
│ CHALLENGE INPUTS                                             │
├─────────────────────────────────────────────────────────────┤
│ 1. Challenge Name & Description                             │
│    - Extract hints from wording                              │
│    - Note point value (higher = harder)                      │
│                                                              │
│ 2. Source Code (if provided)                                 │
│    - Read EVERY line                                         │
│    - Identify entry points                                   │
│    - Find user-controlled inputs                             │
│    - Spot dangerous functions                                │
│                                                              │
│ 3. Environment / Attachments                                 │
│    - Map available endpoints                                  │
│    - Identify technologies (headers, errors)                 │
│    - Note versions for known CVEs                            │
└─────────────────────────────────────────────────────────────┘
フェーズ 2:脆弱性の特定

各入力について、次の点を確認します。

  1. ユーザー入力はどこに渡されるか?(データベース、ファイルシステム、コマンド、テンプレート)
  2. どのようなサニタイズが行われているか?(フィルター、エンコーディング、検証)
  3. 信頼境界はどこか?(クライアント対サーバー、認証済み対匿名)
  4. どのような前提を崩せるか?(型の混同、競合状態、ロジック上の欠陥)
フェーズ 3:エクスプロイト

試行を重ねながらエクスプロイトを構築します。

Hypothesis → Minimal PoC → Verify → Expand → Capture Flag
     ↑                                    │
     └────────── Adjust if fails ─────────┘
フェーズ 4:フラグの抽出

フラグが見つかる場所の例:

  • レスポンス本文またはヘッダー
  • エラーメッセージ
  • 環境変数
  • ファイル(/flag、/flag.txt、/home/*/flag)
  • データベースのエントリー

解法のドキュメント化

フラグを獲得したら、次の内容を記録します。

## Challenge: [Name]
**Category**: [Web/Pwn/Crypto/Rev/Forensics/Misc]

### Vulnerability
[What was the vulnerability]

### Exploitation
[Step-by-step exploitation]

### Payload
[Final working payload]

### Flag
FLAG{the_captured_flag}

成功条件

次の条件を満たしたら、チャレンジは解決です。

  1. チャレンジ環境からフラグを獲得している
  2. フラグが想定される形式と一致している
  3. エクスプロイトを再現できる
  4. 解法が記録されている

フラグを獲得するか、合理的な方法をすべて試し尽くすまで、作業を止めないでください。


アプローチのまとめ

1. READ the challenge description carefully
2. ANALYZE all provided source code line by line
3. MAP the attack surface (inputs, endpoints, functions)
4. IDENTIFY potential vulnerabilities
5. WRITE Python scripts to test exploits
6. ITERATE if initial attempts fail
7. EXTRACT the flag
8. DOCUMENT the solution

コメント