AI 助教问 AI 助教
东方瑞通 · CISP-PTE

sqlmap 自动化 SQL 注入

sqlmap 是自动化 SQL 注入检测与利用工具,可自动探测注入点、枚举数据库结构并导出数据。

考点精讲

  1. sqlmap 常用参数:-u(指定目标 URL)、--dbs(枚举数据库)、--current-db(当前数据库)、--current-user(当前用户)、--users(所有用户)、--passwords(密码)、--tables(数据表)、-D(指定库)、-T(指定表)、--columns(枚举列)、-C(指定列)、--dump(导出数据)、--post(指定 POST 参数)、-r(指定请求文件)。配合 BurpSuite 抓包可用 -r 指定请求文件进行注入。

记忆技巧

14 参数:-u、--dbs、--current-db、--current-user、--users、--passwords、--tables、-D、-T、--columns、-C、--dump、--post、-r
脱库顺序:--dbs 找库 → -D 定库 → --tables 找表 → -T 定表 → --columns 找列 → --dump 脱数据

常见误区

  • 以为 sqlmap 能注入任意站点——前提是存在注入点
  • 忽略 -r 配合抓包请求文件的使用场景
  • 以为 --dump 会破坏数据——以只读查询为主

真题思路

  • 【示例】 使用 sqlmap 时,要把某个库中指定表指定列的数据全部导出,下列参数组合最合理的是()
    --current-db --current-user -D 库名 -T 表名 -C 列名 --dump --users --passwords -r 请求文件 --tables
    答案:B
    解析:-D 指定库、-T 指定表、-C 指定列、--dump 导出数据,四者组合即「导出指定库指定表指定列的数据」,B 正确。A 查当前库/用户,C 查用户与密码,D 指定请求文件并枚举表,均非直接导出指定列数据。

常见问题

Q:--current-db 和 --current-user 分别查什么?

A:--current-db 查询当前数据库名,--current-user 查询当前数据库用户。

Q:-D、-T、-C 三个参数分别指定什么?

A:-D 指定数据库,-T 指定数据表,-C 指定列。三者配合用于缩小范围、精确定位要导出的数据。

Q:--post 和 -r 有什么区别?

A:--post 用于直接指定 POST 请求的参数;-r 用于指定一个完整的 HTTP 请求文件(如 BurpSuite 抓包保存的文件),sqlmap 按该请求进行注入。

Q:sqlmap 脱库的完整流程是什么?

A:先用 -u 指定目标 URL 并探测注入点;再用 --dbs 枚举数据库 → -D 指定库 → --tables 枚举表 → -T 指定表 → --columns 枚举列 → -C 指定列 → --dump 导出数据。

相关知识

教材出处:第4章 Web 漏洞 sqlmap 自动化 SQL 注入

AI 助教

让 AI 助教带你深入学习,把你卡住的地方直接问它

随时为您答疑解惑

开始答疑