mysql注入 outfile_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_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 identity sql_SQL Server中identity(自增)的用法详解
一.identity的基本用法 1.含义 identity表示该字段的值会自动更新,不需要我们维护,通常情况下我们不可以直接给identity修饰的字符赋值,否则编译时会报错 2.语法 列名 数据类型 ...
- mysql注入中的outfile、dumpfile、load_file函数详解
在利用sql注入漏洞后期,最常用的就是通过mysql的file系列函数来进行读取敏感文件或者写入webshell,其中比较常用的函数有以下三个 into dumpfile() into outfile ...
- angularjs指令中的compile与link函数详解
通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link,post-link的用法与区别. angularjs里的指令非常神奇,允许你 ...
- python中argparse模块关于 parse_args() 函数详解(全)
目录 前言 1. 函数讲解 2. 基本用法 3. 实战讲解 前言 原理:命令行解析使用argparse包 作用:命令行传参赋值 可用在机器学习深度学习 或者 脚本运行等 了解这个函数需要了解其背后的原 ...
- CVE-2021-2429:MySQL InnoDB Memcached 插件中的堆缓冲区溢出漏洞详解
聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 2021年4月,ZDI 收到了一名匿名者提供的关于MySQL 数据库中某漏洞的报告,结果是位于 InnoDB memcached 插件中的基于堆 ...
最新文章
- 重型车辆盲区行为检查Behaviours – Heavy Vehicle Blind Spots
- linux 命令篇 -- 新建用户
- WPF 与Surface 2.0 SDK 亲密接触 - ScatterView 数据绑定篇
- android按钮最底,Android:点击按钮后布局上的动画,最低SDK版本为14
- 神策数据助力海尔落地 6 大智慧厨房在线场景
- Bitmap 多语言实现及应用
- 代码也浪漫:用Python放一场烟花秀!
- python常用模块用法_python常用模块(一)
- A股收盘:沪指收涨0.66% 深成指收涨1.01%
- 【NOIP】OpenJudge - 15:银行利息
- LeetCode ——24. 两两交换链表中的节点
- tweenlite的组合使用
- 网络工程师考试第一节计算机硬件基础
- Resource_Hacker破解版下载
- Keil C51 Code Banking
- 哈佛大学幸福课-笔记
- 念荆轲[原创诗一首]
- 什么是VBA,他有什么作用
- html实现播放器下一集方法,本地化DPLAYER和CKPLAYER播放器自动下一集
- 钱包开发经验分享:BTC篇
热门文章
- 关系数据库标准语言 SQL (ch.3)
- MySQL主从复制之传统复制与GTID模式之间切换
- Codeforces Educational 38 C. Constructing Tests ( 数学公式推导+暴力)
- Mac安装mysqldb
- 基本数据结构和算法回顾
- hdu 5256 LIS变形
- Android ImageView的ScaleType属性
- (笔记) (ARM) QQ2440 开发板改为 GT2440 (Linux) (开发板)
- __GLOBAL__I_a in libUPPayPlugin.a(UPPasswordTool.o)
- vc 工程下的.ncb文件的作用