进入靶场后,
1. 输入数字型
随便输入数字发现有回显
2. 输入字母型
但当我们随便输入字母时,则没有回显
3. 输入1’
当输入1’、1’'时,也没有回显,题目已经说明了这题是SQL注入,所以猜测可能是关闭了错误回显,此时的报错注入行不通
4. 输入order by
1 order by 2#
当使用order by去试探有多少个字段时,返回的是nonono,所以猜测order by参数被过滤了(即联合查询注入行不通)
5. 布尔盲注
既然报错注入和联合查询注入行不通,就试下盲注(布尔盲注)
1' and length(database())>=1#
发现布尔盲注也行不通,那只能试试其它的方法
6. 时间盲注
1 and if(length(database()))>=1,1,sleep(5)#
发现时间盲注也行不通,说明这题过滤了很多关键字。
7. 堆叠注入
7.1.show databases
试试使用show databases查看那些数据库,发现爆出了数据库
1;show databases#
7.2.show tables
然后使用show tables爆出表
1;show tables#
发现有flag表,我们要找的flag就在里面。但是如何爆出表里面的内容这又是一个问题,因为过滤了很多关键字
最后在网上看大佬的解析后发现后台的语法可能是
select.POST['参数']||flag from Flag
因此可以输入*,1来显示全部内容,最后得到flag