sqlmap注入总结

sqlmap注入总结
sqlmap注入总结

sqlmap注入总结

文档修订摘要

目录

sqlmap注入总结 (1)

1.1. sqlmap简介 (4)

1.1.1. Sqlmap功能 (4)

1.1.2. SQLMap命令选项 (4)

1.1.3. sqlmap支持的注入模式 (5)

1.1.4. sqlmap的特性 (5)

1.2. sqlmap的安装和升级 (5)

1.3. sqlmap请求 (6)

1.3.1. get方法 (6)

1.3.2. post方法 (6)

1.4. HTTP数据 (8)

1.5. 身份验证 (12)

1.6. sqlmap使用技巧 (13)

1.7. OPTIMIZATION优化性能 (15)

1.8. 注入 (18)

1.9. 注入技术 (24)

1.10. 常规参数 (32)

1.11. 杂项 (35)

1.12. Meterpreter配合使用 (38)

1.13. 如何用sqlmap绕过防火墙 (38)

1.1.sqlmap简介

SQLMap是一个开放源码的***测试工具,它可以自动探测和利用SQL注入漏洞来接管数据库服务器。它配备了一个强大的探测引擎,为最终***测试人员提供很多猥琐的功能,可以***,可以访问底层的文件系统,还可以通过带外连接执行操作系统上的命令。

1.1.1.Sqlmap功能

sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL 注入漏洞。sqlmap的功能强大到让你惊叹,常规注入工具不能绕过的话,终极使用sqlmap 会有意想不到的效果。

1、判断可注入的参数

2、判断可以用那种SQL注入技术来注入

3、识别出哪种数据库

4、根据用户选择,读取哪些数据

5、可执行情况

6、当前数据库用户名称和拥有的权限

7、发现WEB虚拟目录

8、上传***getshell

9、绕过防火墙

1.1.

2.SQLMap命令选项

归类为目标(Target)选项、请求(Request)选项、优化、注入、检测、技巧(Techniques)、指纹、枚举等。

如果你想观察sqlmap对一个点是进行了怎样的尝试判断以及读取数据的,可以使用-v 参数。

共有七个等级,默认为1:

0、只显示python错误以及严重的信息。

1、同时显示基本信息和警告信息。(默认)

2、同时显示debug信息。

3、同时显示注入的payload。

4、同时显示HTTP请求。

5、同时显示HTTP响应头。

6、同时显示HTTP响应页面。

如果你想看到sqlmap发送的测试payload最好的等级就是3。

1.1.3.sqlmap支持的注入模式

1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。

2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。

3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。

4、联合查询注入,可以使用union的情况下的注入。(适合用于通过循环直接输出联合查询结果,否则只会显示第一项结果)

5、堆查询注入,可以同时执行多条语句的执行时的注入。

1.1.4.sqlmap的特性

(1.)sqlmap支持的数据库有:

MySQL,Oracle,PostgreSQL,Microsoft SQL Server,MicrosoftAccess, IBM DB2,SQLite,Firebird,Sybase和SAP MaxDB

(2.)可以提供一个简单的URL,Burp或WebScarab请求日志文件,文本文档中的完整http 请求或者Google的搜索,匹配出结果页面,也可以自己定义一个正则来判断那个地址去测试。

(3.)测试GET参数,POST参数,HTTP Cookie参数,HTTP User-Agent头和HTTP Referer 头来确认是否有SQL注入,它也可以指定用逗号分隔的列表的具体参数来测试。

(4.)可以设定HTTP(S)请求的并发数,来提高盲注时的效率。

(5.)支持Basic,digest,NTLM ,CA身份验证

(6.)限速:最大并发、延迟发送

(7.)数据库版本、用户、权限、hash枚举和字典破解、暴力破解表列名称

(8.)文件上传下载、UDF、启动并执行存储过程、操作系统命令执行、访问windows注册表(9.)与w3af、metasploit集成结合使用,基于数据库服务进程提权和上传执行后门。

1.2.sqlmap的安装和升级

直接在https://https://www.360docs.net/doc/692884797.html,/sqlmapproject/sqlmap下载

apt-get instal git

git clone https://https://www.360docs.net/doc/692884797.html,/sqlmapproject/sqlmap.git sqlmap-dev

升级

sqlmap --update 在线

git pull 离线

1.3.sqlmap请求

1.3.1.get方法

对于get的请求,比较简单,直接指定目标

-d:直接连接数据库(-d "mysql://user:passward@地址:端口/数据库名称")

-u:指定url (?id=1)

-m:将多个url保存成文件,传给sqlmap (sqlmap -m list.txt)

-r:将http头信息保存到文件,交给sqlmap

-g:google搜索出来的结果(-g "inurl:\".php?id=1\"")\"只是将双引号内的"特殊字符进行转义

-p :只想检查的变量

-f :指纹

--users:数据库帐号

--banner:数据库信息

--dbs:有哪些数据库

-a:all

get请求应该是大家所熟悉的,sqlmap - u直接加URL,参数就可以了。

1.3.

2.post方法

3.HTTPS

sqlmap同时也支持https的sql注入,只需加入参数-force-ssl告诉sqlmap这是https服务即可。如

sqlmap -u https://192.168.1.1/a.php?id=1" -force-ssl (默认不是443,在后加其端口) 1.4.HTTP数据

1、数据段: -data

get/post都适用

对于post还可以使用链接并将post抓取的源代码用--data,并输入抓取的源代码

sqlmap -u http://"链接" --data="post请求抓取的源代码" --dbs,常用于post请求。

这里用于抓取源代码的工具是火狐的插件,firebug。这个插件的功能非常强大。

2、cookie头

--cookie

web应用基于cookie的身份验证,对于post请求,可以指定cookie

sqlmap -u "url" --cookie="..." --level 2 --dbs

需要注意的是,当level默认为1的时候,默认不扫cookie的内容,必须是level大于等于2才能

扫cookie里的内容

sqlmap -u "https://www.360docs.net/doc/692884797.html," --cookie="CNZZDATA3568186=cnzz_eid%3D1227930120-1395711655-%26ntime%3D1395799625%26cnzz_a%3D1%26sin%3Dnone%26ltime%3D1395799604656%26rt ime%3D1; CNZZDATA3834609=cnzz_eid%3D144071239-

1395711655-%26ntime%3D1395799624%26cnzz_a" -p ”CNZZDATA3834609“ --data "" --level 2

当需要对cookie注入的时候,必须使用--cookie选项,--data "" 因为post的数据长度为0,但是又想使用post方法进行注入,则使用--data "",使用--data选项后,sqlmap自动使用post方法,sqlmap不支持使用--method指定http请求方法

获取cookie同样可以使用firebug插件。

--host="aaaaaa",每次HOST请求时都会变成一串a

5、referer头

原来所处的页面的url,可通过--referer来指定

--referer level>=3,才会对referer头进行检测

如:--referer=“aaaa”

6、额外的自定义的header

--headers

每个头单独一行,可以使用\n来换行(名称区分大小写)

1.5.身份验证

1、基于HTTP协议的身份验证

Basic 基本身份验证

Digest 摘要式身份认证

NTLM NTLM身份验证(windows)

sqlmap -u "..." --auth-type Basic --auth-cred "user:pass" ,指明验证类型为Basic,并说明用户名和密码

2、基于客户端证书(比较少见,在以前的网银中比较常见)

当Web服务器需要客户端证书进行身份验证时,需要提供两个文件:key_file,cert_file。key_file是格式为PEM文件,包含着你的私钥,cert_file是格式为PEM的连接文件。

--auth-cert(官方文档)/auth-file(sqlmap中-hh所显示的参数)

如:--auth-file="ca.PEM",含有私钥的PEM格式证书文件或PEM格式的证书链文件

3、http(s)代理

主动请求时会被记录,被发现屏蔽,这时我们需要个代理,就用到了--proxy参数了。

--proxy="http://127.0.0.1:8087"

--proxy-cred="name:pass" 需做身份验证时

--ignore-proxy 忽略系统级代理,通常用于扫描本地网络目标(若在操作系统设置了代理,后续的一切工作都经过代理)

1.6.sqlmap使用技巧

发现每个请求都会延迟3秒,当然数据库还是可以爆出来的。

--timeout 请求超时时间,浮点数,默认30秒

--retries http(s)连接超时重传次数,默认3次

sqlmap -u http://1.1.1.1/a.php?id=1--randomize="id"

有的web应用程序会在你多次访问错误的请求时屏蔽掉你以后的所有请求,这样在sqlmap进行探测或者注入的时候可能造成错误请求而触发这个策略,导致以后无法进行。常见情况是在检测盲注阶段会产生大量失败请求,当产生大量错误请求后,服务器端可能因此销毁session

绕过这个策略有两种方式:

1、--safe-url:提供一个安全不错误的连接,每隔一段时间都会去访问一下。

2、--safe-freq:提供一个安全不错误的连接,每次测试请求之后都会再访问一边安全连接。

7、关掉URL参数值编码

--skip-urlencode 默认get方法会对传输内容进行编码,某些web服务器不遵循RFC标准编码,使用原始字符提交数据

8、每次请求时候执行自定义的python代码

--eval每次请求前执行指定的python代码

在有些时候,需要根据某个参数的变化,而修改另个一参数,才能形成正常的请求,这时可以用–

eval参数在每次请求时根据所写python代码做完修改后请求。

每次请求更改或增加新的参数值(时间依赖,其他参数值依赖)

sqlmap -u http://1.1.1.1/a.php?id=1&hash=..."--eval="

python sqlmap.py -u "https://www.360docs.net/doc/692884797.html,/vuln.php?id=1&hash=c4ca4238a0b923820dcc509a6f

1.7.OPTIMIZATION优化性能

-o 开启三个性能参数(除--threads)

--predict-output

根据检测方法,比对返回值和统计表内容,不断缩小检测范围,提高检测效率版本名、用户名、密码、Prervileges、role、数据库名称、表名、列名

与--threads参数不兼容

统计表路径:/usr/share/sqlmap/txt/common-outputs.txt

--keep-alive 使用http(s)长连接,性能好,与--proxy参数不兼容

--null-conection

只获取响应页面的大小值,而非页面具体内容能够

通常用于盲注判断真/假,降低网络带宽消耗

与--text-only参数不兼容(基于页面内容的比较判断真/假)

--threads=THREADS

最大并发线程

盲注时每个线程获取一个字符(7此请求),获取完成后线程结束

默认为1,建议不要超过10,否则可能影响站点可用性

与--predict-output参数不兼容

1.8.注入

1、指定测试的参数

-P

sqlmap默认测试所有的GET和POST参数,当–level的值大于等于2的时候也会测试HTTP Cookie 头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。但是你可以手动用-p 参数设置想要测试的参数。例如: -p “id,user-anget”

指定扫描的参数,也可指定变量名称,使--level失效

2、

排除测试的参数

--skip

当你使用–level的值很大但是有个别参数不想测试的时候可以使用–skip参数。排错指定的扫描

参数,不指定的默认会对全部扫描,然后根据level级别对http头扫描

如:--level=5 --skip="id,uesr-agent"

3、指定数据库

默认情况系sqlmap会自动的探测web应用后端的数据库是什么,但是你如果已经知道的目标是什么数据库了,可以使用--dbms指定数据库节省时间了,提高工作效率了

--dbms 不仅可以指定数据库类型,还可以指定数据库版本

--dbms="mysql"

如:Mysql<5.0>

Oracle<11i>

Microsoft SQL Server <2005>

PostgreSQL

Microsoft Access

SQLite

Firebird

Sybase

SAP MaxDB

DB2

4、指定数据库服务器系统

--os

默认情况下sqlmap会自动的探测数据库服务器系统,支持的系统有:Linux、Windows。

Linux

Windows

相关主题
相关文档
最新文档