Using the Payload Library
Payload Selection by Vulnerability
| Situation | Load |
|---|---|
| Input reflects back in HTML output | payloads/xss/xss-payloads.md |
| Input appears in a database query | payloads/sqli/sqli-payloads.md |
| Application fetches a URL you control | payloads/ssrf/ssrf-payloads.md |
| Input appears in a system command | payloads/cmdi/cmdi-payloads.md |
| Input renders in a template engine | payloads/ssti/ssti-payloads.md |
| JWT authentication is used | payloads/jwt/jwt-payloads.md |
| File path is user-controlled | payloads/path-traversal/path-traversal-payloads.md |
| Need directory/subdomain lists | payloads/wordlists/wordlists-reference.md |
Testing Order (Always Follow This)
Detect — Use the minimal detection payload to confirm the bug exists
- XSS:
<script>alert(1)</script> - SQLi:
'(single quote) — look for error or behavior change - SSRF: Replace URL with Burp Collaborator/interactsh URL — look for callback
- CMDi:
; sleep 5— look for time delay - SSTI:
{{7*7}}— look for49in response - Path traversal:
../../../../etc/passwd— look for passwd content
- XSS:
Confirm — Verify the behavior is consistent and reproducible
Impact — Escalate to show real impact
- XSS: Cookie theft, session hijacking
- SQLi: Data extraction, auth bypass
- SSRF: Cloud metadata, internal service access
- CMDi: Reverse shell, data exfiltration
- SSTI: RCE, file read
- Path traversal: Read sensitive files, log poisoning
Document — Screenshot/capture every step before moving on
WAF Bypass Strategy
If initial payloads are blocked:
- Check if WAF is blocking or just the app returning an error
- Try encoding variants (URL encode, double encode, HTML encode)
- Try case variations and whitespace substitutes
- Try alternative syntax for the same operation
- Use the WAF bypass section in the relevant payload file
Payload Modification Guidelines
Never use payloads exactly as written without considering context:
- Replace
attacker.comwith your actual callback server - Replace
4444with your actual listener port - Adjust traversal depth (
../../../../) based on app's working directory - Use application-specific separators (the app may use
|not;for commands)
Confirming No False Positives
Before reporting any finding:
- Reproduce it twice with slightly different payloads
- Confirm the response contains what you expect
- For time-based: run the baseline (no payload) first to establish normal response time
- For DNS callbacks: confirm the DNS query came from the target server, not your browser