记一次奇葩的sql注入联合查询黑名单绕过与布尔盲注绕过

本文记录了一次SQL注入的实战经历,从Get型注入的发现到联合查询的尝试,再到布尔盲注的运用。过程中遇到了对`union select`及空格的屏蔽,通过使用%0B作为空格替代,成功获取部分数据。然而,当尝试通过布尔盲注获取更多信息时,遭遇拦截。通过逻辑运算符||绕过拦截,最终获取了数据库版本信息。文章详细阐述了利用布尔盲注和逻辑运算符进行信息探测的方法,展示了在安全防护下进行SQL注入攻击的复杂性和挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近日为甲方爸爸挖漏洞,又是遇到奇葩SQL注入的一天。

首先,页面是这个样子滴
在这里插入图片描述
注意两个蓝色的框

一个小单引号之后,报错了,好样的,sql注入无疑了

在这里插入图片描述
由于是Get型注入,所以一开始想直接用union联合查询

  1. 使用二分法得知,字段数量是9

在这里插入图片描述
2. 使用联合查询,这里被拦住了

在这里插入图片描述
代码君已私奔到月球,这是啥玩意?

一开始以为是最常见的 union select 联合查询黑名单过滤,于是乎使用了大部分的方式都是对这两个单次进行绕过,什么大小写、双拼、编码转换,这里要说的是, /**/ 这种的也会被屏蔽

在这里插入图片描述
而后进行了一系列绕过后,发现并没有什么卵用,采坑经过就不披露了,然后偶然间发现不是屏蔽了union select
在这里插入图片描述

大师,我悟了,我明白了,这是屏蔽了union select 之后的东西,比如说空格?
竟然%20 + /**/这几种常见的空格替代符不能用,我想到了用 %0b

在这里插入图片描述'+union+select%0B1,2,3,4,5,6,7,8,9;%00 获得字段显示位置

我真是个小机灵鬼,多出来一段,而且字段2 正好对应了

获取用户名
'+union+select%0B1,user(),3,4,5,6,7,8,9;%00

在这里插入图片描述
拿到了用户名,但是又没完全拿到,通过分析,这里限制长度不能在页面上直接修改,那么还有一个简单的方式,分段拿数据

拿从第五位开始,后四位的数据
'+union+select%0B1,mid(user(),5,4),3,4,5,6,7,8,9;%00

在这里插入图片描述

依次类推,就出来了。

又又又是一次注入,这一次是纯正血统的布尔盲注
在这里插入图片描述
竟然是布尔盲注,那当然是想要用 and / or 进行爆数据

在这里插入图片描述
当我使用 and or 之后,都是403,这是被拦截了

之后我想起了上一次我遇到的宝塔面板拦截
传送门____>>>>>链接: https://blog.youkuaiyun.com/weixin_48421613/article/details/115181668.

没错,我使用逻辑运算符,这里面我使用的是 || 因为 **&&**被屏蔽了

条件为真时数据变化
key=1'+||+1='1

在这里插入图片描述

条件为假时数据变化
key=1'+||+1='2

在这里插入图片描述
通过这个特性,可以利用一哈,获取自己想要的数据

第一弹当然是想获取一下用户名长度

key=1'+||+length(user())='14

将之放入到burpsuite的intruder模块进行爆破
由于是单条数据爆破,所以使用Sniper模块
在这里插入图片描述payload 选择 number模块
在这里插入图片描述
降低线程,否则会挂掉哈

在这里插入图片描述
通过字段长度判断用户名长度

在这里插入图片描述
当我想获取用户名信息时

key=1'+||+ascii(substr(user(),1,1))='1

在这里插入图片描述
好像是被D盾拦住了

怎么办?只这一条数据并不能说明什么,那么想到了一个猥琐的玩法

key=1'+||+instr(version(),5)='1

这条语句是我更改之后的,目测也很好使,玩法就是版本5 出现在第一位

出现就是真,不出现就是假

一开始想的是

left(str,1)    从左数前一位字符
rigth(str,1)   从右数前一位字符

但是没出来啥东西,但是instr好使,这里面屏蔽了 ascii、substr、mid等等函数

在这里插入图片描述
成功获取到第一位数据库版本为5 ,也算是可以交差了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值