目录
报错注入
文章内容篇幅较长,请认真研读
回顾之前的文章(sql注入基础),了解到sql注入的分类有
基于正常回显
联合查询 union select
基于错误回显
floor()
extractvalue()
updatexml()
盲注
布尔型盲注
基于时间盲注sleep()
报错注入的前提
页面上没有显示位,但是需要输出SQL语句执行错误信息。比如mysql_error()
优点: 不需要显示位
缺点: 需要输出mysql_error()的报错信息
构造报错注入的步骤
1、构造目标数据查询语句
2、选择报错注入函数
3、构造报错注入语句
4、拼接报错注入语句
floor函数报错注入
利用union select 1,count(*) from information_schema.tables group by concat(0x7e,database(),0x7e,floor(rand(0)*2))导致数据库报错,通过concat函数连接注入语句与floor(rand(0)*2)函数,实现将注入结果与报错信息回显的注入方式。
rand()可以产生一个在0和1之间的随机数,直接使用rand函数每次产生的数值不一样,但当我们提供了一个固定的数字0之后,每次产生的值都是相同的。
提供数字0后
floor (rand(0)*2)函数
floor函数的作用就是返回小于等于括号内该值的最大整数即向下取整。
rand()本身是返回0~1的随机数,但在后面*2就变成了返回0~2之间的随机数。
配合上floor函数就可以产生确定的两个数,即0和1。
并且结合固定的随机数种子0,它每次产生的随机数列都是相同的值。
group by 函数,作用就是分类汇总。
count(*&#x