双查询注入

0x01 原理

双查询就是select查询中再嵌套一个select查询。
双查询注入属于报错注入。
使用group by子句结合rand()函数以及像count(*)这样的聚合函数,在SQL查询时会出现错误,这种错误是随机产生的。
参考:Mysql报错注入原理分析(count()、rand()、group by)

0x02 涉及函数

  1. Rand() //随机函数,返回0到1之间的数
  2. Floor() //取整函数,返回小于或等于输入数的整数
  3. Count() //汇总函数 COUNT(*) 函数返回在给定的选择中被选的行数。
  4. Group by clause //分组语句

0x03 例子

例如:Sqli-labs less 5

由于查询结果不回显,可以通过双查询注入获得回显。
输入:
?id=2’ union select count(),1,concat((select database()),floor(rand()2)) as a from information_schema.tables group by a;%23

获取数据库名
通过构建双查询语句最终可获取flag