The arsenal

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 first

01

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 finish
  1. Find features that shell out

    Ping tools, file converters, PDF generators, DNS lookups — anything wrapping a CLI binary with user input.

  2. Append separators

    Try ; id, | id, && id and `id` after your input. Output appearing in the page (or an error) = injection.

  3. 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.

  4. 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.

  5. 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
  1. 01Full server control — commands run as the application user.
  2. 02Data exfiltration — read configs, source, databases directly off disk.
  3. 03Pivot into the network — the server's position is your foothold.
  4. 04Persistence potential — the finding is critical even when you don't demonstrate it.

Payloads

7 · from PayloadsAllTheThings
; id

Semicolon chaining — the first thing to try on any shell-wrapping feature.

| id

Pipe variant for backends that strip semicolons.

&& id

AND 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@foo

ProxyCommand option injection through an ssh wrapper.

psql -o'|id>/tmp/foo'

psql output-pipe injection — command execution without shell metacharacters up front.

Toolscommix/
Full Command Injection section ↗

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.

Payloads — wildhunter