靶机、软件搭建:04---SQLMap工具的使用

一、SQLMap简介

  • SQLMap是一个自动化的SQL注入工具,其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件
  • 支持的数据库是MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAPMaxDB
  • SQLMap的强大的功能包括:数据库指纹识别、数据库枚举、数据提取、访问目标 文件系统,并在获取完全的操作权限时实行任意命令。SQLMap的功能强大到让人惊叹,当常规的注入工具不能利用SQL注入漏洞进行注入时,使用SQLMap会有意想不到的效果

SQLMap采用了以下 种独特的SQL注入技术:

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

二、SQLMap下载与安装

  • SQLMap 的安装需要Python环境(不支持Python 3),因此需要提前准备安装Python,并为Python配置环境变量

下载

  • 下载网址:http://sqlmap.org/

  • 下载完成之后是一个压缩包

安装

  • 下载完成之后,解压到Python的安装目录下,并把SQLMap的目录命名为SQLMap(随意命名)

靶机、软件搭建:04---SQLMap工具的使用_第1张图片

  • 然后把SQLMap的目录加到环境变量中

靶机、软件搭建:04---SQLMap工具的使用_第2张图片

  • 在命令行直接输入sqlmap.py就可以使用SQLMap了

靶机、软件搭建:04---SQLMap工具的使用_第3张图片

三、SQLMap的基本使用

①判断是否存在注入

  • 目标注入点是http://192.168.1.104/sql1/Less-1/?id=1,判断其是否存在注入的命令如下

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

代码执行之后,有三处需要选择的地方:

  • 第一处的意思为检测到数据库可能是MySQL,是否需要跳过检测其他数据库
  • 第二处的意思是在“ level1、riskl 的情况下,是否使用MySQL对应的所有Payload进行检测
  • 第三处的意思是参数ID存在漏洞,是否要继续检测其他参数, 一般默认按回车键即可

靶机、软件搭建:04---SQLMap工具的使用_第4张图片

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

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

靶机、软件搭建:04---SQLMap工具的使用_第5张图片

  • 判断是否存在注入的命令如下所示,-r一般在存在cookie注入时使用

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

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

  • 从下图可以看到, 查询出了17个数据库及所有数据库的库名。当继续注入时,--dbs缩写成-D xxx ,其意思是在xx数据库中继续查询其他数据

靶机、软件搭建:04---SQLMap工具的使用_第6张图片

④获取数据库中的表名

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

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

靶机、软件搭建:04---SQLMap工具的使用_第7张图片

  • 从上图可以看到dkeye数据库中拥有的3个表名。当继续注入时, --tables缩写成-T意思是在某表中继续查询

⑤获取表中的字段名

  • 该命令的作用是查询完表名后,查询该表中所有的字段名,如下所示

靶机、软件搭建:04---SQLMap工具的使用_第8张图片

  • 从上图可以看到在dkeye数据库中的user_info表中一共4个字段。在后续的注入中,--columns缩写成-C

⑥获取字段内容

  • 该命令是查询完宇段名之后,获取该字段中具体的数据信息, 如下所示

  • 上面命令需要下载的数据是dkeye数据库里user_info表中usemame和password 的值,结果如下所示

靶机、软件搭建:04---SQLMap工具的使用_第9张图片

⑦获取数据库的所有用户

  • 该命令的作用是列出数据 的所有用户,如下所示。在当前用户有权限读取包含所有用户的表的权限时号,使用该命令就可以列出所有管理用户

可以看到,当前用户账号时root,结果下图所示

靶机、软件搭建:04---SQLMap工具的使用_第10张图片

⑧获取数据库用户的密码

  • 该命令的作用是列出数据库用户的密码,如下所示。如果当前用户有读取包含 用户密码的权限,SQLMap会先列举出用户,然后列出Hash ,并尝试破解

  • 在下图中可以看到,密码使用MySQL5加密,可以在www.cmd5.com中自行解密

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

  • 使用该命令可以列出当前网站使用的数据库,如下所示

从下图中可以看到数据库是sql

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

  • 使用该命令可以列出当前网站使用的数据库用户,如下所示

  • 结果如下所示,用户时root

你可能感兴趣的:(靶机,软件搭建)