1、sqlmap注入介绍
所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串, 最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将SQL命令注入 到后台数据库引擎执行的能力,它可以通过在web表单中输入SQL语句得到一个存在安全漏洞 的网站上的数据库,而不是按照设计者意图去执行SQL语句。
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
python3 sqlmap.py -d “mysql://用户名:密码@地址:端口/数据库名字” -f --banner --dbs --users
- 文件型数据库-SQLite
2.sqlmap指定目标URL
sqlmap直接对单一URL探测,参数使用 -u 或者 --url
URL格式:http(s): //targetur[:port]/
3.sqlmap读取不同文件类型进行SQL注入
1.为便于搜索引擎收录,许多网站专门为搜索引擎生成了xml格式的站点地图 参数是 -x
2.从多行文本格式文件读取多个目标,对多个目标进行探测 参数是 -m
3.可以将一个HTTP请求保存在文件中,然后使用参数 -r
4.从配置文件sqlmap.conf中读取目标探测 参数是 -c
第2种实例如下:多行文本格式文件读取多个目标,对多个目标进行探测
第3种实例如下:HTTP请求保存在文件中,然后使用参数 -r
第4种实例如下:从配置文件sqlmap.conf中读取目标探测 参数是 -c
再执行一次目标探测,就可以了,效果如下:
2、sqlmap设置请求参数
HTTP请求有很多种方法(method),可以在不同位置(GET、POST、cookie和User-Agent等)携带 不同参数。往往只有在特定位置携带了特定参数以特定方法发起的请求才是合法有效的请求。 Sqlmap运行时除了需要指定目标,有时还需要指定HTTP请求的一些细节。
HTTP方法
一般来说,Sqlmap能自动判断出是使用GET方法还是POST方法,但在某些情况下需要的可能是PUT 等很少见的方法,此时就需要用参数–method来指定方法。
下图中的method如果没有指定,得到的会是GET方法的请求,现在网站指定为了PUT方法。
sqlmap设置post提交参数
参数 --data= ""
默认情况下,用于执行HTTP请求的HTTP方法是GET,但是可以通过提供在POST请求中发送的数据隐式 的将其改为POST。这些数据作为参数,被用于SQL注入检测。
sqlmap中用来设置cookie的参数
- –cookie
- –cookie-del
- –load-cookies
- –drop-set-cookie
使用场景
- web应用程序具有基于cookie验证的过程,要测试的页面只有在登录状态下才能访问,登录状态用 cookie识别
- 想利用cookie值上的SQL注入漏洞,想要检测是否存在cookie注入
sqlmap使用cookie过程
- 1.登录或浏览页面
- 2.找到cookie
- 3.在sqlmap中使用–cookie cookie值
后面操作修改安全性能设置为low,并提交
sqlmap中用来设置user-agent
默认情况下,sqlmap使用以下用户代理执行HTTP请求:
sqlmap/1.0-dev-xxxx(http://sqlmap.org)
查看默认的user-agent:结果格式和上面的相同,xxx代表版本信息
sqlmap指定user-agent
使用参数 --user-agent = ‘指定的user-agent’
用户随机请求头的设置,level等级最少要2级以上才会开始探测,探测信息会变多(满足需求就行,不必等级最高)
sqlmap中用来设置代理IP
sqlmap中设置代理的参数(为了防止自己的ip暴露)
-
–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