ctf-skills is a collection of agent instructions for solving capture-the-flag security challenges, including web exploitation, binary vulnerabilities, cryptography, reverse engineering, forensics, and OSINT. It is intended for agents and people working through CTF problems, and its skills can be loaded into supported coding-agent workflows.
Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/ljagiello/ctf-skillsnpx agentmods add skills/ljagiello/ctf-skills/ctf-webWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ljagiello/ctf-skills/ctf-web)<a href="https://agentmods.dev/skills/ljagiello/ctf-skills/ctf-web"><img src="https://agentmods.dev/badge/skills/ljagiello/ctf-skills/ctf-web/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ljagiello/ctf-skills/ctf-web"><img src="https://agentmods.dev/badge/skills/ljagiello/ctf-skills/ctf-web.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- Socket fail
- Snyk pass
- NVIDIA SkillSpector warn
SkillSpector: 3 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high YARA Match · line 88 YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).Fix: Remove offensive tool references and exploit code. Legitimate agent skills should not contain penetration testing tools, exploit frameworks, or reconnaissance utilities.
- medium Excessive Agency · line 90 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
- medium Data Exfiltration · line 98 Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.Fix: Verify the destination URL is trusted and necessary. Remove or replace with documented APIs. Ensure no secrets, tokens, or PII are transmitted.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00124 | $0.04324 |
| Opus 5.5 | $0.00050 | $0.01730 |
| Sonnet 5.5 | $0.00025 | $0.00865 |
| Haiku 4.5 | $0.00012 | $0.00432 |
Grade B, and why
ctf-web scanned grade B with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Sends data to an external URLmediumData exfiltration
A POST to an outside endpoint may be telemetry or may be exfiltration; either way the mod talks to somewhere, and you should know where.
curl -v -X POST https://target.com/api -H "Content-Type: application/json" -d '{}' Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
apt install hashcat jq curl Copies of this mod
2 near-identical copies found in the catalogue:
- ctf-web — 100% identical, 64 lines differ
- fieldops-ctf-web — 86% identical, 126 lines differ
How it starts
The opening of the file, as written. The whole thing — 246 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CTF Web Exploitation
Use this skill as a routing and execution guide for web-heavy challenges. Keep the first pass short: map the app, confirm the trust boundary, and only then dive into the detailed technique notes.
Prerequisites
Python packages (all platforms):
pip install sqlmap flask-unsign requests httpx
Linux (apt):
apt install hashcat jq curl
macOS (Homebrew):
brew install hashcat jq curl
Go tools (all platforms, requires Go):
go install github.com/ffuf/ffuf/v2@latest
Manual install:
- ysoserial — GitHub, requires Java (Java deserialization payloads)
- PayloadsAllTheThings — git clone to ctf-web/payloads/PayloadsAllTheThings (auto via install script or lazy clone)
bash scripts/install_ctf_tools.sh pat # PAT only bash scripts/install_ctf_tools.sh all # all tools including PAT # manual fallback: git clone --depth 1 https://github.com/swisskyrepo/PayloadsAllTheThings.git ctf-web/payloads/PayloadsAllTheThingsPAT is optional and on-demand — not required at load time. The skill works without it (graceful degrade):
pat-reference.mdprovides an offline index with exemplar payloads; bulk wordlists require the clone above.
MCP servers (optional): Playwright MCP (microsoft/playwright-mcp) for browser-dependent challenges (DOM XSS, admin bot, SPA client secrets) and Burp Suite MCP (PortSwigger/mcp-server) for wire-level work (header-level HTTP/1.1+HTTP/2 control, smuggling, blind SSRF/XXE via Collaborator, proxy-history regex mining) — see tools-mcp.md. Two things to do before relying on Burp MCP: start Burp before the agent, and turn off the two approval gates in Burp's MCP tab or the first tool call blocks on a modal dialog.
Additional Resources
- sql-injection.md - SQL injection techniques: auth bypass, UNION extraction, filter bypasses, second-order SQLi, truncation, race-assisted leaks, INSERT ON DUPLICATE KEY UPDATE password overwrite, innodb_table_stats WAF bypass
- server-side.md - PHP type juggling, php://filter LFI, Python str.format traversal, SSTI (Jinja2, Twig, ERB, Mako, EJS, Vue.js, Smarty), SSRF (Host header, DNS rebinding, curl redirect, unescaped-dot regex, SNI FTP smuggling, mod_vhost_alias), PHP hash_hmac NULL
- server-side-2.md - XXE (basic, OOB, DOCX upload), XML injection via X-Forwarded-For, PHP variable variables, PHP uniqid predictable filename, sequential regex replacement bypass, command injection (newline, blocklist, sendmail CGI, multi-barcode, git CLI), GraphQL injection (introspection, batching, interpolation)
- server-side-exec.md - Direct code execution paths, upload-to-RCE, deserialization-adjacent execution, LaTeX injection, header and API abuses
- server-side-exec-2.md - More execution chains: SQLi fragmentation, path parser tricks, polyglot uploads, wrapper abuse, filename injection, BMP pixel webshell with filename truncation
- server-side-deser.md - Java/Python/PHP deserialization and race-condition playbooks, PHP SoapClient CRLF SSRF via deserialization
- server-side-advanced.md - Advanced SSRF, traversal, archive, parser, framework, and modern app-server issues, Nginx alias traversal
- server-side-advanced-2.md - Docker API SSRF, Castor/XML, Apache expression reads, parser discrepancies, Windows path tricks, rogue MySQL server file read
- server-side-advanced-3.md - Part 3 (CSAW/35C3/ASIS/PlaidCTF 2018): WAV polyglot upload, multi-slash URL
path.startswithbypass, Xalan XSLTmath:random()seed guess, SoapClient_user_agentCRLF method smuggling,gopher:///no-host URL scheme bypass, SSRF credential leak via attacker-specified outbound URL - server-side-advanced-4.md - Part 4: WeasyPrint SSRF/file read (CVE-2024-28184), MongoDB regex/$where blind oracle, Pongo2 Go template injection, ZIP PHP webshell, basename() bypass, wget CRLF SSRF→SMTP, Gopher SSRF to MySQL blind SQLi, React Server Components Flight RCE (CVE-2025-55182), AMQP/TLS interception via sslsplit+arpspoof, CairoSVG XXE, Bazaar repo reconstruction
- client-side.md - XSS, CSRF, cache poisoning, DOM tricks, admin bot abuse, request smuggling, paywall bypass
- client-side-advanced.md - CSP bypasses, Unicode tricks, XSSI, CSS exfiltration, browser normalization quirks, postMessage null origin bypass
- auth-and-access.md - Auth/authz bypasses, hidden endpoints, IDOR, redirect chains, subdomain takeover, AI chatbot jailbreaks
- auth-and-access-2.md - Part 2 (2018-era):
std::unordered_setbucket collision auth bypass,nodeprep.prepareUnicode homograph username collision, SRP A=0/A=N auth bypass, ArangoDB AQL MERGE privilege escalation - auth-jwt.md - JWT/JWE manipulation, weak secrets, header injection, key confusion, replay
- auth-infra.md - OAuth/OIDC, SAML, CORS, CI/CD secrets, IdP abuse, login poisoning
- node-and-prototype.md - Prototype pollution, JS sandbox escape, Node.js attack chains
- web3.md - Solidity and Web3 challenge notes
- cves.md - CVE-driven techniques you can match against challenge banners, headers, dependency leaks, or version strings
- field-notes.md - Long-form exploit notes: quick references for SQLi, XSS, LFI, JWT, SSTI, SSRF, command injection, XXE, deserialization, race conditions, auth bypass, and multi-stage chains
- tools-mcp.md - MCP server integration for web: Playwright MCP (admin-bot DOM XSS reproduction, live DOM/console/network inspection,
browser_network_requestslists endpoints but onlybrowser_network_request part="response-body"returns payloads) and Burp Suite official MCP (27 tools, approval gates that block the agent on a modal dialog, target triple decoupling socket fromHost:header,normalizeHttpContentrewriting CR/LF in the request prelude, map-based HTTP/2 that cannot express duplicate headers,send_to_intruderstages only, proxy history truncating items at 5000 chars, CollaboratorpayloadId/customDataPro-only); when to use each vs curl and ffuf - python-requests.md - Python requests toolkit: session scaffold, Burp-Intruder-like fuzzer (sync + ThreadPoolExecutor + httpx async), payload deploy from pat-reference.md wordlists, header/param spray, cookie/JWT, proxy
- pat-reference.md — PayloadsAllTheThings index: bulk payloads for XSS/SQLi/SSRF/SSTI/LFI/Command Injection/Upload (requires PAT clone, see Prerequisites)
What ships with it
24 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- auth-and-access-2.md 5.1 KB
- auth-and-access.md 59 KB
- auth-infra.md 17 KB
- auth-jwt.md 11 KB
- client-side-advanced.md 39 KB
- client-side.md 24 KB
- cves.md 16 KB
- field-notes.md 43 KB
- node-and-prototype.md 6.7 KB
- pat-reference.md 13 KB
- python-requests.md 20 KB
- scripts/async_fuzz.py 6.9 KB runs code
- server-side-2.md 15 KB
- server-side-advanced-2.md 26 KB
- server-side-advanced-3.md 6.9 KB
- server-side-advanced-4.md 22 KB
- server-side-advanced.md 16 KB
- server-side-deser.md 22 KB
- server-side-exec-2.md 39 KB
- server-side-exec.md 21 KB
- server-side.md 30 KB
- sql-injection.md 38 KB
- tools-mcp.md 35 KB
- web3.md 17 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday Changed · +1 lines c521b3a35bc9
- 8d ago Changed · +56 lines afdc2563b5d6
- 12d ago Changed · +3 lines e2c79ee49e1c
- 1mo ago Changed · +33 lines 20e8d2278208
- 1mo ago First seen · 153 lines · 124 tokens per session scan B 3fd4cafdb39b
ctf-web is a skill published in the GitHub repository ljagiello/ctf-skills (3,549 stars, last pushed yesterday), licensed MIT. It adds 124 tokens to every session and 4,324 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it B with 2 findings (sends data to an external url, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
chief-data-officer-advisor
Chief Data Officer advisory for startups: AI training data rights and consent provenance, data product strategy (warehouse vs lakehouse vs mesh, build-vs-buy), B2B customer-data-as-asset valuation and M&A readiness, data team org evolution. Use when deciding whether to train models on customer data, choosing data…
wrap-up
Close out a launched Claude Managed Agent — recap every primitive the founder now owns, regenerate the single-file overview page, and suggest the next 1-2 upgrades. Use when the user says "wrap up", "close this out", "what do I own now", "give me the summary", "recap the agent", or when the orchestrator routes…
add-cloud-flow
Integrates Power Automate cloud flows into a Power Pages site. Lists available flows, suggests relevant ones based on intent, identifies scenarios and web roles, creates metadata files, and generates client-side code to call flows. Handles both new flow registration and adding already-registered flows to additional…
edit-site
Plans, coordinates and customizes PAC CLI-downloaded Standard or Enhanced data model non-SPA Power Pages sites created from Microsoft templates or manually in Design Studio. Use for requests involving pages, localized content, navigation, assets, snippets, site markers, Liquid/web templates, page layouts, or styling.…
deploy-site
Deploys an existing Power Pages site to a Power Pages environment using PAC CLI. Routes SPA sites to the existing build and upload-code-site workflow, and PAC-downloaded non-SPA (classic) sites to an isolated upload workflow with explicit data-model and website-identity checks. Handles tooling verification…
create-formal-verification-skill
Generate a project-local skill that formally verifies the code where a bug costs the most and tests reach the least, in any language, with whichever verification tool fits. Use for /create-formal-verification-skill, "model-check this race", "prove this invariant", or when concurrency, retries, state machines, parsers…