数据库类型判断
根据url地址的文件后缀名为aspx,初步判断为sqlserver数据库;通过and (select count(*) from sysobjects)>0判断是否为mssql数据库,如果返回正常,则证明数据库为mssql数据库
mssql数据库关键的三张系统表
sysdatabases、sysobjects、syscolumns
表 | 释义 |
---|---|
sysobjects | SQL-SERVER的每个数据库内都有此系统表,它存放该数据库内创建的所有对象,如约束 、默认值、日志、规则、存储过程等,每个对象在表中占一行。 |
syscolumns | 该表位于每个数据库中。 |
sysdatabases | 该表保存在master数据库中,这个表中保存的是所有的库名,以及库的ID,和一些相关信息 |
sysobjects系统表的字段名和相关说明:
Name | 对象名 |
id | 对象id |
xtype | 对象类型 |
uid | 所有者对象的用户id |
status | 对象状态 |
当xtype= 'U' and status>0代表是用户建立的表,对象名就是表名,对象ID就是表的ID值。 |
Mssql需要掌握的几种函数
函数 | 释义 |
---|---|
host_name() | 返回服务器端计算机的名称 |
Current_user | 返回当前数据库的用户 |
db_name () | 返回当前数据库的名 |
CHAR() | 将ASCII 码转换为字符,如果没有输入0 ~ 255 之间的ASCII 码值,CHAR()返回 NULL |
Object_id() | 返回数据库表名,通常用于16进制或SQL编码的转换 |
col_name ( table_id , column_id ) | 返回指定表中指定字段 |
Substring() | 返回子字符串,例:substring(“123456” ,1,3)返回“123” |
Cast() | 将某种数据类型的表达式显式转换为另一种数据类型 |
Mssql注入基本流程
获取数据库名称------获取数据库中表名称------获取数据库关键表中的列名称------获取数据库关键表中的关键字段的内容