问题:
1、学习数据库自带函数的功能与用法(思考在什么情况下可以执行命令)
2、将所有涉及的函数进行测试并举例说明其用法并形成报告
扩展学习:针对自己所选数据库,尝试执行系统命令,自己构造所需环境
具体解释
在 sql
注入时为了应对各种限制措施,利用数据库自带的一些系统函数经过各种变换之后可以绕过一些安全设备或者一些基础防御的措施,比如一些字符串转换的函数、截取字符串长度的函数等,
参考:菜鸟课程
应用的场景包括:通过注入获取数据、变换字符串绕过 WAF、盲注猜解字符数据等
我们经常在注入时候想要利用数据库来执行系统命令,不同的数据库可能使用不不同的方式,比如
Mysql 的 udf、Mssql 的 xp_cmdshell
等,这个在利用注入提权的时候非常有帮助,通过数据库执行系统命令所拥有的权限跟数据库的安装过程是有关系的,所以搞清楚这个关系也很重要,这样我们在安装配置数据库的时候可以尽量避免权限过高,造成安全隐患。
除了学习这些基础基础知识外,自己可以动手构造一些可以利用数据库执行命令的场景然后进行测试,完全理解这个提权的过程。
实践如下:
一开虚拟机就报low disk space,只扩大虚拟机的磁盘空间可不行。
查看磁盘信息:
总空间为120G,现有sda1、sda2、sda5三块磁盘设备。
接下来先创建一个快照,以防接下来的操作出现错误,我们可以接着回到最初。
接下来就是扩展分区了,步骤参加下面的链接
https://jingyan.baidu.com/article/86fae34604bdd53c49121a26.html
Mysql字符串函数:
ascii(s):返回的是第一个字母的ascii码:
char_length(s)与character_length(s);这俩是同义词
concat(s1,s2,s3……);
concat_ws(s,s1,s2,s3……);
field(s,s1,s2,s3……);
find_in_set(s,s1);
format(x,s);
insert(s1,x,s,s2);s2替换从s1的x开始的s个长度的位置
locate(s1,s2);s1在s2中的起始位置数
lcase(s)与lower(s);
ucase(s)与upper(s);
left(s1,n);返回前n个字符
right(s,n);返回后n个字符:
lpad(s1,n,s2);在s1的开始填充s2,使其达到长度n
rpad(s1,n,s2);
ltrim(s);
rtrim(s);
trim(s);
mid(s,n1,n2);
position(s1 in s2);
repeat(s1,n);
replace(s,s1,s2);s2替换s中s1的位置:
reverse(s);
space(n):
strcmp(s1,s2);
substr(s,n1,n2);
substring_index(s,s1,n);(正左负右)
mysql数字函数:
反余弦值:
[外链图片转存失败(img-ESR4pY8M-1566910578797)(第四周-数据库系统功能相关学习.fld/image039.jpg)]
反正切值:
[外链图片转存失败(img-4cwwwKsw-1566910578797)(第四周-数据库系统功能相关学习.fld/image040.jpg)]
[外链图片转存失败(img-dcS9hQI8-1566910578797)(第四周-数据库系统功能相关学习.fld/image041.jpg)]
余切值:
[外链图片转存失败(img-dRUOkjPi-1566910578798)(第四周-数据库系统功能相关学习.fld/image042.jpg)]
avg();
[外链图片转存失败(img-kp4bCHNQ-1566910578798)(第四周-数据库系统功能相关学习.fld/image043.jpg)]
ceil(n);
[外链图片转存失败(img-3eUONUfM-1566910578798)(第四周-数据库系统功能相关学习.fld/image044.jpg)]
floor(n);
[外链图片转存失败(img-npSA6HZj-1566910578798)(第四周-数据库系统功能相关学习.fld/image045.jpg)]
round(n);返回离n最近的整数:
[外链图片转存失败(img-PtPjEWGC-1566910578799)(第四周-数据库系统功能相关学习.fld/image046.jpg)]
返回查询的记录总数:
[外链图片转存失败(img-kKClbZG3-1566910578799)(第四周-数据库系统功能相关学习.fld/image047.jpg)]
greatest(s1,s2,s3,……);
[外链图片转存失败(img-fPlF2EGg-1566910578800)(第四周-数据库系统功能相关学习.fld/image048.jpg)]
[外链图片转存失败(img-F2JT8BWu-1566910578800)(第四周-数据库系统功能相关学习.fld/image049.jpg)]
[外链图片转存失败(img-dZRcvYw3-1566910578800)(第四周-数据库系统功能相关学习.fld/image050.jpg)]
[外链图片转存失败(img-djl6uyVV-1566910578801)(第四周-数据库系统功能相关学习.fld/image051.jpg)]
[外链图片转存失败(img-t5CyCmoF-1566910578801)(第四周-数据库系统功能相关学习.fld/image052.jpg)]
[外链图片转存失败(img-xvNepoiI-1566910578801)(第四周-数据库系统功能相关学习.fld/image053.jpg)]
[外链图片转存失败(img-Ijx7YFHc-1566910578802)(第四周-数据库系统功能相关学习.fld/image054.jpg)]
rand();返回0到1的随机数
[外链图片转存失败(img-BuOmNEVA-1566910578802)(第四周-数据库系统功能相关学习.fld/image055.jpg)]
sign(x);返回x的符号:
[外链图片转存失败(img-HIn40swq-1566910578802)(第四周-数据库系统功能相关学习.fld/image056.jpg)]
[外链图片转存失败(img-7cLqJCBw-1566910578803)(第四周-数据库系统功能相关学习.fld/image057.jpg)]
[外链图片转存失败(img-eHZ9XoUy-1566910578803)(第四周-数据库系统功能相关学习.fld/image058.jpg)]
[外链图片转存失败(img-VFGFzodH-1566910578803)(第四周-数据库系统功能相关学习.fld/image059.jpg)]
日期函数(不晓得日期函数在攻击中是怎么用的,好奇):
[外链图片转存失败(img-rGpe9Rdk-1566910578804)(第四周-数据库系统功能相关学习.fld/image060.jpg)]
[外链图片转存失败(img-VWcE1L7f-1566910578804)(第四周-数据库系统功能相关学习.fld/image061.jpg)]
[外链图片转存失败(img-IB8KKSY3-1566910578804)(第四周-数据库系统功能相关学习.fld/image062.jpg)]
[外链图片转存失败(img-RnXlnfqt-1566910578805)(第四周-数据库系统功能相关学习.fld/image063.jpg)]
[外链图片转存失败(img-FCQ3BGXD-1566910578805)(第四周-数据库系统功能相关学习.fld/image064.jpg)]
[外链图片转存失败(img-FcJXzjx1-1566910578805)(第四周-数据库系统功能相关学习.fld/image065.jpg)]
[外链图片转存失败(img-tZe35qnx-1566910578806)(第四周-数据库系统功能相关学习.fld/image066.jpg)]
[外链图片转存失败(img-1I8gCAxF-1566910578806)(第四周-数据库系统功能相关学习.fld/image067.jpg)]
[外链图片转存失败(img-lnA7P9N2-1566910578806)(第四周-数据库系统功能相关学习.fld/image068.jpg)]
[外链图片转存失败(img-BUDL5Bzw-1566910578807)(第四周-数据库系统功能相关学习.fld/image069.jpg)]
[外链图片转存失败(img-BPK7Y8Wr-1566910578807)(第四周-数据库系统功能相关学习.fld/image070.jpg)]
[外链图片转存失败(img-zZ2dMb8k-1566910578808)(第四周-数据库系统功能相关学习.fld/image071.jpg)]
[外链图片转存失败(img-M9pjX0We-1566910578808)(第四周-数据库系统功能相关学习.fld/image072.jpg)]
高级函数:
返回二进制编码:
[外链图片转存失败(img-u6FNGJkO-1566910578808)(第四周-数据库系统功能相关学习.fld/image073.jpg)]
转为二进制字符串:
[外链图片转存失败(img-trq4KMHL-1566910578809)(第四周-数据库系统功能相关学习.fld/image074.jpg)]
条件判断:
[外链图片转存失败(img-x9ymfRxh-1566910578811)(第四周-数据库系统功能相关学习.fld/image075.jpg)]
转换数据类型:
[外链图片转存失败(img-jhUIjgm9-1566910578811)(第四周-数据库系统功能相关学习.fld/image076.jpg)]
返回第一个非空表达式:
[外链图片转存失败(img-4OeMFsHt-1566910578811)(第四周-数据库系统功能相关学习.fld/image077.jpg)]
返回服务器的连接数:
[外链图片转存失败(img-klFr3jGX-1566910578812)(第四周-数据库系统功能相关学习.fld/image078.jpg)]
conv(x,n1,n2);将x由n1进制的转为n2进制的:
[外链图片转存失败(img-8ReC6KOq-1566910578812)(第四周-数据库系统功能相关学习.fld/image079.jpg)]
[外链图片转存失败(img-obzC5SUm-1566910578812)(第四周-数据库系统功能相关学习.fld/image080.jpg)]
[外链图片转存失败(img-2Z7l4nTD-1566910578813)(第四周-数据库系统功能相关学习.fld/image081.jpg)]
[外链图片转存失败(img-PNSw0n6D-1566910578813)(第四周-数据库系统功能相关学习.fld/image082.jpg)]
[外链图片转存失败(img-LLXBO8cD-1566910578814)(第四周-数据库系统功能相关学习.fld/image083.jpg)]
[外链图片转存失败(img-z7sSegpl-1566910578814)(第四周-数据库系统功能相关学习.fld/image084.jpg)]
关于mysql的udf漏洞:
以前利用phpstudy复现过,复现过程中借用了sqlmap的提权脚本,将提权脚本上传到lib\plugin文件夹下。