本文へ移動
cccskills
無料GitHub で公開日本語紹介

ctf-similar-search

CTFの問題名や固有のコード断片を手がかりに、類似問題の解説記事を検索するスキル。関連ページの本文を抽出し、解法や使われた手法を検討する参考にできます。

原文原文の説明を見る

Searches for similar CTF challenge writeups using Tavily API for search and content extraction. Use when the user requests finding related challenges, when solve-challenge has failed multiple times and needs reference solutions, or when first identifying a challenge type and seeking examples.

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • CTFで行き詰まり解法例を探したいとき
  • 固有のコードやエラーから検索したいとき
  • 類似問題で使われた手法の比較

日本語での紹介

できること

CTF(セキュリティ競技)の類似問題を探し、解法を説明した記事を調べるスキルです。Tavily APIで検索し、タイトルや内容の抜粋を確認したうえで、関連しそうなURLの本文を抽出します。大会名や問題名だけでなく、特徴的な関数名、コード断片、エラーメッセージも検索の手がかりにできます。

こんなときに便利

問題の攻略が何度か行き詰まったときや、初めて出会う問題形式の解法例を探したいときに向いています。見つかった記事から共通する手法を読み取り、今の問題に応用できるかを検討するための参考資料を集められます。

使い方の例

  • 「DASCTF URL Storageに似た問題の解説を探して」
  • 「このエラーメッセージを含むCTFの記事を調べて、関連ページの本文を取得して」

注意点

ファイルを扱えるClaude Codeなどのエージェント環境に、bash、Python 3、requests、tavilyが必要です。TAVILY_API_KEYの設定も必要です。通常の検索語は3語以内とし、固有のコード断片や識別文字列はその制限の対象外とする方針です。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(3)

  • SKILL.md6.3 KB
  • search.py6.6 KB
  • search.sh565 B

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

CTF Similar Challenge Search

Search for similar CTF challenge writeups using Tavily API.

Prerequisites

pip install requests tavily

Set your Tavily API key (from https://tavily.com) before running:

export TAVILY_API_KEY='tvly-...'

API Overview

This skill provides two interfaces:

InterfacePurposeCommand
Tavily SearchSearch for writeups and articles./search.sh search <keyword>
Tavily ExtractExtract content from URLs./search.sh extract <url1> [url2] ...

Search Workflow

Step 1: Search with Keywords

Choose keywords based on available information:

Scenario 1: Known Competition + Challenge Name

# Format: [Competition Name] [Challenge Name] — max 3 words
./search.sh search "DASCTF URL Storage"
./search.sh search "HGAME baby web"
./search.sh search "BUUCTF pwn1"

Scenario 2: Challenge Name Only (no competition info)

# Use challenge name directly — max 3 words
./search.sh search "URL Storage"
./search.sh search "baby overflow"
./search.sh search "crypto-rsa"

Scenario 3: Unique Identifiers (code snippets, strings)

# Use unique, non-trivial strings from the challenge — NO word limit
./search.sh search "def encrypt_flag(key): return base64"
./search.sh search "CUSTOM_MAGIC_BYTES"
./search.sh search "ERROR: invalid padding in AES block"

⚠️ Critical: 3-Word Limit for Non-Code Queries

All keyword searches that are NOT code snippets or unique identifier strings MUST NOT exceed 3 words. This constraint ensures precise, focused queries that return relevant CTF writeup results instead of broad, diluted searches.

Search TypeWord LimitExamples
Competition + Challenge name≤ 3 words"DASCTF URL Storage", "HGAME baby web"
Challenge name only≤ 3 words"URL Storage", "baby overflow"
Code snippets / stringsNo limit"def encrypt_flag(key): return base64"
Error messages / identifiersNo limit"CUSTOM_MAGIC_BYTES", "ERROR: invalid padding in AES block"

For competition + challenge name searches, drop filler words (year numbers, "CTF", "competition", "writeup", "solution") and keep only the 3 most distinctive words:

  • ❌ "HGAME 2024 baby web challenge" (5 words)
  • ✅ "HGAME baby web" (3 words)
  • ❌ "DASCTF 2023 URL Storage writeup" (5 words)
  • ✅ "DASCTF URL Storage" (3 words)
  • ❌ "PlaidCTF 2025 zero day exploit solution" (6 words)
  • ✅ "PlaidCTF zero day" (3 words)

For code/string searches, use the entire unique snippet — these are exempt from the word limit:

  • ✅ "def xor_encrypt(data, key):" (code — exempt)
  • ✅ "ERROR: invalid padding in AES block" (error string — exempt)
  • ✅ "CUSTOM_MAGIC_BYTES" (identifier — exempt)

Keyword Rules

✅ Good Keywords❌ Bad Keywords
Competition + Challenge name (≤3 words)Single vulnerability type (SSRF, XSS)
Challenge name (≤3 words)Generic terms (web, pwn, crypto)
Unique code snippets (no word limit)Full sentences
Specific error messages (no word limit)Articles (a, the, in)
Library/framework namesGeneric strings (flag{}, etc.)
Custom function namesTool names alone

Why avoid these?

  • "SSRF" → returns generic vulnerability explanations, not CTF writeups
  • "flag{" → returns millions of unrelated results
  • "URL Storage DASCTF" → returns specific CTF challenges

Why the 3-word limit?

  • Forces precision: only the most distinctive keywords survive
  • Filters noise: filler words like "challenge", "writeup", "solution" dilute results
  • Improves API efficiency: shorter, focused queries consume fewer credits

Key principle: Use keywords that uniquely identify THIS challenge, not the general technique or common patterns. Keep non-code queries to 3 words or fewer.

Step 2: Review Search Results

The search returns:

  • Answer: AI-generated summary if available
  • Results: List of URLs with titles and content previews
  • Credits: API usage information

Step 3: Extract Content (Optional)

If a search result looks promising, extract its full content:

# Single URL
./search.sh extract "https://example.com/writeup"

# Multiple URLs
./search.sh extract "https://url1.com" "https://url2.com"

Step 4: Analyze and Pivot

Based on extracted content:

  • Identify common techniques used in similar challenges
  • Determine if the approach is applicable
  • Pivot to category-specific skill if needed

When to Pivot

  • If the challenge is already well-categorized, use the specific ctf-* skill
  • If you need OSINT techniques, use ctf-osint
  • If you need to generate a writeup after solving, use ctf-writeup

Quick Start

# Scenario 1: Competition + Challenge name (≤3 words)
./search.sh search "DASCTF URL Storage"

# Scenario 2: Challenge name only (≤3 words)
./search.sh search "URL Storage"

# Scenario 3: Unique identifier from challenge (no word limit)
./search.sh search "def xor_encrypt(data, key):"
./search.sh search "ERROR: invalid padding"

# Extract content from promising results
./search.sh extract "https://ctftime.org/writeup/12345"

Tips

  1. Be specific: Use competition name + challenge name when available
  2. Use unique strings: Code snippets, error messages, unique identifiers
  3. Avoid generic terms: Don't search "SSRF CTF writeup" - too broad
  4. Review first: Check search results before extracting
  5. Extract selectively: Only extract URLs that look relevant
  6. Respect the 3-word limit: For non-code queries, strip filler words and keep only the 3 most distinctive keywords

$ARGUMENTS

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

ctf-ai-ml

無料概要あり

CTFのAI・機械学習問題で、モデルの重みや追加学習の差分を調べ、誤分類を誘う入力やプロンプト注入などの手法から、解法の手掛かりを探すスキル。

  • モデルの重みやLoRAを調べたいとき
  • 誤分類を誘う入力を作りたいとき
  • LLMのプロンプト注入問題の検討
ljagiello/ctf-skills3,5172026年10月24日 更新

ctf-crypto

無料概要あり

CTFの暗号問題で、暗号文や実装の特徴から解法を探すスキル。RSAやAES、電子署名、疑似乱数などの弱点を調べ、コード例を参照して復号や鍵の回復を進めます。

  • RSA問題の解法を探したいとき
  • AESの実装上の弱点を調べたいとき
  • 疑似乱数の状態や出力を推定したいとき
ljagiello/ctf-skills3,5172026年10月24日 更新

ctf-forensics

無料概要あり

CTFのディスクやメモリ、ログ、通信記録を分析し、削除ファイルの復元や画像・音声に隠された情報の抽出から、フラグにつながる証拠を探すスキル。

  • ディスクイメージの削除ファイル復元
  • メモリやWindowsログの操作履歴調査
  • PCAPからの通信・転送データ復元
ljagiello/ctf-skills3,5172026年10月24日 更新

ctf-malware

無料概要あり

CTFのマルウェア解析で、難読化スクリプトや実行ファイル、暗号化通信、メモリを調べ、隠された設定や通信先、感染の手掛かりを抽出する手法を案内します。

  • CTFのJavaScriptやPowerShell解析
  • マルウェアの設定や通信先の抽出
  • 通信記録の暗号化通信を調べたいとき
ljagiello/ctf-skills3,5172026年10月24日 更新

ctf-misc

無料概要あり

一般的な分類に収まりにくいCTF問題で、文字コードやQR・音声の謎解き、実行制限のある環境、論理パズルなどを調べ、解法の手掛かりを探すスキル。

  • 多重エンコードやQRの謎解き
  • PythonやBashの実行制限を調べる
  • モールス音声や無線信号の手掛かり抽出
ljagiello/ctf-skills3,5172026年10月24日 更新

ctf-osint

無料概要あり

CTFで公開情報を調べ、写真の撮影場所やアカウント、ドメインの手がかりを追うスキル。画像検索、SNS、DNS記録、過去のWebページを使った調査を支援します。

  • 看板やランドマークから撮影場所を探したいとき
  • ユーザー名やアカウントの履歴調査
  • DNS記録や過去のWebページの調査
ljagiello/ctf-skills3,5172026年10月24日 更新

ljagiello のスキルをすべて見る

このスキルの問題を報告する