sqli-labs less23

管理员 2020-01-02 PM 161℃ 0条

1.这题是使用GET方法提交参数,直接 ?id=1' 发现报错,根据报错信息推测可以使用单引号进行闭合

2.当我跟以往一样使用 ' or 1=1# 跟 ' or 1=1--+进行测试注入的时候,却报错,我根据红框中的关键信息分析,应该是注释符被过滤了

这就造成了没办法把后面的语句给注释掉

于是我修改payload,再使用一个单引号把原来的单引号给闭合掉,那么传入mysql的语句可能就成了这样

select * from users where id='1' or 1='1' limit 0,1; 

这也就解释了为什么我们能够登录成功。

3.像这种情况,没办法用注释隔断后面的sql语句,就只能用闭合的方法了。但是这里有一点就是,实际测试中,查询的字段数,而这里又不能使用order by。 因为order by一般在sql语句的尾部,在order by后面再使用'闭合后面的单引号,sql会将order by 忽略掉。

4.那既然不知道查询的字段数肯定没法使用 union 联合注入,所以我们得测试他查询得字段数,

?id=0' union select '1
?id=0' union select 1,'2
?id=0' union select 1,2,'3

到3的时候没有报错,说明是查询了3个字段,并且2跟3的位置有回显

因为3的位置要用于跟后面闭合,所以没法在那里注入,所以在2的位置填写查询语句就好了

如果嫌步骤麻烦,记住一句,有报错的地方就能使用报错注入

标签: 注释符过滤

非特殊说明,本博所有文章均为博主原创。

上一篇 sqli-labs less24
下一篇 sqli-labs less22

评论啦~