SQL注入式攻击原理及防范(共5页)_第1页
SQL注入式攻击原理及防范(共5页)_第2页
SQL注入式攻击原理及防范(共5页)_第3页
SQL注入式攻击原理及防范(共5页)_第4页
SQL注入式攻击原理及防范(共5页)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上SQL注入式攻击原理及防范 【摘 要】本文介绍了SQL注入式攻击的原理,结合实例阐述了SQL注入式攻击的方法,并从代码层和平台层探讨了SQL注入式攻击的防范。 【关键词】SQL;注入式;攻击 1. SQL注入式攻击的原理 进行SQL注入时一般会用到两种方式:第一是手工注入,第二是工具注入。对于猜解管理员的密码方面一般用Pangolin或者NBSI ,其总体思路是1:(1)扫描目标网络信息(判断是否存在SQL注入漏洞);(2)判断后台数据库类型;(3)发现WEB虚拟目录;(4)上传ASP木马;(5)得到管理员权限。 详细介绍如下: (1)SQL注入一般存在于形如:htt

2、p:/xxx.xxx.xxx/abc.asp?p=YY的网站中。 (2)在http:/xxx.xxx.xxx/abc.asp?p=YY 后面追加“and 1=1”,并访问该网址即http:/xxx.xxx.xxx/abc.asp?p=YY and 1=1 应该与访问原地址得到的结果相同。 (3)在http:/xxx.xxx.xxx/abc.asp?p=YY 后面追加“and 1=2”,并访问该网址即http:/xxx.xxx.xxx/abc.asp?p=YY and 1=2应该与访问原地址得到的结果不同,并提示数据库错误。(2,3同时满足则此网站必定存在SQL漏洞,可以进行sql注入攻击) (

3、4)访问http:/xxx.xxx.xxx/abc.asp?p=YY and exists (select * from 网站数据库常用表段名) 网站数据库常用表段名:admin users administrator 等,如果进入的网页像步骤二一样,是正常网页,证明存在该表段名。找寻该SQL数据库使用的表名,进而寻找网站的管理员名、密码等信息。 (5)访问http:/xxx.xxx.xxx/abc.asp?p=YY and exists (select 网站数据库常用字段名 from 第4步找到的可入侵表名) 网站数据库常用字段名:admin password username 等,如果进入

4、的网页像步骤2一样,是正常网页,证明存在该字段名。找寻该SQL数据库使用的字段名,进而寻找网站的管理员名、密码等信息。 (6)访问http:/xxx.xxx.xxx/abc.asp?p=YY and exists (select *from第4步找到的可入侵表名where第5步找到的可入侵字段名like '_ ) 。 (7)访问http:/xxx.xxx.xxx/可入侵后门字段名,找到网站后门。 (8)利用从数据库中查到的敏感数据进入网站后门。 2. SQL注入式攻击的简单实例 这里我们举一个比较常见的例子来简要说明一下sql注入的原理。假如我们有一个users表,里面有两个字段use

5、rname和password。在我们的java代码中我们初学者都习惯用sql拼接的方式进行用户验证。比如: "select id from users where username = '"+username +"' and password = '" + password +"'" 这里的username和password都是我们存取从web表单获得的数据。下面我们来看一下一种简单的注入,如果我?在表单中username的输入框中输入' or 1=1- ,password的表单中随便输入一些东

6、西,假如这里输入123.此时我们所要执行的sql语句就变成了 select id from users where username = '' or 1=1- and password = '123',我们来看一下这个sql,因为1=1是true,后面 and password = '123'被注释掉了。所以这里完全跳过了sql验证。 3. SQL注入式攻击的防范 从存在的实际情况来看,包括Web服务器管理员、数据库服务器管理员、数据库设计员、代码程序员在内的所有工作人员都是防御体系的关键。 从Web应用程序的开发、部署、管理、维护多个方面进行审

7、查,使程序SQL注入了漏洞最小化。我们从代码层和平台层两个方面来阐述SQL注入攻击的防御。 3.1代码层防御 从Web数据库管设计员和编写代码的角度来研究SQL注入攻击防御的。 (1)使用参数化语句。前面讲过动态字符串构造是引发SQL注入漏洞的原因之一。作为一种更加安全的动态字符串构造方法,大多数现代编程语言和数据库访问API可以使用占位符或绑定变量来向SQL查询提供参数(而非直接对用户输入进行操作)2,这些通常称为参数化语句内容是更安全的方法,可以使用它们来避免或解决很多在应用中经常见到的SQL注入问题,并可以在大多数常见的情形中使用它们来替代现有的动态查询。不过,值得注意的是,参数化语句是

8、与一种向数据库提供潜在的非安全参数(通常作为查询或存储过程调用)的方法。虽然它们不会修改传递给数据库的内容,但如果正在调用的数据库功能在存储过程或函数中使用了动态SQL,则仍然可能出现SQL注入。 (2)输出编码 。处理验证应用受到的输入以外,通常还需要对在应用的不同的模块或部分间传递的内容进行编码。在SQL注入语境中,将其发送给数据库的内容进行编码或“引用”是必要的操作,这样可以保证内容被正确地处理。如有必要对包含字符串中的单引号进行编码,可以使用两个单引号替换单个单引号的方法来实现编码的目的,从而有效阻止恶意用户在特定的查询中利用SQL注入,可以使用与下面类似的代码在java中实现该目的:

9、 Sql=sql.replace(“ “, “ “);。 3.2平台层防御 服务器管理员应在IIS中为每个网站设置好执行权限,一定别给静态网站以"脚本和可执行"权限。一般情况下给个“纯脚本”权限就够了,对于那些通过网站后台管理中心上传的文件存放的目录,就更谨慎一点吧,执行权限设为"无"好了,这样就能防止别有用心的人上传ASP木马,即使上传了, ASP木马也运行不了。由于SQL注入漏洞涉及整个网站安全,一旦黑客通过这个漏洞上传了ASP木马并运行起来,那整个网站也就完蛋了。所以责任心强的服务器管理员都应该十分谨慎的配置IIS的执行权限。 同样的谨慎态度也应该用在数据库用户的权限配置上(MS_SQL,ACCESS都没有用户权限配置)。如果PUBLIC权限已经够用,那就不需要给更高的权限了,千万别把SA级别的权限随随便便地给人家啊。要知道SA可是个等同管理员权限的角色,拿到了SA权限,几乎就等于拿到主机的管理员帐号了。黑客可是能通过编程跨库进行SQL注入的,如果把SA权限给了存在SQL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论