永州做网站的公司,怎么做教育网站,封面上的网站怎么做,广告设计专业周记简述 Microsoft SQL server也叫SQL server / MSSQL#xff0c;由微软推出的关系型数据库#xff0c;默认端口1433
常见搭配C# / .net IISmssql mssql的数据库文件 数据文件#xff08;.mdf#xff09;#xff1a;主要的数据文件#xff0c;包含数据表中的数据和对象信息…简述 Microsoft SQL server也叫SQL server / MSSQL由微软推出的关系型数据库默认端口1433
常见搭配C# / .net IISmssql mssql的数据库文件 数据文件.mdf主要的数据文件包含数据表中的数据和对象信息
日志文件.ldf记录数据库的所有操作 MSSQL的系统数据库 master主要为系统控制数据库其中包括了所有配置信息、用户登录信息和当前系统运行情况。 model模版数据库 tempdb临时容器 msdb主要为用户使用所有的告警、任务调度等都在这个数据库中。 MSSQL注入常用的系统视图 1.sys.objects可以查看所有类型的数据库对象包括表、视图、存储过程。主要我们用来查询数据库的表以及表的object_id常用字段name,object_id表的唯一标识符type表的类型U为用户创建的S是系统基础表sysobjects中为xtype。 2.sys.columns存储数据库中的每个表的列信息包括列名、数据类型、长度等。常用字段object_idnamecolumn_id 3.sys.databases该视图包含了 SQL Server 实例中所有数据库的信息如数据库名、创建日期我们主要用来查看有哪些数据库常用字段name,database_id,owner_sid数据库所有者的id系统数据库为0x01 4.sysobjects: 旧版的sys.objects; sysdatabases: 旧版的sys.databases; syscolumns旧版的sys.columns 5.INFORMATION_SCHEMA.TABLES用法类似于mysql查询表的名字 6.INFORMATION_SCHEMA.COLUMNS查询列名的用法类似mysql MSSQL权限 一般MSSQL有的两种不同类型的权限分别针对不同的对象1.服务器级别的权限2.数据库级别的权限在服务器和数据库的权限设置当中又有两个概念1.用户 2.角色 用户是登录数据库的实体而角色是用户的权限集合。类似于当官的人和官职不同官职代表不同的权限也就是数据库的角色而同一个官职可以有多人当官的具体的人就是数据库的用户。*也类似于windows的组* 用户和角色在服务器级别以及数据库级别都会存在服务器的最高权限可以操作数据库服务器以及数据库的所有操作而数据库的最高权限有可能因为有时用户会同时具有数据库的最高权限以及服务器的最高权限仅可以操作当前数据库的所有操作并不能进行跨库以及操控整个数据库服务器。 服务器级别的最高权限角色是 sysadmin 角色数据库级别的最高权限角色是 db_owner 角色。 那么一个登录用户的权限主要看用户所在的角色是什么。 服务器级别角色 1.sysadmin具有服务器级别的最高权限可以执行所有操作。 2.serveradmin很高的权限几乎可以执行所有操作包括操作所有数据库 数据库级别角色 1.db_owner数据库级别的最高权限可以执行数据库的所有操作 2.db_datareader具有只读访问数据库中所有表的权限。 3.db_datawriter具有写入和修改数据库中所有表的权限。 4. db_securityadmin负责管理数据库安全相关的操作包括分配权限、创建和管理角色等。 5.db_backupoperator负责数据库备份和恢复的操作可以执行备份和恢复数据库的任务。 MSSQL常用注入语句 判断当前用户权限
SELECT SYSTEM_USER;返回当前服务器用户登陆名
SELECT USER;返回当前数据库用户所在数据库中的身份 --判断是什么角色如果是返回1不是返回0 is_srvrolemenber(角色名) is_menber(角色名) 判断是否为服务器SA角色 判断是否为服务器public角色 判断是否位数据库db_owner角色 获取数据库版本 获取数据库名
select db_name() 查询当前数据库名
select db_name(5) 查询第一个非系统数据库通过查询sys.databas可以看到四个owner_sid为0x01的系统库排在前面,以此类推
select file_name(1)一般数据库名文件名和数据库名是相同的如果db_name被过滤可以试这个
select top 1 name from sys.databases where owner_sid0x01 and name not in (name1,name2)
owner_sid0x01中是不等的意思因为0x01是系统表
获取数据库表名
-跨库查询
select top 1 name from 数据库名.dbo.sysobjects where xtypeu
dbo是用户名默认的没明确指定都创建在dbo下
select top 1 name from 数据库名.sys.tables -当前库查询
select top 1 name from sys.objects where xtypeu
select top 1 name from sys.tables