本文简要介绍了 注入攻击的原理, 注入攻击实现过程,并在此基础上给出了一种 注入攻击
的自动防范模型。
1 SQL 注入攻击概述
1.1 SQL 注入技术定义
注入()技术在国外最早出现在 年,我国在 年后开始大量出现,目前没
有对 注入技术的标准定义,微软中国技术中心从 个方面进行了描述:
()脚本注入式的攻击
()恶意用户输入用来影响被执行的 脚本
将 注入定义为,攻击者通过在查询操作中插入一系列的 语句到应用程序中来操作
数据。给出了 注入的一个特征,“从一个数据库获得未经授权的访问和直接检索”。
利用 注入技术来实施网络攻击常称为 注入攻击,其本质是利用 应用程序中所输入的
语句的语法处理,针对的是 应用程序开发者编程过程中未对 语句传入的参数做出严格的检查和
处理所造成的。习惯上将存在 注入点的程序或者网站称为 注入漏洞。实际上, 注入是存在
于有数据库连接的应用程序中的一种漏洞,攻击者通过在应用程序中预先定义好的查询语句结尾加上额外
的 语句元素,欺骗数据库服务器执行非授权的查询。这类应用程序一般是基于 的应用程序,它
允许用户输入查询条件,并将查询条件嵌入 请求语句中,发送到与该应用程序相关联的数据库服务
器中去执行。通过构造一些畸形的输入,攻击者能够操作这种请求语句去获取预先未知的结果。
1.2 SQL 注入攻击特点
注入攻击是目前网络攻击的主要手段之一,在一定程度上其安全风险高于缓冲区溢出漏洞,目前防
火墙不能对 注入漏洞进行有效地防范。防火墙为了使合法用户运行网络应用程序访问服务器端数据,
必须允许从 到 服务器的正向连接,因此一旦网络应用程序有注入漏洞,攻击者就可以直接
访问数据库进而甚至能够获得数据库所在的服务器的访问权,因此在某些情况下, 注入攻击的风险
要高于所有其他漏洞。 注入攻击具有以下特点:
()广泛性。 注入攻击利用的是 语法,因此只要是利用 语法的 应用程序如果未对
输入的 语句做严格的处理都会存在 注入漏洞,目前以 !""#"$、 %
&'(""$)、 #*#、# 等技术与 、+"、,-、" 等数据库相结合
的 应用程序均发现存在 注入漏洞。
()技术难度不高。 注入技术公布后,网络上先后出现了多款 注入工具,例如教主的
*,、.-、明小子的 ,)" 等,利用这些工具软件可以轻易地对存在 注入的网站或者 应
用程序实施攻击,并最终获取其计算器的控制权。
()危害性大, 注入攻击成功后,轻者只是更改网站首页等数据,重者通过网络渗透等攻击技术,
可以获取公司或者企业机密数据信息,产生重大经济损失。
2 SQL 注入攻击的实现原理
2.1 SQL 注入攻击实现原理
/
结构化查询语言()是一种用来和数据库交互的文本语言, 就是利用某些数据库的外
部接口把用户数据插入到实际的数据库操作语言当中,从而达到入侵数据库乃至操作系统的目的。它的产
生主要是由于程序对用户输入的数据没有进行细致的过滤,导致非法数据的导入查询。
注入攻击主要是通过构建特殊的输入,这些输入往往是 语法中的一些组合,这些输入将作为参
数传入 应用程序,通过执行 语句而执行入侵者的想要的操作,下面以登录验证中的模块为例,
说明 注入攻击的实现方法。
在 Web 应用程序的登录验证程序中,一般有用户名(username)和密码(password)两个
参数,程序会通过用户所提交输入的用户名和密码来执行授权操作。其原理是通过查找