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.
File Upload
Uploaded files execute when the server trusts filename, content-type, or location — from harmless overwrite to webshell RCE. Every upload feature has three attack surfaces: the name, the content, and where it lands.
Severity guide
Critical when code execution is proven; high for stored-XSS-via-SVG and file-overwrite primitives; medium for unlimited-size/type DoS.
Where to look
entry points to test first01
Avatar/profile images
The most common upload — test extension/Content-Type handling and where the file is served from.
02
Document/CSV importers
Business features parsing user files (Excel, CSV, PDF) — deserialization and parser bugs live here.
03
Attachment endpoints
Support tickets, messages — files served back with original names/types.
04
ZIP/archive uploads
Extraction features — Zip Slip and resource exhaustion both apply.
05
SVG/HTML uploads
Anything serving SVG inline — that's stored XSS on a platter.
How to hunt it
in order, start to finishUpload a benign file first
A text file named test.txt. Find WHERE it lands (response URL, guessing) — you need retrieval to prove anything.
Map the validation
Try .php (blocked?), Content-Type mismatches, magic bytes — each failure tells you which layer is checking.
Attack extensions
Lesser-known executables: .config, .cer, .asa on IIS; shell.aspx;1.jpg semicolon tricks on old IIS; double extensions everywhere.
Attack metadata
Match the magic bytes (GIF89a) with PHP inside, or abuse SVG which browsers execute as script.
Attack content parsers
Malformed images/PDFs against the processing library — ImageTragick-class bugs and PDF parsers crash and execute.
Prove execution — then stop
phpinfo()-level proof is enough for the report; a persistent webshell crosses into damage.
Filter & validation bypasses
when your first tries get blocked- 01Extension blocked? Double extensions (shell.php.jpg), trailing dots/spaces (Windows), semicolons (IIS<7), or null bytes (old PHP).
- 02Content-Type checked? Send image/gif with PHP inside — MIME is client-controlled, validators that trust it fail.
- 03Magic bytes checked? GIF89a header prepended to PHP passes getimagesize() while still executing.
- 04Everything renamed? The rename is safe — but the SERVED content-type matters; SVG/image/svg+xml executes script regardless of extension.
Impact ladder
what makes it payable- 01Webshell/RCE — executing uploads are game over.
- 02Stored XSS via SVG/HTML — script runs on the site's origin.
- 03File overwrite/interference — replacing other users' or system files.
- 04DoS — decompression bombs and unlimited-size uploads.
Payloads
5 · from PayloadsAllTheThingsshell.aspx;1.jpgIIS < 7.0 semicolon parsing — executes as ASPX despite the .jpg tail.
.cerIIS <= 7.5 executes .cer as ASP — passes image-focused extension filters.
.configIIS web.config upload = webshell via handler injection.
Content-Type: text/phpMIME-variant abuse — servers trusting Content-Type over extension miss non-standard types.
Content-Type: image/gifThe spoofed header paired with magic bytes — GIF89a prefix plus PHP payload.
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.