自动化注入工具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关键字

posted on 2023-06-17 11:29  zyl0106  阅读(380)  评论(0)    收藏  举报