phpshe后台任意文件删除(后台无限制拿shell)

90sec@Joseph

case 'del':
        pe_token_match();
        $tpl_name = pe_dbhold($_g_tpl);
        if ($tpl_name == 'default') pe_error('默认模板不能删除...');
        if ($db->pe_num('setting', array('setting_key'=>'web_tpl', 'setting_value'=>$tpl_name))) {
                pe_error('模板正在使用中...');
        }
        else {
                pe_dirdel("{$pe['path_root']}template/{$tpl_name}");
                pe_success('模板删除成功!');
        }
break;

 

首先一个token防止csrf然后一个定义tpl_name的名字最后载入自定义的一个过滤函数

function pe_dbhold($str, $exc=array())
{
        if (is_array($str)) {
                foreach($str as $k => $v) {
                        $str[$k] = in_array($k, $exc) ? pe_dbhold($v, 'all') : pe_dbhold($v);
                }
        }
        else {
                $str = $exc == 'all' ? mysql_real_escape_string($str) : mysql_real_escape_string(htmlspecialchars($str));
        }
        return $str;
}

 

看的出来是针对sql过滤的并未针对像跳目录等进行过滤或者处理,然后返回又进入了一个自定义的删除函数

function pe_dirdel($dir_path)
{
        if (is_file($dir_path)) {
                unlink($dir_path);
        }
        else {
                $dir_arr = glob(trim($dir_path).'/*');
                if (is_array($dir_arr)) {
                        foreach ($dir_arr as $k => $v) {
                                pe_dirdel($v, $type);
                        }        
                }
                @rmdir($dir_path);
        }
}

 

懂php代码的都看的出来就是一个判断路径存在和文件夹或者文件存在的一个简单函数对我们的利用没有任何危害
demo测试
QQ20151228164526[1]

新建了一个90.txt
QQ20151228164658[1]

直接跳目录后面跟文件名
QQ20151228164745[1]

看的出来直接删除

第一个拿shell 自然就是咱们说的删除instak.ock 重装,不过太过于危险。我这里有官网权限 我这里直接给大家一个方法

http://127.0.0.1/admin.php?mod=moban&act=down&id=1
QQ20151228164926[1]

密码:loveme

发表评论