详解SQL报错盲注

接下来我会详细讲解“详解SQL报错盲注”的攻略。

什么是SQL报错盲注

SQL报错盲注(Error-based Blind SQL Injection)指的是在进行SQL注入时,通过构造恶意的SQL语句触发目标网站SQL的错误提示,在错误提示中获取有关数据库的信息或功能,从而实现进行注入操作。

SQL报错盲注攻击过程

SQL报错盲注攻击过程分为以下几个步骤。

1. 确定目标网站是否存在注入漏洞

使用工具或手工方式,确定目标网站是否存在注入漏洞。一般是通过单引号、双引号等特殊字符进行注入测试,如果返回异常信息则说明存在SQL注入点。

2. 构造触发错误语句

SQL报错盲注的原理是在SQL语句中构造出现错误,从而触发错误提示信息。构造触发错误语句的方式有很多,这里只举例两种。

  • 利用SQL函数CONCAT()构造非法的SQL语句
' and (SELECT 1 FROM (SELECT CONCAT_WS(0x3a,version(),FLOOR(rand(0)*2))x FROM information_schema.tables GROUP BY x limit 1)a) '
  • 利用SQL函数CAST()构造非法的SQL语句
' and (SELECT * FROM (SELECT(SLEEP(5)))WkxD) AND 'ubpl'='ubpl 

3. 解析错误提示语句获取有用信息

触发错误语句后,服务器根据不同语法错误返回不同的错误提示信息。我们可以通过解析错误提示信息获取有用信息,如数据库类型、数据库版本等。

4. 利用获取的信息进行注入操作

根据获取的有用信息,就可以构造有效的SQL注入语句,完成需要进行的攻击行为,例如获取数据库表、字段等信息。

SQL报错盲注示例

接下来我用两个具体的SQL报错盲注攻击示例进行说明。

示例1:获取目标网站数据库类型

我们假设目标网站存在以下文件:
- index.php?id=1

此时我们可以尝试使用以下语句进行注入测试:

http://target.com/index.php?id=1'

如果返回了错误的SQL语法信息,则说明存在注入点。在检测到注入点后,我们可以使用以下语句构造非法SQL,从而触发错误提示,并获取有用信息——目标网站数据库类型:

' and (SELECT 1 FROM (SELECT CONCAT_WS(0x3a,version(),FLOOR(rand(0)*2))x FROM information_schema.tables GROUP BY x limit 1)a) '

此时如果返回以下错误提示,就可以得知目标网站使用的数据库类型了:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '5.6.44-log:1' at line 1

通过错误提示信息可以看出,目标网站使用的是MySQL数据库,并且版本为5.6.44-log。

示例2:获取目标网站管理员的密码

我们仍然假设目标网站存在以下文件:
- index.php?id=1

通过尝试手工注入或者使用工具进行测试,我们找到了SQL注入点。
接下来,我们使用以下构造非法SQL:

' and (select * from (select sleep(20)) c) ' 

如果访问该网站注入点所在的URL会停留约20秒,那么说明构造的SQL语句执行了。 通过改变sleep的时间,我们发现该网站可以做到以秒计算的时间休眠,检查网站的容错情况,可能是错误的SQL语句下整体进入或冻结。 那么可以使用以下注入语句:

' and (select * from (select "admin_password_here")a) '

由于该语句为True,所以我们无需尝试爆破密码,直接得到了目标网站的管理员密码。

总结

SQL报错盲注是SQL注入攻击中非常常见的一种方式,可以利用错误提示语句在不直接访问数据库的情况下间接获取数据库的相关信息,甚至是注入目标网站的数据。因此,网站开发者在开发网站时应该注意相关漏洞点,以免网站遭受攻击。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解SQL报错盲注 - Python技术站

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

相关文章

  • WIN10家庭版搭建FTP文件服务器详细教程

    以下是关于“WIN10家庭版搭建FTP文件服务器详细教程”的完整攻略: 简介 FTP(File Transfer Protocol)是一种用于文件传输的协议。在Windows 10家庭版中,可以使用IIS(Internet Information Services)来搭建FTP文件服务器。本文将介绍如何在Windows 10家庭版搭建FTP文件服务器。 步骤…

    http 2023年5月13日
    00
  • HTTP请求的URL中各个部分的含义是什么?

    HTTP请求的URL中各个部分的含义如下: 协议部分(Protocol):表示网页使用的协议,通常为HTTP或HTTPS,例如:http:// 或 https:// 域名部分(Domain Name):表示网页的主机名或域名,例如:www.example.com,其中www为子域名,example.com为一级域名,.com为顶级域名。 端口部分(Port …

    Http网络协议 2023年4月20日
    00
  • JavaScript 解决ajax中parsererror错误案例详解

    要解决ajax中的parsererror错误,我们需要完成以下步骤: 检查返回的数据格式 检查请求头中的Content-Type 检查服务器端代码 以下是详细的步骤说明: 步骤1:检返回的数据格式 当我们在使用ajax请求数据时,如果返回的数据格式不正确,就会导parsererror错误。因此,我们需要检查返回的数据格式是否正确。以下是两个示例说明: 示例1…

    http 2023年5月13日
    00
  • Python调用Prometheus监控数据并计算

    接下来我将为您详细讲解 “Python 调用 Prometheus 监控数据并计算” 的完整攻略。 步骤一:安装 Prometheus Python Client 想要使用 Python 调用 Prometheus 监控数据,首先需要安装Prometheus Python客户端,可通过以下代码进行安装: pip install prometheus_clie…

    http 2023年5月13日
    00
  • Springboot FeignClient调用Method has too many Body parameters解决

    针对Springboot FeignClient调用方法时出现“Method has too many Body parameters”错误的解决攻略,可以按以下步骤进行: 首先需要了解问题的根源 这个错误通常是因为在调用FeignClient接口时,传入的RequestBody中有超过一个以上的参数,而这在一些情况下可能是会造成编译器或者运行时的错误。因此…

    http 2023年5月13日
    00
  • CT有什么作用?

    CT作用详细讲解 CT是指“Computed Tomography”,即计算机断层扫描。它是一种医学影像技术,可以通过多次X线辐射扫描并计算出大量数据,然后使用计算机对这些数据进行处理,生成具有高分辨率、高精度的三维影像,以便医生对患者的疾病进行诊断和治疗。 CT技术的作用 CT技术具有以下几个方面的作用: 1. 提供详细的解剖结构信息 CT可以提供清晰、详…

    云计算 2023年4月27日
    00
  • mac 下安装php7全过程介绍

    下面是“mac下安装php7全过程介绍”的完整攻略: 1. 安装homebrew Homebrew 是 Mac OS 上的一款包管理器,使用 Homebrew 可以方便的安装 PHP 及其他开发工具。要安装 Homebrew,只需要打开终端并输入以下命令即可: /usr/bin/ruby -e "$(curl -fsSL https://raw.g…

    http 2023年5月13日
    00
  • 解决nginx“504 Gateway Time-out”错误

    以下是关于“解决nginx“504 Gateway Time-out”错误”的完整攻略: 简介 Nginx是一款流行的Web服务器,用于反向代理、负载均衡等。在使用Nginx时,时会遇到“504 Gateway Time-out”错误。本文将介绍何解决Nginx“504 Gateway Time-out”错误。 问题描述 在使用Nginx时,有时会遇到以下问…

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