开始挑战第二十三关(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获取数据库名
还可以利用报错注入来获取
获取表名
获取字段名
获取数据