sql盲注

  在使用sql语句作为数据库操作方式的系统中,因为程序员处理传入参数不善而导致sql语句功能改变,从而利用这些改变对数据库甚至系统造成信息泄漏、系统破坏的问题成为sql注入。

  sql盲注是sql注入的一种,它通过传入特殊参数,配合系统接口的正常、异常状态返回,达到对系统以及数据库信息进行猜测的目的。

  举个栗子:

    (1)探测到某个接口,内容如下:

      http://www.abc.com?a=1&b=2

      返回值为

      {"state":"1","msg":"Success"}

    (2)后台的在执行功能的时候有如下代码

      String sql = "select * from tb_test where a = ‘"+a+"‘ ";

      Statement createStatement = conn.createStatement();
      createStatement.executeQuery(sql);

    (3)那么攻击者就可以通过传入这样的参数对系统进行试探:

      a=1%27;select%20*%20from%20user

      也就是a=1‘;select * from user

    (4)这时候后台sql会变成

      select * from tb_test where a = ‘1‘;select * from user

      如果系统中存在user表,返回值为{"state":"1","msg":"Success"}

      如果系统中不存在user表,返回值为{"state":"0","msg":"Error"}  

    攻击者就很容易通过这样的手段对系统进行猜测和破坏(假如没有限制执行的是查询,那么参数弄成delete或者update,就可以为所欲为了……)。

  解决方法:

    (1)使用PreparedStatement进行sql预编译,用参数化查询的方式处理sql;

    (2)限定sql操作范围,比如使用注解@ReadOnly修饰查询服务等;

    (3)对输入参数进行严格的格式校验,剔除所有可能的异常值;

    (4)使用一些能够处理此类问题的开源框架;

    (5)其他可行方法;

扩展学习

  盲注手法:

    https://www.cnblogs.com/fengh/p/6183928.html

    https://www.cnblogs.com/lcamry/p/5763129.html

  盲注常用方法:

    http://blog.sina.com.cn/s/blog_15e7bc4bb0102wclz.html

  

  逃过appscan盲注的最简单方法:

    http://blog.csdn.net/arthurzil/article/details/6863213

  appscan误报盲注解决方案:

    http://blog.csdn.net/huqingpeng321/article/details/53521616

原文地址:https://www.cnblogs.com/chendeming/p/8474525.html

时间: 2024-10-09 22:31:55

sql盲注的相关文章

小白日记42:kali渗透测试之Web渗透-SQL盲注

SQL盲注 [SQL注入介绍] SQL盲注:不显示数据库内建的报错信息[内建的报错信息帮助开发人员发现和修复问题],但由于报错信息中提供了关于系统的大量有用信息.当程序员隐藏了数据库内建报错信息,替换为通用的错误提示,SQL注入将无法依据报错信息判断注入语句的执行结果,即为盲注. 思路:既然无法基于报错信息判断结果,基于逻辑真假的不同结果来判断 a.  1' and 1=1--+ b.  1' and 1=2--+    [输入前真后假,无返回,页面没被执行] ###a与b比较,表明存在SQL注

(转)SQL盲注攻击的简单介绍

转:http://hi.baidu.com/duwang1104/item/65a6603056aee780c3cf2968 1 简介     1.1 普通SQL注入技术概述     目前没有对SQL注入技术的标准定义,微软中国技术中心从2个方面进行了描述[1]:     (1) 脚本注入式的攻击     (2) 恶意用户输入用来影响被执行的SQL脚本     根据Chris Anley的定义[2], 当一个攻击者通过在查询语句中插入一系列的SQL语句来将数据写入到应用程序中,这种方法就可以定义

SQL盲注攻击的简单介绍

1 简介     1.1 普通SQL注入技术概述     目前没有对SQL注入技术的标准定义,微软中国技术中心从2个方面进行了描述[1]:     (1) 脚本注入式的攻击     (2) 恶意用户输入用来影响被执行的SQL脚本 根据Chris Anley的定义[2], 当一个攻击者通过在查询语句中插入一系列的SQL语句来将数据写入到应用程序中,这种方法就可以定义成SQL注入.Stephen Kost[3]给出了这种攻击形式的另一个特征,“从一个数据库获得未经授权的访问和直接检索”,SQL注入攻

SQL盲注工具BBQSQL

SQL注入是将SQL命令插入到表单.域名或者页面请求的内容中.在进行注入的时候,渗透测试人员可以根据网站反馈的信息,判断注入操作的结果,以决定后续操作.如果网站不反馈具体的错误信息,只给出的一个模糊的反馈,如输入数据有误或者空白页面.这种情况下的注入就被称为SQL盲注. 在SQL盲注中,渗透人员需要反复进行大量注入操作,每次都需要重复设置配置项,构建新的SQL语句等.这些操作极其消耗时间.为了避免这些重复操作,Kali Linux提供了一个SQL盲注工具BBQSQL.在这个工具中,用户可以将各项

【安全牛学习笔记】​手动漏洞挖掘-SQL盲注

手动漏洞挖掘-----SQL盲注 不显示数据库内建的报错信息 内建的报错信息帮助开发人员发现和修复问题 报错信息提供关于系统的大量有用信息 当程序员隐藏了数据库内建报错信息,替换为通用的错误提示,sql注入将 无法依据报错信息判断注入语句的执行结果,即 盲 思路:既然无法基于报错信息判断结果,基于逻辑真假的不同结果来判断 1'and 1=1--+ 1'and 1=2--+ select * from table_name where id='1' orderby 2--'; 课时91 手动漏洞挖

sql注入攻击与防御第二版读书笔记二——SQL盲注利用

寻找并确认SQL盲注 强制产生通用错误 注入带副作用的查询 如 mssql waitfor delay '0:0:5' mysql sleep() 拆分与平衡 5 -> 7-2 常见SQL盲注场景 提交一个错误查询时会返回一个通用错误页面,而提交正确的查询会返回一个内容可被适度控制的页面 提交一个错误查询时会返回一个通用错误页面,而提交正确的查询会返回一个内容不可被控制的页面 提交一个错误查询时不会影响,但是可能基于时间或者其他副作用 SQL盲注技术 推断攻击技术 len() 判断长度 subs

解决SQL盲注和跨站脚本攻击

今天测试用IBM的AppScan,对系统进行测试,发现了系统的安全漏洞,分别是SQL盲注和跨站脚本攻击,这两种安全隐患都是利用参数传递的漏洞趁机对系统进行攻击.截图如下: 解决方案(参考网上的例子):自己写一个 Filter,使用 Filter 来过滤浏览器发出的请求.对每个 post 请求的参数过滤一些关键字,替换成安全的,例如:< > ' " \ / # & .方法是实现一个自定义的 HttpServletRequestWrapper,然后在 Filter 里面调用它,替

Web系统常见安全漏洞及解决方案-SQL盲注

关于web安全测试,目前主要有以下几种攻击方法: 1.XSS 2.SQL注入 3.跨目录访问 4.缓冲区溢出 5.cookies修改 6.Htth方法篡改(包括隐藏字段修改和参数修改) 7.CSRF 8.CRLF 9.命令行注入 今天主要讲下SQL盲注. 一.SQL 盲注.发现数据库错误模式.跨站点脚本编制 严重性: 高 类型: 应用程序级别测试 WASC威胁分类: 命令执行类型:SQL 注入 CVE 引用: 不适用 安全风险: 1.      可能会查看.修改或删除数据库条目和表   ---S

【笔记】网易微专业-Web安全工程师-04.WEB安全实战-8.SQL盲注

上一节我们在实战中介绍了SQL注入的原理和危害,这一节我们要实战SQL盲注,与普通的SQL注入相比,数据库返回的结果不会显示在页面上,只会返回成功/失败或者真/假,这无形中加大了我们注入的难度. SQL盲注的一种思路:采用where语句"真and真=真","真and假=假",把我们需要确定的条件放在and之后,当我们的猜测为真那么返回为真,猜测错误则返回为假.具体怎么应用呢?我们在实战中学习. DVWA实战: 1. 打开phpStudy或xampp,运行Apach和