1、XXXXXXXXXXX学院学院网络工程系网络工程系 网络攻击与防御网络攻击与防御 报告报告SQL 注入攻击技术专题研究注入攻击技术专题研究学学 生:生: XXXXXXXXXXX班班 级:级: XXXXXXXXXXX撰写时间:撰写时间: XXXXXXXXXX摘 要由于现今信息技术发展迅速,网络安全越来越成为虚拟网络中不可或缺的一部分。然而,因为各种 Web 服务器的漏洞与程序的非严密性,导致针对服务器的脚本攻击时间日益增多,其大多数是通过 ASP 或者 PHP 等脚本主图作为主要攻击手段,加之 Web 站点迅速膨胀的今天,基于两者的 SQL 注入也慢慢成为目前攻击的主流方式。其应用方式主要集在利
2、用服务端口接收用户输入的功能,将构造的语句传给数据库服务器,让其执行者开发者规定外的任务。目前至少 70%以上的 Web 站点存在着 SQL 注入的缺陷,恶意用户便可以利用服务器、数据库配置的疏漏和精心构造的非法语句通过程序或脚本侵入服务器获得网站管理员的权限和数据库的相关内容,严重的还可以获得整个服务器所在内网的系统信息,它们的存在不仅对数据库信息造成威胁,甚至还可以威胁到系统和用户本身。本文针对 SQL 注入技术进行专题研究,进行工具注入和手动注入两种途径的实验分析。全文共分为五个章节:第一章为全文引言部分,简单介绍本次专题研究背景、来源以及研究意义;第二章阐述 SQL 注入技术的背景与网
3、络环境;第三章详细介绍本次专题研究 SQL 注入攻击的实验过程和结果分析;第四章进行本次专题研究的总结及实验心得。关键词:SQL,注入,权限,网络攻击AbstractDue to the rapid development of information technology today, network security become an integral part of the virtual network. However, because of various Web server and procedure of the loopholes for server rigor lea
4、ds to increasing the script against time, its most is through the ASP or PHP etc feet as the main attack means owner is graph, together with the rapid expansion of Web pillow mat, based on both today SQL injection also slowly become the mainstream way. Attack Its application in the main means set by
5、 service ports receive user input function, will construct sentences to database server, make its executives developers specified tasks.At least more than 70 percent of the Web site exist defects of SQL injection, malicious users can use server, database configuration the defects and elaborate struc
6、ture of illegal statements programs or scripts invades server by website administrator permissions and obtained the database, serious still relevant content can be obtained in the whole server connection system information, they exist to threaten not only database information, and even threaten syst
7、ems and users itself.This paper research projects in SQL injection technology, tools and manually injection into the experimental analysis of two kinds of ways. Full text is divided into five sections: the first chapter for full text introduction section, and briefly introduces the keynote research
8、background, sources and research significance; The second chapter SQL injection technology background paper with network environment; The third chapter of this project are introduced in detail SQL injection attack experimental process and result analysis; The fourth chapter of this project summary a
9、nd experimental result.Keywords: SQL, infuse, privileges, cyber attacks目 录Abstract.3第一章 引言 51.1 专题背景 .51.1.1 网络安全的根源 51.1.2 网络信息安全的定义 61.1.3 网络信息安全的现状 61.2 专题来源于研究意义 .7第二章 SQL 注入的背景与网络环境 82.1 SQL 注入攻击网络背景 82.1.1 攻击平台 Web 网络架构 .82.1.2 SQL 数据库语言 .92.2 SQL 注入技术定义 102.3 SQL 注入技术特点 112.4 SQL 注入技术原理 112.4
10、.1 SQL 注入攻击实现原理 .112.4.2 SQL 注入攻击实现过程 .12第三章 SQL 注入攻击实例分析 133.1 工具注入攻击 .133.1.1 注入工具简介 133.1.2 SQL 注入 Access 数据库实现过程 .143.1.3 SQL 注入 MYSQL 数据库实现过程 .173.2 手动注入攻击 .213.2.1 ACCESS 数据库的注入 .223.2.2 MSSQL 数据库的注入 .24第四章 结束语 24参考文献 25第一章 引言由于 Internet 的普及与应用,通信技术和计算机网络技术得到了迅猛发展,特别是国际互联网的出现,使得计算机以前所未有的速度应用于如
11、政府、商务、企业、教育、医疗等社会的各个领域,这些都深刻地影响着人们的经济、工作和生活方式。而以计算机联网来交流信息的方式已经成为现代社会的主流趋势,信息化水平已经成为衡量一个国家现代化程度和综合国力的重要标志。与此同时,网络的发展与信息化技术的提高也促使着网络运行与网络内容的安全这一关键性问题渐渐得到了人们的关注,信息安全也从起初简单的设计扩展到了多领域多层次的研究阶段。1.1 专题背景1.1.1 网络安全的根源随着社会信息化的发展,现在不只是军事、政府、企业往来,甚至日常生活之间的信息交往都热切的需要信息安全技术的保障,出现这一局面的鱼啊您大致有以下几点:(1)网络开放性引发的攻击。因为越
12、来越多拥有不同企图、不同背景的网络终端客户介入到互联网环境中,互联网已经不再是当初以科技和教育为初衷的校园互信环境,加之网络用户可以轻易的获取核心技术资料,开放源代码的应用程序,由于其公开代码的特点也使得众多准攻击者有了用武之地。(2)协议自身的漏洞。现今广泛应用的网络协议 TCP/IP,它的设计初衷只是在一个可信的环境下使局域网络互联,网络的可靠性与可用性要明显优于安全性,这也是导致网络上如DDOS、IP 欺骗、扫描。监听等多种网络攻击发生的根源。(3)关联与复杂性。由于软件发展周期与技术水平的限制,可以说基本上所有软件在设计中都或多或少遗漏了某些计算机安全方面的问题,即是少数网络产品有足够
13、的安全健壮性,但是由于网络关联性也会导致只需攻击其中最薄弱的环节就可以使整个体系瘫痪。并且,当今操作系统的多样性和拓扑结构的复杂性也使得网络的安全配置十分艰难,攻击者可以轻易的隐藏自己达到其自身的攻击目的。(4)安全意识。广大网络用户普遍安全意识淡薄,这也是导致了黑客攻击层出不穷,利用计算机犯罪的案例与日俱增的主要原因之一。1.1.2 网络信息安全的定义信息安全这个领域始于上个世纪 60 年代,起初只是对专用主机及其数据进行保护,本质上只是面向单机的。发展到 80 年代,由于微机的广泛出现促成了局域网的发展,此时信息安全的侧重点是依靠技术与网络约定来进行保护,实施的范围相对狭小,而到了 90
14、年代,互联网的蓬勃发展,把各个地区的终端计算机用网络连接起来,实现了全球范围的资源共享,但信息在处理、传输、存储等网络各个环节方面都存在着脆弱性,极易被劫获、监听、篡改、删除或添加隐藏恶意代码等。因此,可以说在进入 21 世纪后,信息安全才真正成为信息技术发展的核心任务。国际标准化组织(ISO)也对信息安全作出了定义:“为数据处理系统建立和采取的技术和管理的安全保护,保护计算机硬件、软件数据不因偶然和恶意的原因而遭到破坏、更改和泄露。”目前,从信息安全的特性上看,信息安全大致分为以下几个属性,当然随着科技的发展又加入了如可服务性等新概念。1.1.3 网络信息安全的现状信息系统的安全对于整个社会
15、、整个国家来说都具有巨大的现实意义,其中,无论从国家信息、个人隐私、公司机密等方面考虑,以数据库和 Web 服务器为基础的网络安全都已成为目前核心的安全问题。数据库与 Web 技术是组成现代化信息系统的核心技术,企业、政府、个人之间的信息共享绝大部分都需要数据库与 Web 服务器的支持,信息系统安全中包括的四个基本属性对应在这两种技术安全考虑,可以理解为在服务器端要做到一切关于个人敏感信息只能被合法的用户获得,数据库的内容不能砸越权的情况下擅自修改,Web 服务器动态处理函数正确的处理用户的请求,避免恶意代码的执行暴露敏感信息等等。如果无法保障数据库与 Web 服务器的安全配置与服务,不但其自
16、身的敏感信息会被窃取,其依托的操作系统也会面临严重的威胁。所以,研究数据库与 Web攻击的原理是迫切需要解决的课题。1.2 专题来源于研究意义以数据库与 Web 为代表的计算机信息共享是当今信息传递的主要载体和传播方式,而数据信息又是社会发展需要的战略资源。因此,围绕这两种技术的安全建设、使用与控制都成为影响企业,乃至国家利益的关键问题。然而,基于它们的网络安全相关研究工作还远不能达到实际需求,其中很重要的原因就是由于前所未有的网络发展速度、攻击所涉及的技术也相对复杂、网络用户还没偶能力预测未来的攻击方式与途径,所以也就更没有能力在一个技术的高度上提出全面的解决方案。结合现状,本文从几个方面进
17、行网络数据库与 Web 服务器安全的价值:(1)复杂的数据库系统。由于当今数据库的复杂性,导致正确、万无一失的配置和安全维护变得十分艰难,这些没有检测出的安全隐患和不当的配置也给注入的网络攻击者留下了可趁之机。(2)不完善的数据库服务器与操作系统数据的安全保障体系。由于性能配置方式的多样性,在使用时很可能被注入攻击者调用系统函数,从而危及数据库与系统数据的安全,严重时可能会破坏其所在的整个拥有信用关系的网络体系。(3)系统敏感信息的非法访问。尤其在代表着政府形象和企业形象的 Web 服务器和数据库服务器,都保存着重要的数据信息,如果与 Web 服务器的搭配不恰当会被攻击者蓄意输入恶意代码导致敏
18、感信息如电子货币、信用卡卡号的泄露,造成极大的社会危害。另外,从网络攻击者的角度来研究安全防御措施,通过分析与利用攻击者的实施方法,把握攻击者的心理,对网络攻击进行深入研究、提高安全检测、主动防御的能力都具有重要意义。对网络攻击的研究属于网络安全的灰色研究地带。成果形式与研究方法也与 IDS 等应用性研究不同,但是却具有更高的学术价值,并会对相关安全产品起到积极的影响,有助于提高目前安全产品的性能。而且从攻击的角度研究安全防御,改变了以往为防范研究防范措施的被动的繁育思想,使安全防御有着更强针对性。第二章 SQL 注入的背景与网络环境由于各种 Web 服务器的漏洞与程序的非严密性,导致针对服务
19、器的脚本攻击时间日益增多,其大多数是通过 ASP 或者 PHP 等脚本主图作为主要攻击手段,加之 Web 站点迅速膨胀的今天,基于两者的 SQL 注入也慢慢成为目前攻击的主流,同样在 Web 服务器端程序的编写过程中普遍存在着编写者专注于功能的实现而忽略代码安全性检测的现象,导致大量提供交互操作 Web 服务器存在漏洞,其中至少 70%以上的这样的站点存在着 SQL 注入的缺陷,恶意用户便可以利用服务器、数据库配置的疏漏和精心构造的非法语句通过程序或脚本侵入服务器获得网站管理员的权限和数据库的相关内容,严重的还可以获得整个服务器所在内网的系统信息,它们的存在不仅对数据库信息造成威胁,甚至还可以
20、威胁到系统和用户本身。2.1 SQL 注入攻击网络背景2.1.1 攻击平台 Web 网络架构Web 是 World Wide Web(万维网)的简称,其基本采用 C/S(客户/服务器)结构,总体结构由 Web 服务器端、客户终端和通信协议三大部分构成。(1)Web 服务器端。Web 服务器端是指驻留于因特网上的某种类型计算机程序。复杂的 Web 服务器结构中规定了服务器的传输设定、信息传输格式以及服务器本身的基本开放结构。Web 服务器不仅能够存储信息、按用户需求返回信息,还能在用户通过 Web 浏览器提供的信息的基础上运行脚本和程序。Web 服务器的作用就是管理这些信息按用户的要求返回信息。
21、(2)客户终端。所谓客户终端,就是用户普遍使用 Web 浏览器,主要用于向服务器端发送请求,并将接收到的信息进行解码、显示在浏览器上供用户查看。浏览器是客户端的软件系统,它从 Web 服务器上传和下砸文件,并翻译下载文件中的 HTML 代码,进行格式化,根据 HTML 中的内容在屏幕上显示输出。信息如果文件中包含特殊文件(如声音、视频等),Web 浏览器会作相应的处理或依据所支持的插件进行必要的显示。(3)HTTP 文件传输协议。图 2.1 网络 C/S 结构Web 浏览器与服务器之间遵循 HTTP 协议进行通讯传输,HTTP(Hyper Text Transfer Protocol)是超文本
22、传输协议的缩写,是分布式 Web 应用的核心技术。HTTP 协议采用了请求/响应模型,即客户端向服务器端发送一个请求,报头包含有请求的方法、URL、协议版本,以及包含请求修饰符、客户信息和内容,其结构类似 MIME 消息。服务器以一个状态行作为响应,返回给客户端浏览器。该协议在TCP/IP 协议栈中属于应用层协议。2.1.2 SQL 数据库语言SQL(Structured Query Language)即结构化查询语言,使用 SQL 编写应用程序可以完成数据库的管理工作。它的主要功能是同各种数据库建立联系进行沟通,任何程序,无论它用什么形式的感激语言,只要目的是向数据库管理系统发出命令来获得数
23、据库管理系统的响应,最终都必须体现以 SQL 语句的指令。按照ANSI(美国国家标准协会)的规定,SQL 语句是和关系型数据系统进行交互的标准语言。SQL 语句可以用来执行各种各样的操作,例如更新数据库中的数据、从素具哭中提取数据等。目前大多数流行的关系型数据库管理系统例如 Oracle,Microsoft SQL Server,Access 等都采用了 SQL 语言标准,虽然很多数据库都对 SQL 语言进行了再开发和扩展,但是包括 SELECT,INSERT,UPDATE,DELETE,CREATE,以及DROP 在内的标准的 SQL 命令仍然可以被用来完成几乎所有的数据库操作。2.2 SQ
24、L 注入技术定义所谓 SQL 注入式攻击,就是攻击者把 SQL 命令插入到 Web 表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的 SQL 命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态 SQL 命令,或作为存储过程的输入参数,这类表单特别容易受到 SQL 注入式攻击。SQL 注入(SQL Injection)技术在国外最早出现在 1999 年,我国在 2002 年后开始大量出现,目前没有对 SQL 注入技术的标准定义,微软中国技术中心从 2 个方面进行了描述。(1)脚本注入式的攻击。(2)恶意用户输入来影响被执行的 SQL 脚本。Chris Anley 将 SQL
25、注入定义为,攻击者通过在查询操作中插入一系列的 SQL语句到应用程序中来操作数据。Stephen Kost3给出了 SQL 注入的一个特征,“从一个数据库获得未经授权的访问和直接检索”。利用 SQL 注入技术来实施网络攻击常称为 SQL 注入攻击,其本质是利用 Web 应用程序中所输入的 SQL 语句的语法处理,针对的是 Web 应用程序开发者编程过程中未对 SQL 语句传入的参数做出严格的检查和处理所造成的。习惯上将存在 SQL 注入点的程序或者网站称为 SQL 注入漏洞。实际上,SQL 注入是存在于有数据库连接的应用程序中的一种漏洞,攻击者通过在应用程序中预先定义好的查询语句结尾加上额外的
26、 SQL 语句元素,欺骗数据库服务器执行非授权的查询。这类应用程序一般是基于 Web 的应用程序,它允许用户输入查询条件,并将查询条件嵌入 SQL 请求语句中,发送到与该应用程序相关联的数据库服务器中去执行。通过构造一些畸形的输入,攻击者能够操作这种请求语句去获取预先未知的结果。2.3 SQL 注入技术特点SQL 注入攻击是目前网络攻击的主要手段之一,在一定程度上其安全风险高于缓冲区溢出漏洞,目前防火墙不能对 SQL 注入漏洞进行有效地防范。防火墙为了使合法用户运行网络应用程序访问服务器端数据,必须允许从 Internet 到 Web 服务器的正向连接,因此一旦网络应用程序有注入漏洞,攻击者就
27、可以直接访问数据库进而甚至能够获得数据库所在的服务器的访问权,因此在某些情况下,SQL 注入攻击的风险要高于所有其他漏洞。SQL 注入攻击具有以下特点:(1)广泛性。SQL 注入攻击利用的是 SQL 语法,因此只要是利用 SQL 语法的 Web应用程序如果未对输入的 SQL 语句做严格的处理都会存在 SQL 注入漏洞,目前以Active/Java Server Pages、 Cold Fusion Management、 PHP、Perl 等技术与SQL Server、Oracle、DB2、Sybase 等数据库相结合的 Web 应用程序均发现存在SQL 注入漏洞。(2)技术难度不高。SQL
28、注入技术公布后,网络上先后出现了多款 SQL 注入工具,例如教主的 HDSI、NBSI、明小子的 Domain 等,利用这些工具软件可以轻易地对存在 SQL 注入的网站或者 Web 应用程序实施攻击,并最终获取其计算器的控制权。(3)危害性大,SQL 注入攻击成功后,轻者只是更改网站首页等数据,重者通过网络渗透等攻击技术,可以获取公司或者企业机密数据信息,产生重大经济损失。2.4 SQL 注入技术原理2.4.1 SQL 注入攻击实现原理结构化查询语言(SQL)是一种用来和数据库交互的文本语言,SQL Injection就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达
29、到入侵数据库乃至操作系统的目的。它的产生主要是由于程序对用户输入的数据没有进行细致的过滤,导致非法数据的导入查询。SQL 注入攻击主要是通过构建特殊的输入,这些输入往往是 SQL 语法中的一些组合,这些输入将作为参数传入 Web 应用程序,通过执行 SQL 语句而执行入侵者的想要的操作,下面以登录验证中的模块为例,说明 SQL 注入攻击的实现方法。在 Web 应用程序的登录验证程序中,一般有用户名(username)和密码(password)两个参数,程序会通过用户所提交输入的用户名和密码来执行授权操作。其原理是通过查找 user 表中的用户名(username)和密码(password)的结
30、果来进行授权访问,典型的 SQL 查询语句为:Select * from users where username=admin and password=smith如果分别给 username 和 password 赋值“admin or 1=1-”和“aaa”。 那么,SQL 脚本解释器中的上述语句就会变为:select * from users where username=admin or 1=1- and password=aaa该语句中进行了两个判断,只要一个条件成立,则就会执行成功,而1=1在逻辑判断上是恒成立的,后面的“”表示注释,即后面所有的语句为注释语句。同理通过在输入参数中
31、构建 SQL 语法还可以删除数据库中的表,查询、插入和更新数据库中的数据等危险操作:(1)jo; drop table authors如果存在 authors 表则删除。(2) union select sum(username) from users从 users 表中查询出username 的个数(3); insert into users values( 666, attacker, foobar, 0xffff )在 user 表中插入值(4) union select version,1,1,1查询数据库的版本(5)exec masterxp_cmdshell dir通过 xp_cm
32、dshell 来执行 dir 命令2.4.2 SQL 注入攻击实现过程SQL 注入攻击可以手工进行,也可以通过 SQL 注入攻击辅助软件如HDSI、Domain、NBSI 等,其实现过程可以归纳为以下几个阶段:(1)寻找 SQL 注入点;寻找 SQL 注入点的经典查找方法是在有参数传入的地方添加诸如“and 1=1”、“and 1=2”以及“”等一些特殊字符,通过浏览器所返回的错误信息来判断是否存在 SQL 注入,如果返回错误,则表明程序未对输入的数据进行处理,绝大部分情况下都能进行注入。(2)获取和验证 SQL 注入点;找到 SQL 注入点以后,需要进行 SQL 注入点的判断,常常采用2.1
33、中的语句来进行验证。(3)获取信息;获取信息是 SQL 注入中一个关键的部分,SQL 注入中首先需要判断存在注入点的数据库是否支持多句查询、子查询、数据库用户账号、数据库用户权限。如果用户权限为 sa,且数据库中存在 xp_cmdshell 存储过程,则可以直接转(4)。(4)实施直接控制;以 SQL Server 2000为例,如果实施注入攻击的数据库是SQL Server 2000,且数据库用户为 sa,则可以直接添加管理员账号、开放3389远程终端服务、生成文件等命令。(5)间接进行控制。间接控制主要是指通过 SQL 注入点不能执行 DOS 等命令,只能进行数据字段内容的猜测。在 Web
34、 应用程序中,为了方便用户的维护,一般都提供了后台管理功能,其后台管理验证用户和口令都会保存在数据库中,通过猜测可以获取这些内容,如果获取的是明文的口令,则可以通过后台中的上传等功能上传网页木马实施控制,如果口令是明文的,则可以通过暴力破解其密码。第三章 SQL 注入攻击实例分析本次的 SQL 注入攻击实验主要分为工具注入和手动注入两种方式。下文将针对这个两种注入过程以图文结合的方式详细展示。3.1 工具注入攻击3.1.1 注入工具简介在本次的工具注入攻击的实验中,我们主要使用到“啊 D 注入工具 v2.32 增强版”和“domain 工具”。 啊 D 注入工具是一种自创的注入引擎 ,可以检测
35、更多存在注入的连接,同时使用多线程技术,检测速度较为迅速。另外,啊 D 注入工具对“MSSQL 显错模式“、“MSSQL 不显错模式“、“Access“等数据库都有很好注入检测能力。它的主要功能包括:“跨库查询“、“注入点扫描“、“管理入口检测“、“目录查看“、“CMD 命令“、“木马上传“、“注册表读取“、“旁注/上传“、“WebShell 管理“、“Cookies 修改“等。 图 3.1.1 啊 D 注入工具3.1.2 SQL 注入 Access 数据库实现过程(1)用啊 D 注入工具扫描注入点扫描注入点。图 3.1.2(1) 扫描注入点在众多扫描出的有注入漏洞的网站中选择一个进行注入实验
36、。(2)用“穿山甲工具扫描表名和字段名以及字段内容此过程也可得知该数据库类型。得到的结果如下:图 3.1.2(2)获取数据库类型由图可以清楚的看到猜解的结果。其中的 PASSWORD 为 16 为 MD5 加密的结果。数据库类型为 ACCESS。(3)网页破解 MD5 密码。复制猜解出来的 16 位 MD5 密码,黏贴到这个网站的输入框。页面显示解密后的结果:manager。图 3.1.2(3)网页破解 MD5 密码(4)运用 domain 工具扫描出后台的登录点并登录后台。图 3.1.2(4)扫描后台登录点(5)扫描出来的登录点如上图所示,右击即可打开。打开后的网页如下图所示。图 3.1.2
37、(5)打开网页用刚才得到的用户名和密码登陆后结果如下图:进入后台后即可对网页进行操作,选项如下图所示:3.1.3 SQL 注入 MYSQL 数据库实现过程(1)扫描注入点扫描注入点。图 3.1.3(1)扫描注入点(2)表名和字段名的猜解。扫描出注入点后,开始进行猜解表名和字段名:图 3.1.3(2)猜解表名、字段名由图可以看出这是 MSSQL 数据库,接着进行表名解:猜解出表名后进行字段的猜解:(3)字段值的猜解。图 3.1.3(3)猜解字段值在猜解了表名和字段名后,可以开始猜解字段的值,由上图可知,字段的值都是被成功的猜解出来。其中的 PASSWORD 是用 MD5 加密形成的 16 位密码
38、。(4)破解 MD5 密码。直接将猜解出来的 MD5 密码复制到下面网页的输入栏中,如图所示:图 3.1.3(4)破解 MD5 密码得到其中一个用户的密码为“ZW”。(5)登录后台,成功注入。在获得了用户名以及密码以后,就可以猜解后台登陆地址了,这个网页的后台登陆网页并没有被工具扫出来,但是通过尝试,还是猜了出来,下面是他的登陆页面:按照获得用户名和密码输入以后就可以进入网站后台了,下面是网站后台的截图:3.2 手动注入攻击SQL 注入攻击主要是通过构建特殊的输入,这些输入往往是 SQL 语法中的一些组合,这些输入将作为参数传入 Web 应用程序,通过执行 SQL 语句而执行入侵者的想要的操作
39、,下面以登录验证中的模块为例,说明 SQL 注入攻击的实现方法。在 Web 应用程序的登录验证程序中,一般有用户名(username)和密码(password)两个参数,程序会通过用户所提交输入的用户名和密码来执行授权操作。其原理是通过查找 user 表中的用户名(username)和密码(password)的结果来进行授权访问,典型的 SQL 查询语句为:Select * from users where username=admin and password=smith如果分别给 username 和 password 赋值“admin or 1=1-”和“aaa”。 那么,SQL 脚本解
40、释器中的上述语句就会变为:select * from users where username=admin or 1=1- and password=aaa该语句中进行了两个判断,只要一个条件成立,则就会执行成功,而1=1在逻辑判断上是恒成立的,后面的“”表示注释,即后面所有的语句为注释语句。同理通过在输入参数中构建 SQL 语法还可以删除数据库中的表,查询、插入和更新数据库中的数据等危险操作:(1)jo; drop table authors如果存在 authors 表则删除。(2) union select sum(username) from users从 users 表中查询出user
41、name 的个数(3); insert into users values( 666, attacker, foobar, 0xffff )在 user 表中插入值(4) union select version,1,1,1查询数据库的版本(5)exec masterxp_cmdshell dir通过 xp_cmdshell 来执行 dir 命令SQL 注入常用函数如下:3.2.1 ACCESS 数据库的注入(1)判断是否有注入漏洞。在网址 URL 后加符号“ ”,页面返回如图:图 3.2.1(1)注入漏洞判断由报错信息还可知该数据库类型为 ACCESS,然后进行 1=1,1=2 测试,结果如
42、下:当 1=1 时页面正常显示,1=2 时,页面返回上图错误,由此可知该链接可以注入。(2)进行表名、字段名的猜解。图 3.2.1(2)猜解表名、字段名 由上图可以清楚地看到在地址栏中的注入语句。该语句的作用是实验有没有一个叫 admin 的表存在于数据库中,如果页面返回正常,那么存在,返回错误则改变名字继续实验,直到猜到为止。猜到表名后就进入到下一步骤,猜字段名称,如下图所示:同样,如果正确,则会返回正常的页面,错误则会显示出错的页面,然后更改COUNT()中的值继续进行猜解字段名直到正确。(3)猜解字段内容。猜解到正确的字段名后,就会进入下一步,猜解字段内容,如下图所示:图 3.2.1(3
43、)猜解字段内容(4)完成注入。由图 3.2.1(3)所示,在先用 LEN()函数猜解出字段长度后再运用图中的语句,以 ASCII 编码的形式一步步猜解出字段的内容。要更改的内容只有 MID 函数后两位的数值和符号后的值。最后就可以得到字段的所有数值。然后获得网页后台的登录账号和密码。由此完成注入的流程。3.2.2 MSSQL 数据库的注入与 ACCESS 数据库的注入一样,MSSQL 数据库也是可以通过猜解的方式进行注入攻击,而且 MSSQL 数据库还可以进行暴库攻击。这里的“暴库”攻击主要是利用了MSSQL 不同类型值的比较会报错,错误信息会暴露表名的漏洞来进行攻击。下图是猜解一个 MSSQ
44、L 数据库网站的猜解数据库名的其中一步:由图可以清楚地看到注入的语句,虽然比较复杂,但是工具就是不停地进行这样的测试从而得到最终结果的。第四章 结束语由于 SQL 注入攻击时针对应用开发过程中的编程漏洞,因此对于绝大多数防火墙来说,这种攻击是可以绕过的。虽然数据库服务器的版本一直在更新,各种脚本语言本身的漏洞也越来越少,可是随着 SQL 注入技术的不断提高,只要 Web 应用系统或源代码中仍然存在此类漏洞,就会潜伏着这种隐患,特别是当 SQL 注入攻击与其他一些攻击工具结合时,对服务器乃至系统都是巨大的威胁。因此,研究SQL 注入攻击方法、如何正确的对服务器进行安全配置、如何做好代码的安全编写与用户输入的过滤检查,对于开发安全的 Web 应用程序有着重要的意义。通过本次专题研究,我们小组更加深刻地理解网络攻击与防御在实践中的意义所在,在一步一步的时间探索过程中,将理论知识用于具体实践,对 SQL 注入攻击这一知识块有更深一步的理解与掌握。参考文献1谢希仁.计算机网络 M.5 版.北京:清华大学出版社,2008.101-108.2王吉军.网络安全机密与解决方案M.5 版.北京:清华大学出版社,2006.56-83.3张耀疆.聚焦黑客 -攻击手段与防护策略.北京,人民邮电出版社,2002.09.