开始挑战第二十三关(Error Based- no comments)
先尝试下单引号进行报错

再来利用and来测试下,加入注释符#,编码成%23同样的报错

再来试试--+,同样的效果

同样的,先看看源代码,这里利用正则查找,对注释符等都进行了过滤

这里一来,注释符不能使用了,只能采用单引号闭合的方法来绕过了,成功

接下来构造语句来获取数据库

此处讲解几个知识点:
1.ID = -1,为什么要用-1,因为SQL语句执行了两个选择语句,第一个选择为ID的选择语句,第二个为我们构造的选择语句。只有一个数据可以输出,为了让我们自己构造的数据可以正常输出,第一个选择要没有结果,所以-1或者超过数据库所有数据都可以。
2.- 1'union select 1,2,database() or ‘1’=‘’1,or 1=1是为了闭合后面的,这样将查询内容显示在用户名处。
3.或者使用union select 1,2,dabase(),'3,第一个'(单引号)闭合-1,第二个'(单引号)闭合后面的
利用union select获取数据库名

还可以利用报错注入来获取

获取表名

获取字段名

获取数据
