web2-vuln-classes SKILL.md skillF
web2-vuln-classes from mikacr1138/claude-bug-bounty is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.
mdr add mikacr1138/claude-bug-bounty/web2-vuln-classes@git:20260317.a154787Pins git:20260317.a154787 in mdr.lock. Pin the fingerprint instead.
- Audit grade
- F, 13 of 17 checks passed
- Kind
- SKILL.md skill
- Repository
- mikacr1138/claude-bug-bounty
- Path
skills/web2-vuln-classes/SKILL.md- Versions recorded
- 1
- Latest version
- git:20260317.a154787, committed Mar 17, 2026
- Size
- 20,836 bytes
- Repository stars
- 3
- License
- MIT
Complete reference for 18 web2 bug classes with root causes, detection patterns, bypass tables, exploit techniques, and real paid examples. Covers IDOR, auth bypass, XSS, SSRF (11 IP bypass techniques), SQLi, business logic, race conditions, OAuth/OIDC, file upload (10 bypass techniques), GraphQL, LLM/AI (ASI01-ASI10 agentic framework), API misconfig, ATO taxonomy, SSTI, subdomain takeover, cloud/infra misconfigs, HTTP smuggling, cache poisoning. Use when hunting a specific vuln class or…
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# WEB2 BUG CLASSES — 18 Classes
Root cause, pattern, bypass table, chaining opportunity, real paid examples.
---
## 1. IDOR — INSECURE DIRECT OBJECT REFERENCE
> #1 most paid web2 class — 30% of all submissions that get paid.
### Root Cause
```python
# VULNERABLE — no ownership check
@app.route('/api/orders/<order_id>')
def get_order(order_id):
order = db.query("SELECT * FROM orders WHERE id = ?", order_id)
return jsonify(order) # Never checks if order belongs to current user!
# SECURE
@app.route('/api/orders/<order_id>')
def get_order(order_id):
order = db.query("SELECT * FROM orders WHERE id = ? AND user_id = ?",
order_id, current_user.id)
```
### Variants
- **V1:** Numeric ID swap — `/api/user/123/profile` → change to 124
- **V2:** UUID swap — enumerate UUID via email invite or other endpoint
- **V3:** Indirect IDOR — `POST /api/export?report_id=456` exports another user's report
- **V4:** Parameter add — `?user_id=other` makes backend use it
- **V5:** HTTP method swap — PUT protected, DELETE not
- **V6:** Old API version — `/v1/users/123` lacks auth that `/v2/` has
- **V7:** GraphQL node — `{ node(id: "base64(User:456)") { email } }`
…Read the whole file at its exact version.
How to install
mdr add mikacr1138/claude-bug-bounty/web2-vuln-classes@sha256:81d1eed13caa5f8cThe line at the top of this page pins the label git:20260317.a154787, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
[](https://markdownregistry.com/a/art_b4xwo6pk7opf33gd)
8 badge image fetches in 30 days. What the badge shows.
Versions
The registry has recorded 1 version of this file, committed on Mar 17, 2026.
Audit of the latest version
- FAIL, critical: No link to an exfiltration or paste host (matched: https://attacker.burpcollaborator)
- fail: No prompt-injection phrasing (matched: Ignore previous instructions)
- fail: No link to a raw IP address (matched: http://169.254.169.254)
- fail: No script tag (matched: <script)
- pass: Frontmatter block present
- pass: Frontmatter declares a name
- pass: Frontmatter declares a description
- pass: Size between 200 bytes and 200 KB (20836 bytes)
- pass: No zero-width or bidi control characters
- pass: No instruction hidden inside an HTML comment
- pass: No credential-shaped string
- pass: No instruction to send local credentials anywhere
- pass: No text hidden with inline styles
- pass: No curl or wget piped into a shell
- pass: No recursive delete of root, home or parent
- pass: No instruction to read or print local credentials
- pass: No base64 blob over 200 characters
Starting a new one? Use a template for SKILL.md on mdpantry, which passes every one of these checks and says what to change in it.
Source
mikacr1138/claude-bug-bounty · 3 stars · license MIT · pushed 2026-10-14 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_b4xwo6pk7opf33gd GET https://markdownregistry.com/api/v1/resolve?ref=mikacr1138/claude-bug-bounty/web2-vuln-classes GET https://markdownregistry.com/api/v1/blob/81d1eed13caa5f8c193c967dc47bd9f86d95fa2385869d5fb94d92ddf0e6adec
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.