浅析SQL注入0.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
浅析Sql注入 (Sql Injection) 什么是Sql注入 为什么会用Sql注入 SQL注入是从正常的WWW端口访问,而且表面看起来跟一般的Web页面访问没什么区别,所以目前市面的防火墙都不会对SQL注入发出警报,如果管理员没查看IIS(Web服务器)日志的习惯,可能被入侵很长时间都不会发觉。 但是,SQL注入的手法相当灵活,在注入的时候会碰到很多意外的情况。能不能根据具体情况进行分析,构造巧妙的SQL语句,从而成功获取想要的数据,是高手与“菜鸟”的根本区别。 Sql注入是怎样产生的(Java Web) 1. 没有使用PreparedStatement对象的setString()等方法进行传参,而是使用的“拼串”方式。 例如: 怎样进行Sql注入(Java Web) 怎样进行Sql注入(Java Web) 怎样进行Sql注入(Java Web) 怎样进行Sql注入(Java Web) 怎样进行Sql注入(Java Web) 怎样进行Sql注入(Java Web) 怎样进行Sql注入(Java Web) 经验小结 附录 Thank you * * 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于这个行业的入门门槛不高,程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。 用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想得知的数据,这就是所谓的SQL Injection,即SQL注入。 public foodBean getFoodById(String id){ con=this.getCon(); String sql=select * from foodinfo where foodId =+id+; System.out.println(sql); stmt=con.prepareStatement(sql); rs=stmt.executeQuery(); … 导致非法参数传入,构造成非法的sql语句! 例如在此处给id传入值为“ 20’ ; (任意sql语句) ; --- ”, 构造成 select * from foodinfo where foodId =‘20 ’ ; (任意sql语句) ; --- 如何测试是否存在Sql注入(一) 示例: 如 http://localhost:8080/restrantNew/details.jsp?foodID=02 1.在此URL尾处加上单引符号“ ‘ ” 2.最终执行的sql语句则是 select * from foodinfo where foodId =‘20’’ 3.页面出现错误,因为语句中出现未闭合的单引号。 结论:加单引号和不加此单引号返回显示的页面不相同,可判断为此处存在Sql注入漏洞! 如何测试是否存在Sql注入(二) 有些程序中简单的过滤掉了单引号,如果你用单引号测试,是测不到注入点的 那么,什么样的测试方法才是比较准确呢?答案如下: http://localhost:8080/restrantNew/details.jsp?foodID=02 ’ and 1=1 http://localhost:8080/restrantNew/details.jsp?foodID=02 ‘ and 1=2 这就是经典的1=1、1=2测试法了,怎么判断呢? ①返回正常页面,②出现错误,则此处存在Sql注入漏洞! SQL注入的一般步骤 (一) 判断环境,寻找注入点,判断数据库类型 根据注入参数类型,在脑海中重构SQL语句的原貌,按参数类型主要分为下面三种 ID=20 这类注入的参数是数字型,SQL语句原貌大致如下: Select * from 表名 where 字段=49 注入的参数为ID=49 And [查询条件],即是生成语句: Select * from 表名 where 字段=49 And [查询条件] type=Student 这类注入的参数是字符型,SQL语句原貌大致概如下: Select * from 表名 where 字段=Student 注入的参数为type=Student and [查询条件] -- ,即是生成语句: Select * from 表名 where 字段Student and [查询条件] – 搜索时没过滤参数的,如keyword=关键字,SQL语句原貌大致如下: Select * from 表名 where 字段 like

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档