1 盲注基本概念
如果每个应用程序都能按照我们输入的SQL 命令返回我们需要的数据, 那应用程序就无安全性可言了! 为此, 程序设计者们想到一个办法, 那就是无论输入何种命令, 只要SQL 语句导致数据库产生错误, 那么应用程序就会返回一个“ 通用的" 的页面, 或者重定向一个通用页面( 可能为网站首页) 。这时,回显方式的SQL 注入办法就无法使用了。
盲注, 即在SQL 注入过程中, SQL 语句执行选择后, 选择的数据不能回显到前端, 需要使用特殊的方法进行判断或尝试, 这个过程称为盲注。
盲注分为两类:
基于布尔型SQL 盲注:
基于布尔型SQL 盲汁即在SQL 注入过程中, 应用程序仅仅返回True( 页面) 和False( 页面) 。无法根据应用程序的返回页面得到需要的数据库信息。但是可以通过构造逻辑判断( 比较大小) 来得到需要的信息。
基于时间型SQL 盲注:
注入SQL 代码之后, 存在以下两种情况:
如果注入的SQL 代码不影响后台[ 数据库] 的正常功能执行, 那么Web 应用的页面显示正确( 原始页面) 。
如果注入的SQL 代码影响后台数据库的正常功能( 产生了SQL 注入) , 但是此时Web 应用的页面依旧显示正常( 原因是Web 应用程序采取了“ 重定向" 或“ 屏蔽" 措施)。
产生一个疑问:注入的SQL 代码到底被后台数据库执行了没有? 即Web 应用程序是否存在SQL 注入?
面对这种情况,之前讲的基于布尔的SQL 盲注就很难发挥作用了( 因为基于布尔的SQL 前提是Web 程序返回的页面存在tru