数据库系统函数的注入利用(初识)

数据库系统功能

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 创建环境变量或更新现有的环境变量的值

posted @ 2019-10-13 13:24  Mirror王宇阳  阅读(315)  评论(0编辑  收藏  举报