SQLmap 从入门到实战:新手友好的 WAF 绕过全指南
一、基础认知铺垫(新手必看)
1.1 什么是 SQLmap?
SQLmap 是开源自动化 SQL 注入工具,基于 Python 开发(跨平台支持),能自动检测并利用 SQL 注入漏洞,支持 40 + 数据库类型(MySQL/Oracle/PostgreSQL 等),核心覆盖 5 类注入模式:
| 注入模式 |
核心原理 |
适用场景 |
| 布尔盲注 |
依据页面返回真假判断条件成立与否 |
无显错、无回显但页面有状态变化 |
| 时间盲注 |
通过延迟响应判断 Payload 是否执行 |
页面无任何状态变化的极端场景 |
| 报错注入 |
利用数据库报错信息获取数据 |
页面会返回 SQL 错误详情 |
| 联合查询注入 |
借助 UNION 语句合并结果集 |
注入点支持多语句执行且有回显 |
| 堆叠查询注入 |
分号分隔执行多条 SQL 语句 |
数据库允许批量执行命令 |
核心价值:无需手动构造 Payload,新手也能快速完成漏洞验证与数据提取。
1.2 跨平台环境准备(3 系统适配)
Linux 系统(Ubuntu/Debian)
# 安装Python3
sudo apt install python3 python3-pip
# 下载SQLmap
git clone https://github.com/sqlmapproject/sqlmap.git
# 进入目录并测试启动
cd sqlmap && python3 sqlmap.py -h
Windows 系统
- 下载 Python3:https://www.python.org/downloads/,完成安装
- 下载 SQLmap 压缩包:https://github.com/sqlmapproject/sqlmap/archive/refs/heads/master.zip
- 解压后打开 CMD,进入解压目录,执行:python sqlmap.py -h(验证启动)
Kali/PentestBox 系统
自带 SQLmap,直接在终端执行:sqlmap -h(无需额外安装)
小贴士:执行python sqlmap.py --update可一键更新至最新版本,获取新增功能与漏洞规则。
二、常用 Tamper 脚本详解(新手友好版)
| 脚本名称 |
核心功能 |
实操效果示例 |
适用场景 |
新手推荐度 |
| space2comment |
空格替换为/**/ |
SELECT*FROM users→SELECT/**/FROM/**/users |
绕过空格过滤规则 |
★★★★★ |
| charencode |
URL 编码字符 |
'or 1=1→%27%6F%72%20%31%3D%31 |
简单关键词拦截(如 "or") |
★★★★☆ |
| charunicodeencode |
Unicode 编码 |
admin→\u0061\u0064\u006D\u0069\u006E |
Unicode 感知 WAF |
★★★☆☆ |
| randomcase |
随机大小写变换 |
UNION SELECT→uNiOn SeLeCt |
大小写敏感过滤 |
★★★★☆ |
| apostrophemask |
单引号替换为全角单引号(‘) |
'123→‘123 |
单引号直接拦截场景 |
★★★☆☆ |
| between |
>替换为NOT BETWEEN 0 AND # |
id>1→id NOT BETWEEN 0 AND 1 |
比较运算符过滤 |
★★☆☆☆ |
三、核心命令实战指南(附执行说明)
3.1 Tamper 脚本基础用法
单个脚本:绕过空格过滤
sqlmap -u "http://target.com/?id=1" --tamper=space2comment
执行说明:自动将 Payload 中的空格替换为/**/,适合基础 WAF 环境。
组合脚本:高强度混淆(新手推荐)
sqlmap -u "http://target.com/?id=1" --tamper=space2comment,charencode,randomcase
执行说明:同时实现空格替换 + URL 编码 + 大小写变换,绕过多数云 WAF。
3.2 多场景注入实战(新手必备流程)
场景 1:GET 参数 |