如下图,此时发现其是有’’包着的,但后面输入注释符--+或者#时并无效果。
(测试出’’包围)
(加入--+无效果)
此时可以通过or ‘1’ =’1来合并,如图:
这个时候就无法像以前那样通过写完语句直接注释掉后面来注入了,不过我们可以通过盲注来实现注入,如图:
当然如果需要使用联合查询来实现,也可以,但是最后也得有东西把最后的’给合上,例如这里输入' union select 1,(select group_concat(username) from users),'3,最后通过’3来合并后面的’,然后查询语句放在中间,如图:
不过在联合查询前之前我们往往需要得到列数,这里依旧可以使用order by 来使用,但是要稍微改进一下,如果只是加个引号包起来是不行的,如 ‘ order by ‘4,这样会发现结果还是可以正常输出的,因为order by 函数是通过后面的内容来排序的,如果直接是数字则代表是通过第几列来排序,但如果加了引号,那就相当于通过字符来排序了,那么结果一般是不会输出失误,也就无法判断有几列了,如图:
但是order by可以不止按一个参数来排列,例如如果按前三列一起来排序(但实际排序是按优先级的,除非这两个第一列一样,才会比较第二列,不然基本就是按第一列来排序)那么就可以写’ order by 1,2,3,因此我们也可以在注入的时候输入多个参数,从而发现报错,例如已知有4列,我们用’ order by 4,’4,这个时候前面的4就可以报错,后面’4只是为了后面的引号闭合,从而来得到列数,如图:
网友评论