[php代码审计]ecshop的两个鸡肋注入

2013-08-31 14:48:09 37 4464 2


由于刚学php,就试着读一下ecshop的源码,发现两个鸡肋注入,由于都含有单引号,导致无法过gpc

鸡肋注入1:在goods.php文件在代码大概277到278行
/* 更新点击次数 */
$db->query('UPDATE ' . $ecs->table('goods') . " SET click_count = click_count + 1 WHERE goods_id = '$_REQUEST[id]'");
$_REQUEST[id]可控导致注入,


鸡肋注入2:user.php文件在代码大概621到634行
/* 密码找回-->根据注册用户名取得密码提示问题界面 */
elseif ($action == 'get_passwd_question')
{
    if (empty($_POST['user_name']))
    {
        show_message($_LANG['no_passwd_question'], $_LANG['back_home_lnk'], './', 'info');
    }
    else
    {
        $user_name = trim($_POST['user_name']);//在这里$user_name只是简单的去掉空格而已//by 少校 QQ1006079161
    }

    //取出会员密码问题和答案
    $sql = 'SELECT user_id, user_name, passwd_question, passwd_answer FROM ' . $ecs->table('users') . " WHERE user_name = '" . $user_name . "'";//$user_name可控,导致注入//by 少校 QQ1006079161
    echo $sql;
    $user_question_arr = $db->getRow($sql);
由于得到冰封大牛的指点  看到init.php文件中有如下代码:
/* 对用户传入的变量进行转义操作。*/
if (!get_magic_quotes_gpc())
{
    if (!empty($_GET))
    {
        $_GET  = addslashes_deep($_GET);
    }
    if (!empty($_POST))
    {
        $_POST = addslashes_deep($_POST);
    }

    $_COOKIE   = addslashes_deep($_COOKIE);
    $_REQUEST  = addslashes_deep($_REQUEST);
}
对传入的变量进行转义操作,所以我错了,唉   抱歉了 各位,读代码不精,

由于是新手,不对的地方 大家多多指点,希望认识几个代码审计的朋友多交流!

关于作者

100607916152篇文章959篇回复

热爱就是热爱,不弃不离!

评论37次

要评论?请先  登录  或  注册