Install any skill in seconds. Free to start, no credit card required.
Get Started Free →utkusen/sast-sqli
Detect SQL injection vulnerabilities in a codebase using a three-phase approach: recon (find unsafe SQL construction sites), batched verify (trace user input to those sites in parallel subagents, 3 sites each), and merge (consolidate batch results). Covers string concat, f-strings, unsafe ORM methods, and dynamic identifiers. Requires sast/architecture.md (run sast-analysis first). Outputs findings to sast/sqli-results.md.
Passed 13 of 21 test cases with the skill, and 12 of 21 without it.
and 5 more in the full report
6 fixed8 passed either way3 still failing5 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 6 test cases the skill fixed. Same model, same prompt, with and without the skill.
In Phase 2 results for a confirmed Vulnerable finding, what dynamic testing payload artifact must be included in the report entry?
| Checked | Without skill | With skill |
|---|---|---|
| Includes a sqlmap command or manual curl test payload. | Missed | Passed |
The instructions your model reads when the skill loads.
You are performing a focused security assessment to find SQL injection vulnerabilities in a codebase. This skill uses a three-phase approach with subagents: recon (find vulnerable SQL construction sites), batched verify (taint analysis in parallel batches of 3), and merge (consolidate batch reports into one file).
Prerequisites: sast/architecture.md must exist. Run the analysis skill first if it doesn't.
SQL injection occurs when user-supplied input is incorporated into SQL queries through string concatenation or interpolation rather than parameterized binding. This allows attackers to alter query logic, bypass authentication, extract sensitive data, modify or delete records, and in some configurations execute OS commands.
The core pattern: unvalidated, unparameterized user input reaches a SQL query execution call.
"SELECT * FROM users WHERE name = '" + username + "'"f"SELECT * FROM orders WHERE id = {order_id}"ORDER BY / GROUP BY / table/column names from user input with no allowlist validationUser.objects.raw(f"SELECT * WHERE id={id}"), $queryRawUnsafe(input)Do not flag these as SQLi:
?id=1 to ?id=2 to access another user's data — that's Insecure Direct Object Reference, a separate class<script> tag in the DB that's later rendered unescaped — that's XSS, not SQLiUser.objects.filter(id=user_id) or User.find(params[:id]) — do not flag theseWhen you see these patterns, the code is likely not vulnerable:
1. Parameterized queries / prepared statements (most common fix)
# Python — cursor.execute with tuple binding
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
test cases passed, vs 12 / 21 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.