网站运营
位置:首页>> 网站运营>> SQL注入原理深度解析(2)

SQL注入原理深度解析(2)

作者:康凯 来源:asp之家 发布时间:2010-02-21 11:46:00 

标签:SQL,SQL注射,脚本攻击


以下为引用的内容:
Stringquery="SELECTidFROMuser_tableWHERE"+

"username='"+username+"'AND"+

"password=PASSWORD('"+password+"')";

上述代码认为字符串username和password都是数据,不过,攻击者却可以随心所欲地输入任何字符。如果一位攻击者输入的用户名为

’OR1=1—

而口令为

x

那么查询字符串将变成下面的样子:

以下为引用的内容:
SELECTidFROMuser_tableWHEREusername=''OR1=1--'ANDpassword

=PASSWORD('x')

该双划符号--告诉SQL解析器,右边的东西全部是注释,所以不必理会。这样,查询字符串相当于:

SELECTidFROMuser_tableWHEREusername=''OR1=1

如今的SELECT语句跟以前的已经大相径庭了,因为现在只要用户名为长度为零的字符串‘’或1=1这两个条件中一个为真,就返回用户标识符ID——我们知道,1=1是恒为真的。所以这个语句将返回user_table中的所有ID。在此种情况下,攻击者在username字段放入的是SQL指令‘OR1=1--而非数据。

四、构造SQL注射代码

为了成功地注入SQL命令,攻击者必须将开发人员的现有SQL命令转换成一个合法的SQL语句,当然,要盲注是有些难度的,但一般都是这样:

’OR1=1–

或者

‘)OR1=1--

此外,许多Web应用提供了带来错误报告和调试信息,例如,利用’OR1=1--对Web应用进行盲注时,经常看到如下所示的错误信息:

以下为引用的内容:

Errorexecutingquery:

YouhaveanerrorinyourSQLsyntax;

checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear

'SELECT(title,body)FROMblog_tableWHEREcat='OR1=1'atline1


该错误信息详细地为我们展示了完整的SQL语句,在此种情况下,SQL数据库所期待的好象是一个整数,而非字符串,所以可以注入字符串OR1=1--,把单引号去掉就应该能成功注入了。对于大多数SQL数据库,攻击者可以在一行中放入多个SQL语句,只要各个语句的语法没有错误就行。在下面的代码中,我们展示了如何将username设为‘OR1=1并把password设为x来返回最后的用户ID:

以下为引用的内容:
Stringquery="SELECTidFROMuser_tableWHERE"+

"username='"+username+"'AND"+

"password=PASSWORD('"+password+"')";

当然,攻击者可以注入其它的查询,例如,把username设为:

以下为引用的内容:
'OR1=1;DROPTABLEuser_table;--

而这个查询将变成:

SELECTidFROMuser_tableWHEREusername=''OR1=1;DROPTABLEuser_table;--'ANDpassword=PASSWORD('x');

它相当于:

SELECTidFROMuser_tableWHEREusername=''OR1=1;DROPTABLEuser_table;

这个语句将执行句法上完全正确的SELECT语句,并利用SQLDROP命令清空user_table。

注射式攻击不必非要进行盲式攻击,因为许多Web应用是利用开放源代码工具开发的,为了提高注射式攻击的成功率,我们可以下载免费的或者产品的试用版,然后在自己的系统上搭建测试系统。如果在测试系统上发现了错误,那么很可能同样的问题也会存在于所有使用该工具的Web应用身上。

五、小结

我们在本文中向读者介绍了注射攻击的根本原因,即没有对数据和命令进行严格区分。然后通过一些程序源码对SQL的攻击进行了细致的分析,使我们对SQL注射机理有了一个深入的认识。如果您是一名web应用开发人员,那么您就当心了,一定不要盲目相信用户端的输入,而要对用户输入的数据进行严格的“消毒”处理,否则的话,SQL注射将会不期而至。

0
投稿

猜你喜欢

  • 最近和一个做市场调查的客户聊天,从他那边了解到市场调查的一些大概步骤。企业在推出一个新产品前一般都是要先对该产品的市场需求做一个市场调查,以
  • 暴风影音、百度搜霸、迅雷,PPStream QVOD有漏洞传播木马我相信没有谁不用暴风影音、百度搜霸、迅雷,PPStream QVOD这些软
  • 网聊时代,大家总是喜欢寻找更多的快乐,所以我们看到了火星文、看到了搞笑的聊天表情、看到了QQ闪字…。这些,都是我们网上网下生活的调剂。今天,
  • 作为Internet上的FTP服务器,系统的安全性是非常重要的,这是建立FTP服务器者所考虑的第一个问题。其安全性主要包括以下几个方面:一、
  • 据新加坡《联合早报》10月15日报道,发明全球互联网的英国人伯纳斯承认,当初在网址前面加上双斜线实在有欠考虑。据报道,伯纳斯大约30年前想出
  • 中新网10月10日电 今天上午,卫生部疾病预防控制局副局长孔灵芝表示,关于网瘾诊断标准的问题,我国现在正在研究之中,没有把它作为精神障碍的特
  • 前面装过一次PHP5.2,但PHP5.3与PHP5.2相比,变化很多。由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已
  • 为了助力社区门户的运营建设,康盛创想(Comsenz)全新推出的社区论坛系统Discuz! 7.2版本进一步优了产品细节,在版块管理上新增了
  • 沉重宏大的政治更迭与社会思潮与1971年出生的马化腾相隔甚远。青少年的他曾沉迷于观测天象,但深圳火热的市场经济氛围最终将他拉回地面成为一个商
  • DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的主要手段是通过大于管道处理能力的流量淹没管道或通
  • 结合工作经验,在这里笔者给企业网管员提供一些保障企业网络安全的建议,帮助他们用以抵御网络入侵、恶意软件和垃圾邮件。定义用户完成相关任务的恰当
  • 中国领先的社区平台与服务提供商康盛创想(Comsenz)旗下核心产品Discuz!新版正式发布。全新推出的Discuz! 7.2版本从用户注
  • 每一个人的建站经验与任何一个人都是不同的,这取决于网站的定位与性质。但是,很多关键的步骤都大同小异,只是所花的时间长短不一而已。 
  • InfoWorld举办的签名挽留Windows XP活动得到的支持数已经超过75000人,微软的生命周期表显示Windows XP将在6月底
  • Yslow 提高网站加载速度里有这么一条:Used Cookie Free Domains , 大意是浏览器会对作用域内每个加载的对象传递
  • 10月16日消息,据消息人士透露,网页游戏运营商51wan近日调开通新域名kaixin(http://kaixin.51wan.com/),
  • 友情链接在自己的网站上放置对方网站的或网站名称,并设置对方网站的超级链接,使得用户可以从合作网站中发现自己的网站,达到互相推广的目的,它是在
  • 微软发布了针对Windows家庭服务器平台的,一个应用软件接口程序(API)和一个软件开发工具包。应用软件接口程序和开发工具包允许用户为Wi
  • 互联网走到今天,已经进入了Web 2.0时代,它已经影响到了我们生活的各个方面,人与互联网之间的联系越来越紧密,其中搜索引擎扮演着一个重要的
  • (本文以Windows主机为例进行讲解)首先登录Godaddy,方法参考:Godaddy账户登录及基本功能图解登录以后在我的产品中点击主机账
手机版 网站运营 asp之家 www.aspxhome.com