a. 原理
由于load_file()函数相当于*nix中的cat函数,而在某些FreeBSD,Sunos系统中用cat / 命令可以列出根目录,而字符/ 的Ascii码是47,所以在MYSQL注入的时候可以试试用load_file(char(47))来查找web目录!这一方法的原理还可以参看安全天使(http://www.4ngel.net/)superhei的文章<<系统特性与web安全>>。
b. 实例
这一方法在Sunos系统上的具体实例可以参考我发布在网上的文章<<由Jsp MYSQL注入到root权限全程展>>。下面补个FreeBSD上测试
是用load_file(char(47,101,116,99,47,112,97,115,115,119,100))读取/etc/passwd得到MYSQL服务器的操作系统是FreeBSD。
用load_file(char(47))列出了此FreeBSD系统的根目录。读取/etc/passwd中apache的工作目录得到web路径。这个方法就不需要多加解释了,下面给个实例!
可以得到apache的工作目录是/www,且可以猜测web路径是/www。读取apache的配置文件httpd.conf获取web路径。
*nix 系统的apache的配置文件httpd.conf一般位于/etc/httpd/conf/httpd.conf或者位于 /usr/local/apche/conf/httpd.conf中;Windows系统的httpd.conf文件一般位于c:Program FilesApache GroupApacheconf httpd.conf或者C:apacheconf httpd.conf,也可以换盘符c为d等试试。
实例
下面是在linux上测试结果,图中的Ascii码 47,117,115,114,47,108,111,99,97,108,47,97,112,97,99,104,101,47,99,111,110,102,47,104,116,116,112,100,46,99,111,110,102 是由字符串/usr/local/apache/conf/httpd.conf转换得到的。
可以知道DocumentRoot是/www,即得到web路径是/www。这几个方法有不少人早已发现,我只是做个总结,让广大MYSQL爱好者都能掌握。