Web关于SQL Injection 的攻防.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Web关于SQL Injection 的攻防 陈华 2008年9月12日 目标 1 什么是Sql 注入? 2 Sql注入的原理? 3 Sql注入的一般形式? 4 Sql注入的特点? 5 Java关于Sql注入的防范? 什么是Sql注入? 程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,这就是所谓的SQL Injection,即SQL注入。 Sql注入的原理(Web) 通过向服务器提交自己伪装过的SQL命令,来获得响应,进而通过服务器的响应来判断推测自己想要的数据。 Sql 注入的一般形式(Web) 1 通过表单提交数据,比如登陆 比如用户名,密码这样输入: UserName:Admin Password:123 or 1=1 Sql 注入的一般形式(Web) 通过URL连接的修改来注入。 ① /showdetail.asp?id=49 ② /showdetail.asp?id=49 and 1=1 ③ /showdetail.asp?id=49 and 1=2 4 /showdetail.asp?id=49 and (select count(*) from admin)0 Sql注入的特点 A SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报。 B 根据提交的SQl语句逐个得到: 数据库类型 ——系统用户表——表字段——用户名——密码———获得管理员权限 判断能否经行Sql注入一 判断能否经行Sql注入? ① /showdetail.asp?id=49 ② /showdetail.asp?id=49 and 1=1 ③ /showdetail.asp?id=49 and 1=2 1 正常显示(这是必然的,不然就是程序有错误了) 2 正常显示,内容基本与①相同 3 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时) 这表示是可以Sql注入的。 判断能否经行Sql注入二 ① /showdetail.asp?id=49 ② /showdetail.asp?id=49 and 1=1 ③ /showdetail.asp?id=49 and 1=2 ①同样正常显示, ②和③一般都会有程序定义的错误提示,或提示类型转换时出错, 如果是这样就表示程序是不能注入的。 判断系统用什么样的数据库一 A根据URL的连接判断语言,然后根据语言判读数据库,然后在推测服务器的原则。 B根据目前的流行的语言和数据库的搭配 A PHP+MySql+Apache B Jsp+Oracle+Web服务器 C A+SqlServer+IIS D Asp+Access+IIS 判断系统试用什么样的数据库二 首先,根据语言来判断数据库,应为这样的结合才能产生比较好的性能。 其次,根据Sql注入后的返回值来判断。 例子一 /showdetail.asp?id=49 and user0 1 user是SQLServer的一个内置变量,它的值是当前连接的用户名,类型为nvarchar。 2 拿一个nvarchar的值跟int的数0比较,系统会先试图将nvarchar的值转成int型,当然,转的过程中肯定会出。 SQLServer的出错提示是:将nvarchar值 ”abc” 转换数据类型为 int 的列时发生语法错误,abc正是变量user的值,这样就拿到了数据库的用户名 例子一 3?另外: SQLServer的用户sa是个等同Adminstrators权限的角色,拿到了sa权限,几乎肯定可以拿到主机的Administrator了。上面的方法可以很方便的测试出是否是用sa登录,要注意的是:如果是sa登录,提示是将”dbo”转换成int的列发生错误,而不是”sa”。 如果服务器IIS不允许返回错误提示,那怎么判断数据库 类型呢?我们可以从Access和SQLServer和区别入手,Access和SQLServer都有自己的系统表,比如存放数据库中所有对象的表,Access是在系统表[msysobjects]中,但在Web环境下读该表会提示“没有权限”,SQLServer是在表[sysobjects]中,在Web环境下可正常读取 例子一 /showdetail.asp?id=49 and (select coun

文档评论(0)

白领文档(原创) + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档