
Waf Bypass Techniques
Evade web application firewalls blocking SQLi, XSS, or RCE payloads using encoding, protocol tricks, and product-specific bypass patterns.
Overview
WAF bypass techniques is an agent skill for the Ship phase that teaches WAF identification and layered evasion methods so blocked SQLi, XSS, and RCE probes can be retested responsibly.
Install
npx skills add https://github.com/yaklang/hack-skills --skill waf-bypass-techniquesWhat is this skill?
- WAF identification plus generic bypass categories: encoding, protocol abuse, HTTP/2, parameter pollution
- Decision tree for choosing evasion strategy when base models only suggest trivial encoding
- Cross-links to SQLi, XSS, request smuggling, HPP, CSP bypass, and Java Ghost Bits cast attack
- Points to WAF_PRODUCT_MATRIX.md for Cloudflare, AWS WAF, ModSecurity, Akamai, and similar
- Explicit AI load instruction for protocol-level bypasses beyond charset swaps
- Generic bypass categories include encoding, protocol abuse, HTTP/2, and parameter pollution plus a WAF product matrix re
Adoption & trust: 1.1k installs on skills.sh; 980 GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your security tests return WAF blocks and naive URL encoding does not reproduce the underlying vulnerability you need to verify.
Who is it for?
Indie builders running authorized appsec exercises against their own WAF-protected APIs or sites.
Skip if: Builders without explicit permission to test the target, or teams that only need dependency CVE scanning without injection validation.
When should I use this skill?
A web application firewall blocks injection payloads (SQLi, XSS, RCE) and you need bypasses using encoding, protocol-level tricks, or WAF-specific weaknesses.
What do I get? / Deliverables
You follow a decision tree from generic to protocol-level bypasses, load product-specific matrix guidance when needed, and hand off to the right payload or smuggling skill for the next attempt.
- WAF identification and bypass strategy from the decision tree
- Pointers to product-specific matrix entries and chained payload skills
Recommended Skills
Journey fit
How it compares
Methodology playbook with product matrix—not a hosted WAF or automatic scanner subscription.
Common Questions / FAQ
Who is waf-bypass-techniques for?
Security-conscious solo developers and pentesters-in-practice who test applications they control and need agent-guided WAF evasion beyond basic encoding.
When should I use waf-bypass-techniques?
Use it in Ship security when SQLi, XSS, or RCE payloads are blocked by a WAF and you must craft encoding, HTTP/2, HPP, smuggling, or Java-specific bypasses on authorized environments.
Is waf-bypass-techniques safe to install?
It documents offensive evasion techniques; install only if you understand legal scope, and review the Security Audits panel on this Prism page—do not infer audit pass counts from this FAQ.
SKILL.md
READMESKILL.md - Waf Bypass Techniques
# SKILL: WAF Bypass Techniques — Evasion Playbook > **AI LOAD INSTRUCTION**: Covers WAF identification, generic bypass categories (encoding, protocol abuse, HTTP/2, parameter pollution), and a decision tree. For product-specific bypasses (Cloudflare, AWS WAF, ModSecurity, Akamai, etc.), load [WAF_PRODUCT_MATRIX.md](./WAF_PRODUCT_MATRIX.md). Base models often suggest basic encoding but miss protocol-level bypasses and WAF behavioral quirks. ## 0. RELATED ROUTING - [sqli-sql-injection](../sqli-sql-injection/SKILL.md) for payloads to deliver after bypassing WAF - [xss-cross-site-scripting](../xss-cross-site-scripting/SKILL.md) for XSS payloads that need WAF evasion - [request-smuggling](../request-smuggling/SKILL.md) when smuggling can route requests around WAF entirely - [http-parameter-pollution](../http-parameter-pollution/SKILL.md) HPP is itself a WAF bypass primitive - [csp-bypass-advanced](../csp-bypass-advanced/SKILL.md) when WAF blocks inline scripts but CSP bypass is available - [ghost-bits-cast-attack](../ghost-bits-cast-attack/SKILL.md) **Java backends only** — when every encoding trick above is blocked, use Ghost Bits: Java's 16-bit `char` to 8-bit `byte` narrowing produces 255 Unicode bypass variants per dangerous ASCII byte; re-enables WAF-patched CVEs in Tomcat, Spring, Jetty, Jackson, Fastjson, BCEL, and more ### Product-Specific Reference Load [WAF_PRODUCT_MATRIX.md](./WAF_PRODUCT_MATRIX.md) when you need per-product bypass techniques for Cloudflare, AWS WAF, ModSecurity CRS, Akamai, Imperva, F5 BIG-IP, or Sucuri. --- ## 1. PHASE 0 — IDENTIFY THE WAF Before bypassing, know what you're fighting. ### 1.1 Tools | Tool | Usage | |---|---| | `wafw00f target.com` | Fingerprint WAF vendor from response headers/behavior | | `nmap --script=http-waf-detect` | NSE script for WAF detection | | Manual header inspection | `Server`, `X-CDN`, `X-Cache`, `cf-ray` (Cloudflare), `x-sucuri-id`, `x-akamai-*` | ### 1.2 Behavioral Fingerprinting ``` 1. Send benign request → record baseline response (status, headers, body size) 2. Send obvious attack: /?q=<script>alert(1)</script> 3. Compare: 403? Custom block page? Redirect? Connection reset? 4. Block page content reveals WAF: "Cloudflare", "Access Denied (Imperva)", "ModSecurity" 5. If transparent proxy: check response time difference (WAF adds latency) ``` --- ## 2. GENERIC BYPASS CATEGORIES ### 2.1 Encoding Bypasses | Technique | Example | Bypasses | |---|---|---| | URL encoding | `%3Cscript%3E` | Basic string matching | | Double URL encoding | `%253Cscript%253E` | WAFs that decode once, app decodes twice | | Unicode encoding | `%u003Cscript%u003E` | IIS-specific Unicode normalization | | HTML entities | `<script>` or `<script>` | WAFs not performing HTML entity decoding | | Hex encoding (SQL) | `0x756E696F6E` = `union` | WAFs matching SQL keywords | | Octal encoding | `\74script\76` | Rare but some parsers handle it | | Overlong UTF-8 | `%C0%BC` (invalid encoding for `<`) | Legacy parsers with loose UTF-8 handling | | Mixed case | `SeLeCt`, `uNiOn` | Case-sensitive rule matching | | Null byte | `sel%00ect` | WAFs that stop parsing at null | ### 2.2 Chunked Transfer Encoding Split the payload across HTTP chunks so no single chunk contains the blocked pattern: ```http POST /search HTTP/1.1 Transfer-Encoding: chunked 3 sel 3 ect 1 4 from 0 ``` WAFs that inspect the full body may not reassemble chunks before matching. ### 2.3 HTTP/2 Binary Format Bypasses HTTP/2 transmits headers as binary HPACK-encoded frames. Some WAFs only inspect after downgrading to HTTP/1.1: - Header names can contain characters illegal in HTTP/1.1 - Pseudo-headers (`:method`, `:path