SQL报错注入和盲注的区别 前言报错注入和盲注核心区别在于数据库错误信息是否被返回给客户端。报错注入在返回报错的时候可以看到具体的数据库报错可以利用报错函数如 updatexml()、extractvalue() 等将查询结果带到回显的页面中从而直接获取数据库敏感内容。盲注页面不返回具体错误信息可能返回的是空页面这种就只能通过间接特征来判断 SQL 执行的真假。报错注入也可以用盲注的方法来获取数据库信息比如当报错函数被禁用时但效率比较低一般作为备用方案。示例以sqli-labs靶场的第五关和第八关为例第五关报错注入?id1 and 11和?id1 and 12页面的回显一样证明是字符型注入输入?id1回显出了数据库的报错多了一个单引号没有闭合可以看出来是单引号闭合那么接下来添加一个注释注释掉后面多余的一个单引号就可以正常回显了用order by查询语句的列表union select联合查询出数据库信息发现用union select没有回显因为前面得报错返回出了数据库信息所以是报错注入接下来用显错函数来回显发现成功回显出来数据库名称?id1 and updatexml(1,concat(0x7e,database(),0x7e),1) --接下来就按照sql注入的步骤用显错函数回显数据即可不多细说具体解题步骤第八关布尔盲注输入id‘发现页面返回数据为空但是id1是返回有内容存在sql注入而且是盲注因为没有回显出任何关于数据库的信息总结上面两个题很明显可以看出报错注入和盲注的区别报错注入回显出了关于数据库的报错而盲注返回的是空页面没有任何信息只能看出来sql语句的拼接有没有成功拼接成功返回了一个页面拼接失败就返回了空页面当然不是所有的盲注都返回空页面也可能是返回的和数据库无关的页面总之因题而议。