自动化注入工具sqlmap
sqlmap 常用参数
指定目标
1.-u, --url=URL : 指定目标URL
2.-r, --data=REQUEST_FILE : 从HTTP请求文件中获取数据,通过burp抓包提取http请求,放到文件中
数据库识别
1.--dbms=DBMS : 指定数据库类型
2.--os=OS : 指定操作系统类型
3.--banner : 打印数据库Banner信息
4.--current-db : 获取当前数据库名称
5.--hostname : 获取当前数据库主机名
6.--is-dba : 判断当前用户是否是管理员
7.--users : 获取当前数据库的用户列表
8.--passwords : 获取用户密码列表
注入点检测
1.-f : 扫描SQL注入漏洞
2.-dom : 扫描DOM型SQL注入漏洞
3.-c : 列出请求中含有错误信息的注入点
4.-g : 获取用户的Google dorks查询结果
5.-s : 获取Session ID
6.-t : 设置最大HTTP请求数
7.-random-agent : 使用随机HTTP用户代理
8.-l : 记录扫描日志
数据库爆破
1.--passwords : 在默认的数据库管理用户上执行密码爆破
数据库指纹识别
1.--fingerprint : 确定目标站点的数据库类型
2.--identifiable : 获取可识别的数据库列表
数据库扫描
1.--current-user : 获取当前username
2.--password : 密码扫描
3.--privileges : 获取指定文件中的权限列表
4.--roles : 获取当前用户的角色列表
5.--tables : 获取指定数据库中的表格列表
6.--columns : 获取指定表格的列名称列表
7.--dump : 获取指定表格中的数据
8.--file-to-table : 加载数据文件到指定表格
数据存储
1.--batch : 批量执行脚本文件
2.--dump-format : 指定数据导出格式(数据格式包括:CSV,XML,SQL,HTML,TXT,JSON)
3.--dump-all : 导出所有数据到dump格式文本文件
4.--dump-file : 导出数据到指定文本文件
杂项:
1.-v : 详细输出
2.-h : 显示帮助
3.--version : 显示版本信息
4.--wizard : 启动常规访问向导
5. --skip-urlencode : 不进行URL编码
6.--skip-detection : 跳过指纹侦测
7.--threads : 指定线程数
8.--timeout : 指定超时时间
9.--proxy : 使用代理
10.--proxy-cred : 代理认证信息
11.--tor : 使用Tor代理IP
12.--crawl : 获取尽可能多的页面
13.--level : 指定目标地难度级别 (1-5)
14.--risk : 指定目标地风险级别(1-3)
15.--prefix : 指定网站前缀
16.--suffix : 指定网站后缀
17.--wordlist : 指定自定义的字典文件
sqlmap基础使用
1、判断是否存在注入
sqlmap.py -u url
(如果注入点后面的参数大于等于两个,需要加双引号)
2、判断文本中的请求是否存在注入
Sqlmap.py -r desktop/1.txt
一般在存在cookies注入的情况下使用
3、查询当前用户下的所有数据库
sqlmap.py -u url --dbs
确定网站存在注入后,用于查询当前用户下的所有数据库。如果当前用户有权限读取包含所有数据库列表信息的表,使用该命令就可以列出所有相关数据库。
4、获取数据库中的表名
sqlmap.py -u “url” -D dkeye(具体数据库) --tables
如果不加入-D来指定某一个数据库,那么会列出数据库中的所有的表。继续注入时缩写成—T,在某表中继续查询
5、获取表中的字段名
sqlmap.py -u “url” -D dkeye -T user_info(具体表名) --columns
查询完表名后,查询该表中的字段名,在后续的注入中,—columns缩写成-C
6、获取字段内容
sqlmap.py -u “url” -D dkeye -T user_info(具体表名) -C usrname password(具体字段) --dump
7、获取数据库所有用户
sqlmap.py -u url --users
如果当前用户有读取包含用户密码的权限,sqlmap会先例举出用户,然后列出hash,并尝试破解。
8、获取数据库用户的密码
sqlmap.py -u url --passwords
如果当前用户有读取包含用户密码的权限,sqlmap会先例举出用户,然后列出hash,并尝试破解。
9、获取当前网站数据库的名称
sqlmap.py -u url --curerent-db
使用该命令可以列出当前网站使用的数据库
10、获取当前网站数据库的用户名称
sqlmap.py -u url --current-user
使用该命令可以列出当前网站使用的数据库用户
SQLMap进阶:参数讲解
1、--level 5: 探测等级
参数 -- level 指需要执行的测试等级,一共有5个等级(1-5),可以不加level。默认是1。
http cookies在level为2时就会测试, user-Agent/Referer在level为3时就会测试。
2、--is-dba:当前用户是否为管理权限
sqlmap.py -u url --is-dba
如果是数据库管理员账户,会返回true
3、--roles:列出数据库管理员的角色
该命令仅适用于数据库时oracle时
4、--referer:http referer头
sqlmap可以在请求中伪造http中的referer,当--level参数设定为3或者3以上时,会尝试对referer进行注入。可以通过referer的命令来欺骗,比如--referer http://www.baidu.com
5、--sql-shell运行自定义的sql语句
sqlmap.py -u url --sql-shell
该命令被用于执行指定的sql语句,shell来指定语句
6、--os-cmd,--os-shell:运行任意操作系统的命令
7、--fire-read:从数据库服务器中读取文件
sqlmap.py -u url --file-read "c:/examplr.exe" -v 1
8、 --fire-write --file-dest:上传文件到数据库服务器中
写入本地文件到服务器中,如果使用的数据库为mysql、postgresql、microsoft sql server ,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。
SQLMap自带绕过脚本tamper
sqlmap在默认情况下除了使用CHAR()函数防止出现单引号,没有对注入的数据进行修改。我们可以通过--tamper参数对数据作修改来绕过WAF等设备
命令方式:
sqlmap.py XXXXXX --tamper “模块名”
在日常使用中我们可以用参数--identify-waf进行检测
一些常用的tamper脚本:
apostrophemask.py 过滤单引号,把单引号换为UTF-8
base64encode.py 替换为base64编码
multiplespaces.py 围绕sql关键字添加多个空格
space2plus.py 用+来替换空格
nonrecursivereplacement.py 用双重语句替代预定义的sql关键字
浙公网安备 33010602011771号