- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Mysql注入中的outfile、dumpfile、load_file函数详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
在利用sql注入漏洞后期,最常用的就是通过mysql的file系列函数来进行读取敏感文件或者写入webshell,其中比较常用的函数有以下三个 。
我们本次的测试数据如下 。
读写文件函数调用的限制 。
因为涉及到在服务器上写入文件,所以上述函数能否成功执行受到参数 secure_file_priv 的影响。官方文档中的描述如下 。
翻译一下就是 。
secure_file_priv
为空时,对导入导出无限制这个值可以通过命令 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函数详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我网站的支持! 。
原文链接:https://hacksec.xyz/2018/05/09/mysql-file 。
最后此篇关于Mysql注入中的outfile、dumpfile、load_file函数详解的文章就讲到这里了,如果你想了解更多关于Mysql注入中的outfile、dumpfile、load_file函数详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想插入一个 HTML 文件,其中有很多我不想手动转义的 SQL 元字符(例如单引号)到 MySQL 表中。 虽然我可以让 mysql 客户端将文件内容加载到一个变量中,然后简单地插入该变量,但大致如
我有以下目录结构: project/ controller/ __init__.py app1.py view/ app1.kv
我有以下目录结构: project/ controller/ __init__.py app1.py view/ app1.kv
我在工作中管理一个网站,该网站是 SQL 注入(inject)攻击的受害者。通过检查日志,攻击者似乎使用了 sqlmap 使用文件读取选项并从服务器获取了一堆配置文件,因为我们的 Web 开发人员很草
我遇到了 MYSQL LOAD_FILE 问题。每当我执行某事时 UPDATE product_category SET thumbnail= LOAD_FILE('C:\ProgramData\My
我知道我需要使用文档中提到的特定路径名 https://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_load-file
我有一个类似的查询 SELECT Load_file("whatever") 和max_allowed_packet默认为16M,但结果不知何故不完整,结尾缺失(总是在一定长度之后)。是否还有其他
我正在尝试将xml文件的目录作为blob加载到数据库表中。每行将包含一个对应的Blob文件。通过python脚本将文件加载到表中时,值将插入为null。在mysql命令行中运行等效命令时,也是如此。
这是我目前唯一可以在 MySQL 中使用 load_file() 函数的路径: C:\ProgramData\MySQL\MySQL Server 8.0\Uploads 我不能从任何其他路径附加任
我想让 SQL LOAD_FILE 函数正常工作,并且已阅读有关此问题的每个问题/答案 + 文档,但以下是正在发生的情况。 当我想从我的主目录LOAD_FILE时: mysql> SELECT LOA
我很想使用 mysql 函数 'LOAD_FILE' 将 .npz 文件插入到 mysql 列中(似乎这应该可行),但是我在sqlalchemy的ORM层中找不到任何对应关系,而且我也无法在较低层中编
我是否必须将图像文件保存到特定位置才能使用 LOAD_FILE 更新 MYSQL 产品图像字段。 我使用了以下代码,首先我收到了 29 rows affected 消息,但是当我使用相同的语句再次尝试
我正在尝试将图像插入我的 MySQL 服务器。我做了一些研究,看起来最好的方法是通过 LOAD_FILE()。但是,LOAD_FILE() 始终返回 null。我知道 LOAD_FILE() 有 4
我搜索并找到了这篇文章 (http://stackoverflow.com/questions/1814297/cant-load-file-data-in-the-mysql-directory),
我想让 SQL LOAD_FILE 函数正常工作,并且已经阅读了关于此的每一个问题/答案和文档,但这是正在发生的事情。 当我想从我的主目录LOAD_FILE时: mysql> SELECT LOAD_
我有几个文件要一起存储在 mysql 表的 blob 类型列中。所以我只是把它们放在一个文件夹中,然后压缩它。我在使用 load_file() 函数存储图像、文本和 pdf 文件时从来没有遇到过任何问
目标 当前的目标是,将来自任何网络用户的文件附件作为 BLOB 数据插入 MySQL 数据库。这可以来自任何文件夹 - 例如;桌面。 问题 这是唯一的路径 ---C:/ProgramData/MySQ
我正在执行 SELECT LOAD_FILE("/home/user/domains/example.com/public_html/robots.txt") AS tmp FROM tmpTable
我有一个名为“电子邮件”的文件夹,其中有两个子文件夹,以与它们所拥有的文件分类相对应的标签命名(垃圾邮件或非垃圾邮件,均为 .txt 文件)。这两个子文件夹中有 3000 个文件。使用load_fil
我正在尝试将图像插入 mysql 数据库。我正在使用以下查询。但查询不起作用。如果我删除图像插入部分它就可以工作。哪里有问题?谁能帮忙 $sql="INSERT INTO mytable ( `use
我是一名优秀的程序员,十分优秀!