以前看过一篇博文说到利用MySQL中的out intofile可以进入注入,具体方法,就是通过提交一些危险内容,然后将其导出成文件。
今天再次拿起这个问题看了看,又多了一点收获。
如果要实现用into outfile把代码写到WEB目录下,取得WEBSHELL
3大先天条件:
1. 知道物理路径(into outfile 'WEB目录的物理路径')这样才能写对目录。(默认的当前目录是MySQL的数据目录)
2.能够使用union(也就是MySQL版本在3以上)
3.没有对'进行过滤(因为outfile后面的''不可以用其他函数代替转换)
2大后天条件:
1.MySQL用户拥有file_priv权限(不然就不能写文件或者把文件内容读出)
2.对web目录有写权限。
顺带说一下mysql dumpfile与outfile函数的区别
SELECT into outfile :导出到一个txt文件,可以导出每行记录的,这个很适合导库
SELECT into dump:只能导出一行数据
如果想把一个可执行二进制文件用into outfile函数导出,导出后,文件会被破坏
因为into outfile函数会在行末端写新行,更致使的是会转义换行符,这样2进制可执行文件就会被破坏
这时,我们能用into dumpfile导出一个完整能执行的2进制文件,它不对任何列或行进行终止,也不执行任何转义处理
总结:
into outfile:导出内容
into dumpfile:导出二进制文件