闲遇阁 - MSSQL
type: channel
link: http://blog.187.ink/index.php/tag/MSSQL/
items: SQL注入-番外篇

SQL注入-番外篇
type: item
date: 2024-07-24T17:30:52+08:00
description: MSSQL基础​ 根据url地址的文件后缀名为aspx，初步判断为sqlserver数据库；通过and (select count(*) from sysobjects)>0判断是否为mssql数据库，如果返回正常，则证明数据库为mssql数据库。与MySQL相同，*MSSQL*有类似于MySQL中*information_schema*库这种默认存在可简便查询的存在先来点函数函数释义host_name()返回服务器端计算机的名称Current_user返回当前数据库的用户db_name ()返回当前数据库的名CHAR()将ASCII 码转换为字符，如果没有输入0 ~ 255 之间的ASCII 码值，CHAR（）返回 NULLobject_id()返回数据库表名，通常用于16进制或SQL编码的转换col_name ( table_id , column_id )返回指定表中指定字段substring()返回子字符串，例：substring(“123456” ,1,3)返回“123”Cast()将某种数据类型的表达式显式转换为另一种数据类型WAITFOR DELAY '0:0:n''时:分:秒'，WAITFOR DELAY '0:0:5'表示等待5秒后执行再来点例子:# 创建数据库 create database [dbname]; create database test; # 删除数据库 drop database [dbname]; drop database test; # 创建新表 create table table_name (name char(10),age tinyint,sex int); # 创建新表前要选择数据库，默认是master库 use test; create table admin (users char(255),passwd char(255),sex int); # 删除新表 drop table table_name; drop table dbo.admin; # 向表中插入数据 insert into table_name (column1,column2) values(value1,value2); insert into admin (users,passwd,sex) values('admin','admin',1); # 删除内容 delete from table_name where column1=value1; delete from admin where sex=2; # 更新内容 update table_name set column2=”xxx” where column1=value1; update admin set users='admintest' where sex=2; # 查找内容 select * from table_name where column1=value1; select passwd from admin where users='admin';MSSQL数据库中没有limit排序获取字段，但是可以使用top 1来显示数据中的第一条数据，使用 <> 来排除已经显示的数据，获取下一条数据。使用not in来排除已经显示的数据，获取下一条数据：# 使用<>获取数据 id=-2 union select top 1 1,id,name from dbo.syscolumns where id='5575058' and name<>'id' and name<>'username'--+ # 使用not in获取数据 id=-2 union select top 1 1,table_name from information_schema.tables where table_name not in(select top 1 table_name from information_schema.tables)--+ id=-2 union select top 1 1,id,name from dbo.syscolumns where id='5575058' and name not in('id','username')--+注释只有--+和/**/注入MSSQL中每个数据库都存在三张默认的表sysdatabases、sysobjects、syscolumns表释义sysobjectsSQL-SERVER的每个数据库内都有此系统表，它存放该数据库内创建的所有对象，如约束 、默认值、日志、规则、存储过程等，每个对象在表中占一行。syscolumns该表位于每个数据库中。sysdatabases该表保存在master数据库中…