1] EXEC()的时候,你真的很有用。例如ffmpeg是通过exec调用运行的常用工具(用于各种媒体转换)。 B)运行另一个进程 - 你可以阻止或不阻止 - 这是非常强大的。有时候,你可能需要一个pcnt_fork,或者类似的,以及正确的CL args来实现非阻塞。另一个例子是当我必须处理XSLT 2.0时 - 我必须执行exec()我正在运行的一个小型java服务来处理转换。非常便利。 PHP不支持XSLT 2.0转换。
2]该死的,这是一个耻辱。 好吧,很多方法。这是一个名为“远程文件包含病毒”的漏洞家族,它基本上允许攻击者包含任意源并在服务器上执行它。 看看:http://lwn.net/Articles/203904/
另外,如上所述,说你做这样的事情(大大简化):
exec("someUnixUtility -f $_GET['arg1']");
那么,想象的攻击者,url.come ARG1 =“等等; RM你的代码基本上归结为:
exec("someUnixUtility -f blah; rm -rf /");
哪个在unix中,你分开命令w/the;所以是的 - 这可能会造成很大的损失。
同一个文件上传,想象你带的最后四个字符(.EXT),找到该扩展。 那么,这样的“exploit.php.gif”是什么东西,然后你剥离扩展名,所以你有exploit.php,你将它移动到/ users/imgs /文件夹。那么,所有攻击者现在要做的就是浏览users/imgs/exploit.php文件,他们可以运行任何他们想要的代码。你在那时已经拥有了。
谢谢,很好的例子 – JasonDavis 2010-01-09 00:09:58
是的,肯定的事情! – 2010-01-09 15:02:58