mysql注入中的outfile、dumpfile、load_file函数详解
在利用sql注入漏洞后期,最常用的就是通过mysql的file系列函数来进行读取敏感文件或者写入webshell,其中比较常用的函数有以下三个
- into dumpfile()
- into outfile()
- load_file()
我们本次的测试数据如下
读写文件函数调用的限制
因为涉及到在服务器上写入文件,所以上述函数能否成功执行受到参数 secure_file_priv
的影响。官方文档中的描述如下
翻译一下就是
- 其中当参数
secure_file_priv
为空时,对导入导出无限制 - 当值为一个指定的目录时,只能向指定的目录导入导出
- 当值被设置为NULL时,禁止导入导出功能
这个值可以通过命令 select @@secure_file_priv
查询。由于这个参数不能动态更改,只能在mysql的配置文件中进行修改,然后重启生效。
dumpfile与outfile的区别导出数据库场景下的差异
select …… into outfile
我们先来看一下mysql官方文档里对于这两个函数的解释
其中有两个值得注意的坑点
outfile函数可以导出多行,而dumpfile只能导出一行数据
outfile函数在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式
我们接下来通过导出测试看看这里面的细节
首先通过命令 select * from test into outfile '/tmp/test.txt'
来使用outfile导出
可以看到文件 /tmp/test.txt
文件中保存了所有的数据并且在一行数据的末尾自动换行
通过查看官方文档,可以看出使用如下参数可以进行格式调整
其中 FIELDS ESCAPED BY
可以用来对指定的字符进行转义, FIELDS [OPTIONALLY] ENCLOSED BY
用来对字段值进行包裹, FIELDS TERMINATED BY
用来对字段值之间进行分割
例如使用如下命令 select * from test into outfile '/tmp/test.txt FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY ' " 'LINES TERMINATED BY '\n'
得到的导出文件如下
select …… into dumpfile
而接着使用命令 select * from test into dumpfile '/tmp/test.txt'
使用dumpfile进行导出
可以看到此命令在执行的时候提示输出超过一行
查看文件内容
可以看见通过dumpfile导出的数据行数据之间并未进行换行且只导出了部分数据
写入webshell或者udf下的差异
select …… into outfile
我们使用命令 select 'a\naa\raaaa' into outfile '/tmp/test.txt'
来看一下在常用的写文件场景下的结果
可以看到outfile对导出内容中的\n等特殊字符进行了转义,并且在文件内容的末尾增加了一个新行
我们接着使用命令 select 'a\naa\raaaa' into dumpfile '/tmp/test.txt'
来看一下
可以看到dumpfile对文件内容是原意写入,未做任何转移和增加。这也就是为什么 我们在平常的UDF提权中使用dumpfile进行dll文件
写入的原因
还有一个需要关注的点就是:outfile后面不能接0x开头或者char转换以后的路径,只能是单引号路径。这个问题在php注入中更加麻烦,因为会自动将单引号转义成\',那么基本就GG了,但是load_file,后面的路径可以是单引号、0x、char转换的字符,但是路径中的斜杠是/而不是\
mysql注入中的outfile、dumpfile、load_file函数详解相关推荐
- python中transpose函数_对numpy中的transpose和swapaxes函数详解
transpose() 这个函数如果括号内不带参数,就相当于转置,和.T效果一样,而今天主要来讲解其带参数. 我们看如下一个numpy的数组: `arr=np.arange(16).reshape(( ...
- python中zip的使用_浅谈Python中的zip()与*zip()函数详解
前言 1.实验环境: Python 3.6: 2.示例代码地址:下载示例: 3.本文中元素是指列表.元组.字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表). zip(*iterables ...
- java里的进制转换函数_基于Java中进制的转换函数详解
十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...
- 【转】angularjs指令中的compile与link函数详解
这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下 通常大家在使用 ...
- MySql截取字符串的几个常用函数详解
MySql截取字符串的几个常用函数详解 MySQL 截取字符的几个常用函数:left(), right(), substring(), substring_index(),mid(), substr( ...
- wow mysql dbc_DBC中悲观锁介绍附案例详解
DBC中悲观锁介绍附案例详解 了解下DBC中悲观锁: 代码如下: BDUtils 工具类: package JDBC; import java.sql.*; public class BDUtils ...
- mysql注入 outfile_Mysql注入中的outfile、dumpfile、load_file函数详解
在利用sql注入漏洞后期,最常用的就是通过mysql的file系列函数来进行读取敏感文件或者写入webshell,其中比较常用的函数有以下三个 into dumpfile() into outfile ...
- mysql 注入 file load_Mysql注入中into outfile和load_file()总结
(1)outfile后面不能接0x开头或者char转换以后的路径,只能是单引号路径.这个问题在php注入中更加麻烦,因为会自动将单引号转义成\',那么基本没的玩了. 唯一的一种可能就是你使用mysql ...
- angularjs指令中的compile与link函数详解
通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link,post-link的用法与区别. angularjs里的指令非常神奇,允许你 ...
最新文章
- 大学录取通知书也越来越科技范儿
- 关于实现udev/mdev自动挂载与卸载
- tftp刷路由器 linux,TP-Link无线路由器HTTP/TFTP后门漏洞
- Android 开发学习资源
- Java实现Huffman哈夫曼树(数组实现)
- XML——XSLT的一个简单荔枝
- 一文重新认识联邦学习
- Makefile:宏定义EXTRA_CFLAGS += -D 与CONFIG_ =y
- IDA for Linux/Mac/Windows
- 程序员以上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛?
- 【机房收费系统C#版】——导出Excel
- 【一起学爬虫】爬虫实战:爬取京东零食
- 交易系统开发(一)——交易系统简介
- Windows 10聚焦怎么用?教你玩转Windows聚焦功能
- python中try怎么用_python中的try的用法,try 的用法?,英文try的用法
- 再不跳槽,应届毕业生拿的都比我多了!
- python 已知三角形的三条边,通过反三角函数计算出三角形的三个角;其中用到math的引用;
- Linux常用命令大全,一篇搞定
- Ghost高级教程——克隆备份
- java 通过 itext生成pdf添加,插入文字,图片
热门文章
- 使用Devstack部署neutron网络节点
- NR 5G SBA架构
- 【前端面试分享】- 寒冬求职下篇
- 009-对象—— 构造方法__construct析构方法__destruct使用方法 PHP重写与重载
- Spring+XFire WS-Security安全认证开发感悟
- JS开发利器-IxEdit傻瓜式JavaScript开发工具(附下载、汉化版、视频教程)
- [洛谷P1268]树的重量
- NGINX发布支持动态配置的开源Web服务器
- 2018年自媒体人的出路在哪?
- 不只是让利百亿,天猫618揭示了哪些新零售趋势?