简学SQL注入
0x09 SQL注入之报错注入
-
一种 SQL 注入的类型,用于 SQL 语句报错的语法,用于注入无回显,但会提示报错信息的情况。返回的错误信息,即攻击者需要的信息。
0x09.1 报错注入的原理
- MySQL 报错注入主要利用了 MySQL 的一些逻辑漏洞,如 BigInt 大整型数溢出、不同函数调用漏洞等,因此根据逻辑特点,可以将报错注入分为以下几点:
- BigInt 等数据类型溢出;
- Xpath语法错误;
- count() + rand()*2 + group_by() 重复计数,导致临时表插入主键重复造成报错;
- 空间数据类型函数错误;
0x09.2 报错注入常见的函数
- 会导致 MySQL 报错并显示出数据函数:
rand()
函数:rand(N) 返回随机浮点数 a,范围是 0 <= a < 1.0;count()
函数:count(x) 返回 x 数据集的数量;floor()
函数:floor(x) 会返回一个不大于 x 的整数;- 由 floor() + rand() + group by 导致的主键冲突报错:
select count(*),concat((select user()),floor(rand(0)*2)) x from users group
- 由 floor() + rand() + group by 导致的主键冲突报错: