SQL注入技术的研究.doc
文本预览下载声明
SQL注入技术的研究
摘要:SQL注入是一种基于跨站请求伪造的技术,黑客可以利用跨站请求伪造来进行SQL注入获得的管理员权限,进入网站任意获得网站上的文件或者在网页上加挂木马和各种恶意程序,对网站和访问该网站的网友都带来巨大危害。该文主要介绍了SQL注入的原理、方法及防范措施。
关键词:SQL注入;数据库;权限;密码
中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)14-3592-01
1 引言
ASP编程简便易学,初学者很容易掌握。在一段不长的时间里,就已经能够编出比较完美的动态网站,但在安全性方面,新手最容易忽略的问题就是SQL注入漏洞的问题。用NBSI 2.0对网上的一些ASP网站稍加扫描,就能发现许多ASP网站存在SQL注入漏洞,高校内部机构的一些网站这种漏洞就更普遍了,可能这是因为这些网站大都是一些学生做的缘故吧,虽然个个都很聪明,可是毕竟没有经验,而且处于学习中,难免存在漏洞了。如何有效地防范措施SQL注入呢?SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.asp?id=XX等带有参数的ASP动态网页中,有时一个动态网页中可能只有一个参数,有时可能有N个参数,有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在SQL注入。如果ASP程序员没有安全意识,不进行必要的字符过滤,存在SQL注入的可能性就非常大。
2 什么是SQL注入
利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,这是SQL注入的标准释义。它一般通过互联网的输入区域,插入SQL meta-characters和指令,操纵执行后端的SQL查询的技术。这些攻击主要针对其他组织的WEB服务器。CSS攻击通过在URL里插入script标签,然后诱导信任它们的用户点击它们,确保恶意Javascript代码在受害人的机器上运行。这些攻击利用了用户和服务器之间的信任关系,事实上服务器没有对输入、输出进行检测,从而未拒绝javascript代码。
SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据。
3 SQL注入的原理及分类
3.1 SQL-Injection的原理
SQL是一种用于关系数据库的结构化查询语言。它分为许多种,但大多数都松散地基于美国国家标准化组织最新的标准SQL-92。SQL语言可以修改数据库结构和操作数据库内容。当一个攻击者能够通过往查询中插入一系列的SQL操作数据写入到应用程序中去,并对数据库实施了查询,这时就已经构成了SQL-Injection。
3.2 SQL-Injection的分类
由于SQL-injection攻击出要发生在B/S结构的应用程序上,而这些程序大部分都属于互联网的web站点,在这种情况下SQL-Injection同样需要遵循HTTP协议,形成了两种分类:POST方式注入和GET方式注入。
4 SQL-Injection的注入方法
4.1 常规注入方法
SQL注入攻击本身就是一个常规性的攻击,它可以允许一些不法用户检索你的数据,改变服务器的设置,或者在你不小心的时候黑掉你的服务器。
4.2 旁注
顾名思义就是从旁注入,也就是利用主机上面的一个虚拟站点进行渗透 ,此类手法多出现与虚拟主机站点。
4.3 盲注
通过构造特殊的SQL语句,在没有返回错误信息的情况下进行注入。
4.4 跨站注入
攻击者利用程序对用户输入过滤及判断的不足,写入或插入可以显示在页面上对其他用户造成影响的代码。跨站注入的高级攻击就属于这种攻击。
5 SQL注入的过程
SQL注入利用的是正常的HTTP服务端口,表面上看来和正常的web访问没有区别,隐蔽性极强,不易被发现。
第一步:判断Web环境是否可以SQL注入。如果URL仅是对网页的访问,不存在SQL注入问题,如:/162414739931.shtml就是普通的网页访问。只有对数据库进行动态查询的业务才可能存在SQL注入,如:/webhp?id=18,其中?id=18表示数据库查询变量,这种语句会在数据库中执行,因此可能会给数据库带来威胁。
第二步:寻找SQL注入点。完成上一步的判断后,就要寻找可利用的注入漏洞,通过输入一些特殊语句,可以根据
显示全部