Payloads.
Pick a vulnerability class, learn how to hunt it step by step, grab the payloads that actually work. Curated from PayloadsAllTheThings — the full section is linked under every class.
Command Injection
Executing arbitrary commands inside the vulnerable application — the server runs your input as part of an OS command. Wherever user input touches a shell (ping, convert, zip, nslookup), the shell metacharacters become your API.
Severity guide
Critical by definition — proven OS command execution is top-of-scale; argument injection with proven execution is equally critical.
Where to look
entry points to test first01
Utility features
Ping/traceroute tools, DNS lookup boxes, file converters, thumbnail generators — anything wrapping a CLI binary.
02
Filename handling
Upload → post-process pipelines: zip extraction, image conversion, AV scanning — filenames reach the command line.
03
Export/download flows
'Download as PDF/ZIP' — server-side packaging tools invoked with user-controlled names or paths.
04
Config/admin panels
Sysadmin features (restart services, run diagnostics) that interpolate options from stored settings.
05
Older API versions
Endpoints that predate strict validation — the shell usage is still there behind a nicer frontend.
How to hunt it
in order, start to finishFind features that shell out
Ping tools, file converters, PDF generators, DNS lookups — anything wrapping a CLI binary with user input.
Append separators
Try ; id, | id, && id and `id` after your input. Output appearing in the page (or an error) = injection.
Test blind execution
No output? Use sleep 10 and measure response time, or trigger an out-of-band DNS hit to a domain you control — the callback proves execution without reflection.
Try argument injection
When separators are filtered, inject INTO an existing flag — e.g. ssh -oProxyCommand or psql -o both execute commands via their own options. This works even when ; | & are fully blocked.
Keep it harmless
id and whoami prove execution; stop there and write the report.
Filter & validation bypasses
when your first tries get blocked- 01Semicolons stripped? Pipes, &&, ||, newlines (%0a), and backticks each reach the shell differently.
- 02All separators blocked? Argument injection — abuse the wrapped binary's own flags (-oProxyCommand for ssh, --proxy for curl).
- 03Quotes filtered? $IFS replaces spaces; brace expansion {a,b} forms arguments without spaces.
- 04Blind with no output? Timing (sleep 10) and DNS/HTTP out-of-band callbacks prove execution regardless of reflection.
Impact ladder
what makes it payable- 01Full server control — commands run as the application user.
- 02Data exfiltration — read configs, source, databases directly off disk.
- 03Pivot into the network — the server's position is your foothold.
- 04Persistence potential — the finding is critical even when you don't demonstrate it.
Payloads
7 · from PayloadsAllTheThings; idSemicolon chaining — the first thing to try on any shell-wrapping feature.
| idPipe variant for backends that strip semicolons.
&& idAND chaining — runs only if the original command succeeds.
`id`Backtick substitution inside double-quoted arguments.
chrome '--gpu-launcher="id>/tmp/foo"'Argument injection: abusing a program's own flag to run a command.
ssh '-oProxyCommand="touch /tmp/foo"' foo@fooProxyCommand option injection through an ssh wrapper.
psql -o'|id>/tmp/foo'psql output-pipe injection — command execution without shell metacharacters up front.
Payload strings, code and technical terms are shown in English on purpose — payloads must be copied exactly as published.
Payloads originate from PayloadsAllTheThings (MIT) — use them only on programs you're authorized to test.