题⽬猜测如下:
select $_GET[‘query’] || flag from Flag
同时题⽬还过滤了很多很多关键字,⽐如
from
之类的。尝试了很多⽅法,还是没办法,因为没有
from
我咋
注⼊?也尝试了
bool
盲注,只能爆破出表名。
值得注意的是这道题⽬是数字型注⼊,是不需要⽤
’
来闭合的。⽤了容易报错,不出显示。
这题⽬的解法有两种:
1
、使⽤直接输⼊:
*,1
从⽽构成
select *,1||flag from Flag
。直接爆出来。值得注意的是
1||flag
会变成⼀个字
段,由于
1
与任何字符串、数字进⾏
||
都会变成
1
,因此会出现⼀个字段为
1.
2
、使⽤
payload
:
1;set sql_mode=PIPES_AS_CONCAT;select 1
中间的
set
部分是设置
||
为联结,也就是
说,最后输⼊为
select 1||flag from Flag
,这个的意义是将
1
和
flag
列查询出来的字符串进⾏连接来得出结果。
最后会变成:
1flag{xxxx}
这样。
注意不能直接输⼊
*
,因为会变成
select *||flag from Flag .
这是不符合
sql
语句规则的。