- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
SQLInjection注入漏洞的发掘方法.PDF
2008 年第 5 期
适合读者:漏洞爱好者
前置知识:无
黑客漏洞发掘技术内幕系列之四:
SQL Injection 注入漏洞的发掘方法
文/图 爱无言
“注入漏洞”,听起来总让人想起医院里的注射器,其实这种漏洞的原理正像注射器的作用。由于 Web
应用程序在使用中,为了管理庞大的数据信息,例如用户的登录名称、密码,网站的公告、文章、图片等
等,都会使用到数据库。数据库可以方便网站管理者对所有的网站数据进行统一的存储、分类组织,便于
查询更新。用户在访问网站时,Web 应用程序可以自动通过对数据库的查询,将所获得的数据信息按照一
定的格式显现给用户,同时用户也可以通过提交一些交互式的表单,从而使 Web 应用程序按照用户想要的
信息进行查询,返回给用户想要的信息。对于 Web 应用程序的这种数据库操作,我们先来看一段代码。
strKeyword = Request.QueryString[keyword];
sqlQuery = SELECT * FROM Aritcles WHERE Keywords LIKE % +strKeyword + %;
这是一段由 ASP 语言编写的应用程序代码,主要目的是按照用户提交的关键字对网站文章进行搜索。
通过在 XSS 漏洞发掘技术中的学习,我们知道 Request.QueryString 方法使用 Get 形式来获取外部数据,也
就是说这些外部数据是直接跟在网址后面的,所以通过浏览器我们可以这样来提交想要查询的关键字:
/search.asp?keyword=hack,这里“hack”这个关键字就会被传递给 keyword 关键变量,
这时候我们来看看代码的执行情况,keyword 获得数据“hack”后,赋值给 strKeyword 变量,然后 strKeyword
变量被放入查询语句,此时的查询语句表现为:“SELECT * FROM Aritcles WHERE Keywords LIKE
%hack%”,这个查询语句的意思就是从数据库黑客防线Aritcles 表中查询出所有包含“ hack”这个关键字的文章。
这里我们注意到“hack”这个单词是我们可以随意修改的,于是我们决定修改一下“hack”,把它变成
“hack;DROP%20TABLE%20Aritcles;--”,注意这里的%20 是由于在 Get 形式下,所有字符会被编码,“%
20”就是空格的 URL 编码。现在再来看看 search.asp 会怎样处理这个外部关键字数据。首先,
“hack;DROP%20TABLE%20Aritcles;--”被赋值给 strKeyword 变量,strKeyword 变量解码后进入查询语句,
此时的查询语句被换成了“SELECT * FROM Aritcles WHERE Keywords LIKE %hack%;DROP TABLE
Aritcles;--”。我们知道,DROP TABLE 语句在数据库操作中指的是删除一个指定的表,现在来分析上面
这条查询语句。我们将“SELECT * FROM Aritcles WHERE Keywords LIKE %hack% ;DROP TABLE
Aritcles;--”以中间的分号为标志分成两个部分,先看第一部分“转载请注明出处SELECT * FROM Aritcles WHERE Keywords
LIKE %hack%”,这是一个完整的数据库查询语句,查询的结果就是所有包含 hack 关键字的文章,接着看
第二部分,由于在微软的数据库 SQL SERVER 环境中,支持多命令语句执行,这些数据库操作的命令语句
都是由分号进行分隔,然后依次执行的,
文档评论(0)