报错注入,语句其实很简单,带入报错公式一套就出来,但是我觉得明白其中的原理才是做这个题的关键,昨晚半夜倒腾出来了(传送门),这里我就放一下语句,和做题过程。
1、报错注入语句
1 Union select count(*),concat((查询语句),“||”,floor(rand(0)*2))x from information_schema.columns group by x;
关于语句是怎么回事,为什么要这样写,我在原理中也写了,所以建议先看那篇文章。
2、解题
(1)、得到语句后,我们先得到数据库名,方便查表名。
(2)、得到数据库名后,即可根据库名得到表名。
值得注意的是,这里需要用到limit,如果不使用该语句,则会返回,子查询不止一个。limit用来限定返回的个数,limit [开始位置],返回个数,第一个参数表示从第几行开始算起(是从0开始的,即平时说的第一行要记为第0行,非必须差数,如不存在默认从第0行开始),第二个参数表示需要返回的个数。
(3)、根据表名,查询列名。
(4)、得到列名后,即可根据列名查询内容得到flag了