sqlmap工具使用


SQL-map

1. 介绍:

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

2. sqlmap获取目标

2.1 sqlmap直连数据库

sqlmap -d "mysql://root:123456@192.168.1.100:3306/test" -f --banner

2.2 sqlmap进行url探测

参数 -u 或者–url

sqlmap -u "http://192.168.1.100/sqli/less-1index.php?id=1" --banner

2.3 sqlmap文件读取目标

* sqlmap支持从不同的类型的文件中读取目标进行sql注入探测
  1. -l 从burpsuite proxy中读取HTTP请求文件

image-20210516094201258

保存文件,复制文件,将其放进sqlmap目录下

sqlmap -l 文件名路径
  1. -x 从sitemap.xml站点地图文件中读取目标探测
  2. -m 从多行文本格式文件读取多个目标,对多个目标进行探测

image-20210516095004761

  1. -r 从文本文件中读取HTTP请求作为sql注入的目标—————-检测是否具有http消息头当中的注入
  • 打开bp,拦截消息并复制
  • 将复制的信息放进sqlmap目录里的一个文本中
sqlmap -r target.txt

image-20210516095332224

  1. -c 从配置文件sqlmap.conf中读取探测目标

image-20210516100242499

sqlmap -c sqlmap.conf

image-20210516100420835

2.4 SqlmapGoogle批量扫注入

sqlmap 通过-g自动利用google获取指定的GoogleHack目标,然后利用交互向导模式进行sql注入探测

sqlmap -g "inurl:.php?id=1"

3.SQLmap设置请求参数(一)

3.1 sqlmap设置http方法


SQlmap会自动在探测过程中使用合适的HTTP请求方式但在某些具体的情况下,需要强制的使用具体的http的请求方法。例如PUT请求方法,使用--method=PUT

3.2 sqlmap设置post提交参数

默认情况下用于执行的HTTp请求的HTTp方法是get方法,但是可以通过在post请求中发送的数据隐式地将其修改为post

sqlmap -u "http://www.target.com/vuln.php" --data="id=1" -f --banner(网站的指纹信息) --dbs(获取对应的数据库) --users(获取对应的用户)

image-20210516104944386

  1. 先使用bp对页面进行抓包,之后再进行

  2. 复制表单数据,提交至data内容中

3.3 sqlmap设置参数分割符

* 在某些情况下,sqlmap需要覆盖默认参数分割符(例如& in GET和POST数据,才能正确地分割和单独处理每个参数)

image-20210516110220668

--param-del=";"      设置;为分割符

3.4 sqlmap设置cookie头

sqlmap 中设置cookie的参数:

--cookie --COOKIE-del --load-cookies --drop-set-cookie

使用场景:

  • web应用程序具有基于cookie的验证过程
  • 想利用cookie值上的sql注入漏洞

Sqlmap使用cookie的过程

  1. 登录或者浏览页面
  2. 打开审计工具或者代理截断,复制cookie
  3. 在sqlmap中使用 –cookie粘贴Cookie

image-20210516112641120

image-20210516112907590

* 在通信过程中,web应用程序使用set-cookie进行响应,sqlmap将在所有的进一步的HTTP的请求中自动使用其值作为cookie的头

* sqlmap还将为SQL注入自动测试这些值,这可以通过提供--drop-set-cookie-sqlmap将忽略任何即将到来的Set-Cookie头来避免 

* 反之,如果提供了一个带有选项的HTTP Cookie报头--cookie和目标url在任何时候发送一个HTTPset-cookie,sqlmap将询问使用哪组cookie 

* load-cookie,可以用来提供包含Netscape/wget格式的cookie特殊文件

注意:
	如果需要对http cookie值进行SQl注入探测,需要设置--level2(3)以上

image-20210516114716338

4.SQLmap设置请求参数(二)

4.1 sqlmap设置user-Agent

* 默认情况下,sqlmap使用一下用户代理头值执行HTTP请求

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

但是可以通过 –user-agent来伪造

* 此外,通过--random-agent,sqlmap将从./txt/user-agent随机选择一个用于会话的所有http请求

* 一些站点会检测user-agent值如果不是一个合法的请求,就会中断连接。同时sqlmap也会报错 

image-20210517153234888

使用:

  1. sqlmap --hh 查看详细信息

image-20210517153400307

sqlmap -u "http://127.0.0.1/sql/less-1/?id=1" --banner

可以利用wireshark抓包看一下

image-20210517153939613

此时的user-agent

  1. 打开burp抓去合法的user-agent,复制。

image-20210517154138425

sqlmap -u "http://127.0.0.1/sql/less-1/?id=1" --user-agent="Mozilla/5.0 (Xll; linux i686; rv:52.0) Gecko/20100101 Firefox/52.0" --banner

重新抓包查看user-agent

image-20210517154448203

sqlmap -u "http://127.0.0.1/sql/less-1/?id=1" --random-agent --banner

image-20210517154650186

查看user-agent.txt文件

image-20210517154758809

注意:针对user-Agent的值探测sql注入 ,需要设置–level 的值为3

image-20210517155246771

抓包,将内容复制到一个文件中,在注入点后边加一个* (提示探测点即使没有level 3 也会检测)

sqlmap -r target.txt --level 3

4.2 Sqlmap设置host头

  1. 可以手动设置host,默认情况下,从提供的目标url解析host主机头

注意:如果–level的值为5将对http主机头进行host检测

image-20210517163400303

表明探测所有内容

4.3 Sqlmap设置Referer头部

默认情况下,如果没有显示的设置,HTTP请求不会发送HTTP的引用头。

注意: 如果–level设置的为3或以上将针对HTTP引用头,进行sql注入测试

image-20210517163931913

同理,拷贝内容到文件中,

image-20210517164030327

sqlmap  -r target.txt --level 5

4.4 Sqlmap设置额外的HTTP头

通过设置–header,可以提供额外的HTTP的标头。每个标头必须使用换行符进行分割,从配置文件中提供他们容易的多,可以产查看sqlmap.conf

image-20210517164511724

image-20210517164604335

使用例子:

image-20210517165211365

-H 或者–header设定一个请求参数,–headers设定多个请求参数

sqlmap -u "http://127.0.0.1/sqli/Less-1/?id=1" --headers="User-Agent:HAHA\nCookie:123456" --banner

image-20210517165321771

image-20210517165351760

5.sqlmap请求参数设置(三)

5.1 sqlmap设置http协议认证

Sqlmap中设置http协议认证的参数:–auth-type和–auth-cred

其中–auth-type支持BASIC,DIgest,NTLM

–auth-cred支持的语法: username:password

image-20210517170229427

image-20210517170257317

5.2 Sqlmap设置http代理

SQLmap设置代理参数–porxy,–proxy-cred,–proxy-file,–ignore-proxy

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

--proxy-cred用来设置HTP代理服务器的认证信息 格式: --proxy-cred uername:password

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

--ignore-proxy当您希望通过忽略系统范围内的HTTPS代理服务器的设置来针对本地网络的目标部分运行sqlmap时,应该使用这种方法

image-20210517171718335

image-20210517171938950

5.3 Sqlmap设置TOR隐藏网络

SQLmap设置Tor网络的参数: –tor,–tor-port,–tor-type –check-for

image-20210517172338307

安装tor:

apt install tor

service tor start
service tor status

image-20210517172656862

如果有vps,那么会设置成功!!!

5.4 sqlmap设置延迟

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


--delay 0.5   设置延迟0.5秒

image-20210517173229264

image-20210517173314645

6. Sqlmap设置参数(四)

6.1 Sqlmap设置超时

在考虑超时HTTPS请求之前,可以指定等待的秒数。有效值是一个浮点数,默认设置为30秒

–timeout 10.5

6.2 sqlmap设置重试次数

–retries count 设置对应的重试次数,默认情况下重试3次

image-20210517174355928

image-20210517174820879

6.3 sqlmap设置随机化参数

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

–randomize 参数名称

image-20210517175204017

结果

image-20210517175229969

6.4 Sqlmap设置日志过滤目标

使用选项-l使用从提供的日志解析的所有主机不同,可以指定邮箱的python正则表达式,用于过滤所需的日志

image-20210517175617954

--skip-urlencode    不进行url加密 

image-20210517175905356

浏览网页后,所有的日志记录都会保存在文件中

image-20210517180046671

sqlmap -r proxy.txt  --scope="192.168.100.100"  --banner

7.SQLmap设置请求参数(五)

7.1 Sqlmap设置忽略401

–ignore-401 设置忽略未验证错误

image-20210517181134057

7.2 Sqlmap设置HTTP协议的私钥

当web服务器需要适当的客户端证书和用于验证的私钥时,应该使用此项。提供的值应该是一个PEM格式的key_file,其中包含证书和私钥

--auth-file 文件名

7.3 Sqlmap设置安全模式

避免多次请求后销毁会话

image-20210517181747674

–safe-url,–safe-post,–safe-rep,–safe-freq

通过这种方式,sqlmap将访问每个预定义变量的请求而不对某个安全URL 执行任何类型的注入

7.4 Sqlmap设置url编码

根据参数的设置(例如get),默认情况下他的值可以是url编码。在某些情况下,后端的web服务不不遵循RFC标准需要以原始的非编码形式发送值。在这种情况下使用--skip-urlencode

–skip-urlencode 不进行url加密

8. Sqlmap性能优化

8.1 Sqlmap设置持久http连接

--keep-alive

image-20210523074437456

8.2 Sqlmap设置不接收http body

SQLmap设置空连接,标识不接收http body,常用在盲注的过程

参数: --nul-connection

image-20210523074945693

image-20210523075054297

使用HEAD探测不会接收,报文内容

8.3 SQLmap设置多线程

参数:--thread

默认是3个线程,最大设置10个

image-20210523075713553

8.4SQLmap设置预测输出

在推理算法中用于检索值字符的顺序统计预测

参数: --predict-output

image-20210523080605572

注意:这个参数与多线程参数不兼容

9.SQLmap指定位置注入

9.1 SQLmap注入介绍

SQL注入可以在HTTP报文中的任意位置

9.2 SQLmap设置指定注入参数

Sqlmap设置参数:

-p,--skip,--param-exclude,--skip-static

-p:

-p "指定具体的参数"

image-20210523082212311

image-20210523082304021

–skip:

忽略探测具体的参数 --level --skip "user-agent,referer"

–param-exclude

忽略包含具体内容的参数 --param-exclude="token|session" #不对包含token和session的参数进行检测

–skip-static

忽略非动态参数

image-20210523083409919

9.3 SQLmap对指定url注入位置

image-20210523083621120

9.4 SQLmap设置任意位置注入

image-20210523084930160


文章作者: 尘落
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 尘落 !
评论
  目录