开源的渗透工具—Sqlmap

Sqlmap介绍

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

Sqlmap特点

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

Sqlmap的下载

http://sqlmap.org/
在这里插入图片描述
python sqlmap.py -help 查看参数等
在这里插入图片描述

sqlmap注入介绍

所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串, 最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将SQL命令注入到后台数据库引擎执行的能力,它可以通过在web表单中输入SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。
例如
在这里插入图片描述
这里提示让你输入一个id,当在后面加上?id=1时
在这里插入图片描述
SQL注入发生未知HTTP数据包中任意位置

sqlmap输出级别

参数:-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响应体

Sqlmap获取目标

1.sqlmap直连数据库
服务型数据库-MySQL,Oracle
python sqlmap.py -d “mysql://用户名:密码@地址:端口/数据库名字” -f --banner --dbs --users
比如输入 python sqlmap.py -d “mysql://root:root@127.0.0.1:3306/mysql” --banner --users
在这里插入图片描述
这里查询出来banner,user.
文件型数据库-SQLite

2.sqlmap指定目标URL
sqlmap直接对单一URL探测,参数使用 -u 或者 --url
URL格式:http(s)😕/targetur[:port]/
例如 python sqlmap.py -u “http://127.0.0.1/sqli/Less-1/?id=1” -f --banner --dbs --users
在这里插入图片描述
注意使用使用url获取目标时至少需要两个条件:
1 存在SQL注入点(比如?id=1)
2 注入点与数据库是有交互的(就是数据库中有id=1这条数据)

3.sqlmap读取不同文件类型进行SQL注入
1.为便于搜索引擎收录,许多网站专门为搜索引擎生成了xml格式的站点地图 参数是 -x。
2.从多行文本格式文件读取多个目标,对多个目标进行探测 参数是 -m
举例:将两个url的url.txt文件中
在这里插入图片描述
这里我的url.txt文件地址为 C:\Users\url.txt
执行 python sqlmap.py -m “C:\Users\url.txt” --banner
在这里插入图片描述
这里选择Y,对第一个url地址进行检测,
3.可以将一个HTTP请求保存在文件中,然后使用参数 -r
复制Response Headers 里的view parsed,这里我将复制的内容放入view_parsed.txt文件中
在这里插入图片描述
执行 python sqlmap.py -r “C:\Users\view_parsed.txt” --dbs
在这里插入图片描述
这里查询出了数据库,而且将文件保存到了路径为C:\Users\Lenovo\AppData\Local\sqlmap\output\127.0.0.1的文件中
4.从配置文件sqlmap.conf中读取目标探测 参数是 -c
在这里插入图片描述
打开文件,将刚刚的url地址放入
在这里插入图片描述
执行python sqlmap.py -c sqlmap.conf
在这里插入图片描述
在每次探测完给出的文件地址中在这里插入图片描述

log:保存着每次的探测结果,banner,数据库等
target.txt:保存着上一次的目标地址,以及执行的语句

sqlmap设置请求参数

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

GET方法和POST方法区别
https://www.cnblogs.com/logsharing/p/8448446.html
HTTP方法
一般来说,Sqlmap能自动判断出是使用GET方法还是POST方法,但在某些情况下需要的可能是PUT 等很少见的方法,此时就需要用参数–method来指定方法。
例如 执行 python sqlmap.py -u “http://127.0.0.1/sqli/Less-1/?id=1” --banner -v 5
在这里插入图片描述
这里显示是GET请求
当设置了请求方法后为put后
执行 python sqlmap.py -u “http://127.0.0.1/sqli/Less-1/?id=1” --banner -v 5 --method==“put”
在这里插入图片描述
请求就变为了put
sqlmap设置post提交参数
参数 --data= “From Data”(这里只有提交表单后才会有)
默认情况下,用于执行HTTP请求的HTTP方法是GET,但是可以通过提供在POST请求中发送的数据隐式 的将其改为POST。这些数据作为参数,被用于SQL注入检测.
举例:下面这个网页使用的是POST请求
data=“uname=admin&passwd=admin&submit=Submit”
在这里插入图片描述
执行 python sqlmap.py -u “http://127.0.0.1/sqli/Less-11/” --data=“uname=admin&passwd=admin&submit=Submit” --banner
在这里插入图片描述
sqlmap中用来设置cookie的参数
–cookie : 设置请求中的cookie值
–cookie-del :与POST参数不同,cookie默认的分隔符为“;”,想要指定cookie中的分隔符,使用参数“–cookie-del”
–load-cookies: 该参数用于从文件中载入Netscape或wget格式的cookie。
–drop-set-cookie;若HTTP响应头中有“Set-Cookie”,Sqlmap会自动设置“Set-Cookie”设置的cookie,并对这些cookie进行检测。若不想让Sqlmap这么做,添加参数“–drop-set-cookie”即可,这样,Sqlmap会忽略“Set-Cookie”。
使用场景
1 web应用程序具有基于cookie验证的过程,要测试的页面只有在登录状态下才能访问,登录状态用 cookie识别

这里进入到DVWA
在这里插入图片描述
设置难度为Low,提交点击Submit
当执行 python sqlmap.py -u “http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --banner 没有cookie值时,就会检测不出结果在这里插入图片描述
在这里插入图片描述
当加上cookie值 security=low; PHPSESSID=9ehn6kr5dk3ifb86thf1h8cd13

执行 python sqlmap.py -u “http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#” --cookie “security=low; PHPSESSID=9ehn6kr5dk3ifb86thf1h8cd13” --banner
在这里插入图片描述
2 想利用cookie值上的SQL注入漏洞,想要检测是否存在cookie注入
sqlmap的探测共分为5(1~5)级,使用–level参数指定探测等级,不指定则默认使用等级为1的探测等级,其中5级最高,包含的payload最多,也最耗费时间,使用level 2就课完成检测是否存在cookie注入。
先进入到,在这里插入图片描述
登陆后查看Cookie, uname=admin在这里插入图片描述
执行 python sqlmap.py -u “http://127.0.0.1/sqli/Less-20/” --cookie “uname=admin” --banner --level 2
在这里插入图片描述

sqlmap使用cookie过程

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

sqlmap中用来设置user-agent

默认情况下,sqlmap使用以下用户代理执行HTTP请求:
sqlmap/1.0-dev-xxxx(http://sqlmap.org)

sqlmap指定user-agent
使用参数 --user-agent = ‘指定的user-agent’
sqlmap中用来设置代理
sqlmap中设置代理的参数

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

–proxy-cred
设置HTTP代理服务器认证信息 格式:–proxy-cred user:pwd

–proxy-file
设置多条代理在文件中

–ignore-proxy
当希望通过忽略系统范围内的HTTP(S)代理服务器设置来针对本地网络的目标部

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

sqlmap中设置超时
参数 --timeout 10.5

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

sqlmap中设置超时重试次数
参数 --retries count

设置对应重试次数,默认情况下重试3次

sqlmap中设置随机参数
参数 --randomize 参数名称

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

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

–ignore-401 参数用来忽略未验证错误

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

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

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值