补充-数据库应用与性能优化-一章-sql server注入攻击及原理.pdfVIP

补充-数据库应用与性能优化-一章-sql server注入攻击及原理.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

目前随着互联网技术的高速发展,B/S(Brower/Server)架构已经逐渐成为了一种主流的应用开发

模式,使用这种模式开发程序的人也是越来越多。但是由于行业特点,使得程序员的水平和工作经

验参差不齐,使得相当一部分程序员在编写程序代码的时候并未对用户输入的数据进行合法化的检

查和判断,使的数据库存在非常大的安全隐患。

例如,别有用心的人如果希望你的数据库,那么首先需要对你的数据库系统的组成有一定的了

解。而SQL注入(也称为SQLInjection)就是利用一段事先编写好的数据库查询代码提交给

应用程序。然后根据程序返回的结果,获得一些他想得知的数据。然后发动后续的。

因为SQL注入是采用从正常的WWW端口,而且看起来和普通的Web页面没什么区别,

所以是不会对SQL的注入有任何反映的。更不要指望它会发出信息了。再加上很多

管理员都没有每天查看IIS日志的习惯。导致服务器已经被了很长时间也难以被发现。

SQL注入的手法多种多样,在实际实施的过程中,可以遇到的情况非常的多。未必能够一试百灵,

还需要根据当时的具体情况进行分析,反复尝试,以选择出最佳的SQL语句,从而获得用户希望获

得的信息。

1.SQL注入原理:

当用户试图一个某站时,首先要输入该的,例如。进入该的首页,

发现该页面上有很多,随意点击某个,观察地址显示为

,用户可以尝试在该地址后增加一个单引号,这时候服

务器可能会返回以下的错误提示:

JETDatabaseEngine错误’80040e14’

字符串的语法错误在查询表达式’ID=38’中。

/showdetail.asp行8

如果返回这样的错误信息,就证明该可能存在注入的,从上述信息可以看出以下几点:

1.使用的是Access数据库,通过JET引擎连接数据库,而不是ODBC。

2.前台程序并没有对用户提交的数据进行是否符合程序要求的检查。

3.查询语句查询的表中包含有一个名为ID的字段。

请注意

在尝试进行注入前需要首先将IE-工具-Internet选项-高级-显示友好HTTP错误信息前面

的勾去掉。否则,无论服务器返回什么样的错误信息,用户都只能看到IE中显示HTTP500服务器错

误。而无法获得用户所关心的数据信息。

2.SQL能够进行注入的判断:

从以上案例中可以看出,注入并不复杂。但是上面的操作方法只是让用户可以理解注入的

原理,在实际运用中并不是方法,首先服务器上的IIS不一定都会返回错误的提示信息给客

户端,有些警惕性较高的管理员会在程序中增加cint(参数)之类的语句,那么SQL注入将无法成功,因

为虽然服务器仍然会报错,但是报错信息将变为:处理URL时服务器出错,请和您的系统管理员联

系。

请注意

Cint参数的目的主要是为了将数值字段转换成整型字段输出。

其次对SQL注入有一定了解的程序员完全可以在编写程序时,要求将单引号过滤掉。那么如果用单

引号测试,也是无法找到注入点的。

比较常用的寻找注入点的方法如下:

在浏览器中分别输入三组字段,分别查看它们返回的结果值:

and1=1

and1=2

如果存在注入点的话,将会分别显示为:

正常显示

正常显示,内容与第一组字段显示的结果基本相同

提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为

空(程序加了onerrorresumenext)

如果没有注入点的存在,也很容易判断:

语句1正常显示

语句2和语句3一般都会有程序定义的错误提示,或提示类型转换时出错。

以上讲解的方法主要是针对数字型参数使用的判断方法,在实际环境中还会遇到字符型或搜索型参

数。需要根据具体情况再进行分析和研究。这里不做为重点介绍。

3.判断数据库类型和注入原理

不同的数据库函数的注入方法有着很大的不同,在注入前

文档评论(0)

183****7931 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档