Web安全攻防 渗透之Sqlmap工具(仅供交流学习使用,请勿用于非法用途)

Web安全攻防 渗透之Sqlmap工具

1. SQLmap介绍

1-1. SQLmap介绍

SQLmap介绍:
Sqlmap是一个开源的渗透工具,它可以自动化检测和利用SQL注入缺陷以及接管数据库服务器的过程。他有一个强大的检测引擎,许多适合于终极渗透测试的小众特性和广泛的开关,从数据库指纹、从数据库获取数据到访问底层 文件系统和通过带外连接在操作系统上执行命令

官方网址: http://sqlmap.org/

1-2. SQLmap的特点

  • 完全支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、HSQLDB和Informix等多种数据库管理系统。
  • 完全支持布尔型盲注、时间型盲注、基于错误信息的注入、联合查询注入和堆查询注入。
  • 在数据库证书、IP地址、端口和数据库名等条件允许的情况下支持不通过SQL注入点而直接连接数据库。
  • 支持枚举用户、密码、哈希、权限、角色、数据库、数据表和列。
  • 支持自动识别密码哈希格式并通过字典破解密码哈希。
  • 支持完全地下载某个数据库中的某个表,也可以只下载某个表中的某几列,甚至只下载某一列中的部分数据,这完全取决于用户的选择。
  • 支持在数据库管理系统中搜索指定的数据库名、表名或列名

1-3. SQLmap的下载

官网下载地址: http://sqlmap.org/

1-4. SQLmap注入介绍

所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串, 最终达到欺骗服务 器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将SQL命令注入 到后台数据库引擎执行的能力,它可以 通过在web表单中输入SQL语句得到一个存在安全漏洞 的网站上的数据库,而不是按照设计者意图去执行SQL语句

2. SQLmap注入 常用的一些参数

2-1. sqlmap输出级别 -v

参数: -v

解释: Sqlmap的输出信息按从简到繁共分为7个级别依次为0、1、2、3、4、5和6。使用参数-v 来指定某个等级,如使用参数-v 6来指定输出级别为6。默认输出级别为1。

作用:

  • 0:只显示Python的tracebacks信息、错误信息[ERROR]和关键信息[CRITICAL]
  • 1:同时显示普通信息[INFO]和警告信息[WARNING]
  • 2:同时显示调试信息[DEBUG]
  • 3:同时显示注入使用的攻击荷载
  • 4:同时显示HTTP请求头
  • 5:同时显示HTTP响应头
  • 6:同时显示HTTP响应体

2-2. sqlmap获取目标

2-2-1. 直连数据库

支持连接的数据库:

  • 服务型数据库-MySQL,Oracle
  • 文件型数据库-SQLite
    连接示例:
python sqlmap.py -d "mysql://用户名:密码@地址:端口/数据库名字" f --banner --dbs --users

2-2-2. sqlmap指定目标URL [-u 或者 -url]

参数: -u 或者 --url

** 解释:** sqlmap直接对单一URL探测

URL格式:http(s)://targetur\[:port\]/
# 示例:
python sqlmap.py -u "http(s)://targetur\[:port\]/" --banner

2-2-3. sqlmap 读取不同文件类型进行注入SQL [-x、-m、 -r、 -c]

参数 作用
-x 为便于搜索引擎收录,许多网站专门为搜索引擎生成了xml格式的站点地图
-m 从多行文本格式文件读取多个目标,对多个目标进行探测
-r 可以将一个HTTP请求保存在文件中
-c 从配置文件sqlmap.conf中读取目标探测

2-3. sqlmap 设置请求参数

2-3-1. 介绍:

介绍:
HTTP请求有很多种方法(method),可以在不同位置(GET、POST、cookie和User-Agent等)携带不同参数。往往只有在特定位置携带了特定参数以特定方法发起的请求才是合法有效的请求。Sqlmap运行时除了需要指定目标,有时还需要指定HTTP请求的一些细节。

一般来说,Sqlmap能自动判断出是使用GET方法还是POST方法,但在某些情况下需要的可能是PUT等很少见的方法,此时就需要用参数–method来指定方法。

2-2-2. 设置post提交参数 [–data=" "]

参数: --data=" "

作用: 默认情况下,用于执行HTTP请求的HTTP方法是GET,但是可以通过提供在POST请求中发送的数据隐式的将其改为 POST。这些数据作为参数,被用于SQL注入检测

用法示例:

python sqlmap.py -u "url地址" --datta="data数据" --banner

2-2-3. 设置cookie参数

参数 作用
--cookie 设置cookie值
--cookie-del 删除cookie值
--load-cookies 从文件中加载
--drop-set-cookie http响应(Set-Cookie)

使用场景: web应用程序具有基于cookie验证的过程,要测试的页面只有在登录状态下才能访问,登录状态用 cookie识别想利用cookie值上的SQL注入漏洞,想要检测是否存在cookie注入

用法示例:

python sqlmap.py -u "url地址" --cookie "cookies值"  --level2 --banner 

tips:

  • --level 2 : 可提高访问等级(最高)

2-2-4. 使用cookie过程

  1. 登录或浏览页面
  2. 找到cookie
  3. 在sqlmap中使用–cookie cookie值

2-2-5. 设置user-agent [--user-agent=‘指定的user-agent’]

1.默认的user-agent:

sqlmap/1.0-dev-xxxx(http://sqlmap.org)

2.指定user-agent:

使用参数 --user-agent = '指定的user-agent'

3.随机选择user-agent:

使用参数 --random-agent

2-2-6. 设置代理 [–proxy]

设置sqlmap参数: --proxy

设置HTTP代理服务器位置 格式: --proxy http(s): //ip[端口]

用法示例:

python sqlmap.py -u "URL地址" --proxy "代理ip" --banner

2-2-7. 设置延迟 [--delay 0.5]

参数: --delay 0.5

作用: sqlmap探测过程中会发送大量探测Payload到目标,如果默认情况过快的发包速度会导致目标预警。为了避免这样的情况发生,可以在探测设置sqlmap发包延迟。默认情况下,不设置延迟

2-2-8. 设置超时 [--timeout 10.5]

参数: --timeout 10.5

作用: 在考虑超时HTTP请求之前,可以指定等待的秒数。有效值是一个浮点数,比如10.5秒。默认是30秒

2-2-9. 设置超时重试次数 [--retries count]

参数: --retries count

作用: 设置对应充实次数,默认情况下重试3次

2-2-10. 这是随机参数 [--randomize 参数名称]

参数: --randomize 参数名称

作用: sqlmap可以指定要在每次请求期间随机更改其值得参数名称。长度和类型根据提供的原始值保持一致

用法参考:

pyhon sqlmap.py -u "url地址" --randomize id --banner

2-2-11. 设置忽略401 [–ignore-401]

参数: --ignore-401

作用: 如果测试偶尔返回HTTP错误401的站点,而你想忽略它并在不提供适当凭证的情况下继续测试,可以使用–ignore- 401

2-2-12. 设置避免请求过都而屏蔽

介绍: 有时服务器检测到某个客户端错误请求过多会对其进行屏蔽,而Sqlmap的测试往往会产生大量错 误请求,为避免被屏蔽,可以时不时的产生几个正常请求以迷惑服务器。

参数 作用
--safe-url 隔一会就访问一下的安全URL
--safe-post 访问安全URL时携带的POST数据
--safe-req 从文件中载入安全HTTP请求
--safe-freq 每次测试请求之后都会访问一下的安全URL

未完待续

发布了27 篇原创文章 · 获赞 11 · 访问量 1475

猜你喜欢

转载自blog.csdn.net/weixin_45550881/article/details/104250579