布尔盲注(Boolean-Based SQL Injection)
2025-05-07
布尔盲注(Boolean-Based SQL Injection)
1. 原理
布尔盲注是一种通过构造SQL查询,根据页面返回的布尔结果(True/False)来推断数据库信息的攻击技术。当应用程序在执行SQL查询后,不直接返回错误信息或数据内容,而是根据查询结果的真假显示不同的页面状态(例如,页面返回“记录存在”或“记录存在”),攻击者可以利用这种差异来逐步提取敏感信息。
2. 攻击方式
在布尔盲注中,攻击者通过构造条件语句,观察页面的响应,以推断数据库的内容。攻击步骤如下:
构造条件语句:攻击者在输入中插入条件语句,使查询返回True或False。
观察页面响应:根据页面的不同响应(如错误消息、内容变化),判断条件是否满足。
逐步推断信息:通过不断调整条件语句,逐字符或逐位地推断出数据库中的敏感信息。
3. 示例
假设有一个登录页面,用户输入用户名和密码。后端SQL查询可能如下:
sql
SELECT * FROM users WHERE username = 'input_username' AND password = 'input_password';
攻击者可以构造以下输入进行布尔盲注:
测试用户名是否存在:
输入用户名:admin' --
构造的SQL查询:
sql
SELECT * FROM users WHERE username = 'admin' -- ' AND password