首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP和passthru中使用exec函数?

在PHP和passthru中使用exec函数?
EN

Stack Overflow用户
提问于 2010-01-08 21:55:55
回答 3查看 6.9K关注 0票数 0

你好,我有几个关于PHP ()和passthru()的问题。

1)

我从未在PHP中使用exec(),但我看到它有时与imagemagick一起使用。我现在很好奇,在web应用程序中,exec有哪些其他常见用途呢?

2)

大约6年前,当我第一次开始玩PHP的时候,我什么都不知道,只是一些非常基本的东西,我有一个被破坏的网站,有人在那里安装了自己的PHP文件,使用passthru()函数,通过我的网站下载免费音乐或视频,然后我收到了4000美元的带宽收费!6年后,我对如何使用PHP有了更多的了解,但我仍然不知道这是怎么发生在我身上的。如何才能通过错误的代码将文件添加到我的服务器?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-08 22:24:15

1] Exec()在以下情况下非常有用:

( A)希望在php没有等效命令的服务器上运行程序/实用程序。例如,ffmpeg是通过exec调用运行的通用实用程序(用于各种媒体转换)。

( B)运行另一个进程--您可以阻止也可以不阻止--这是非常强大的。有时,您可以使用一个pcnt_fork (或类似的),以及正确的用于非阻塞的CL args。

C)另一个例子是,当我必须处理XSLT2.0时,我必须执行一个小型的java服务来处理转换。非常方便。PHP不支持XSLT2.0转换。

该死,那太可惜了。有很多种方式。有一个名为“远程文件包含秃鹫”的漏洞系列,基本上允许攻击者包含任意源,从而在您的服务器上执行它。看看:http://lwn.net/Articles/203904/

另外,上面提到过,假设您所做的事情(非常简化):

代码语言:javascript
复制
exec("someUnixUtility -f $_GET['arg1']"); 

那么,假设攻击者这样做,url.come?arg1="blah;rm -rf /",您的代码基本上可以归结为:

代码语言:javascript
复制
exec("someUnixUtility -f blah; rm -rf /");

在unix中,您可以分离命令w/the;所以是的,这可能会造成很大的损害。

与文件上传一样,假设您删除了最后四个字符(.ext),以找到扩展名。那么,像"exploit.php.gif“这样的东西呢,然后去掉扩展,这样就有了exploit.php,然后将它移动到/user/imgs/文件夹中。好吧,攻击者现在所要做的就是浏览到用户/imgs/plit.php,他们可以运行他们想要的任何代码。你在那时候就已经拥有了。

票数 4
EN

Stack Overflow用户

发布于 2010-01-08 22:11:13

  1. 使用exec或当您想要运行不同的程序时。
  2. passthru文件说:

警告 当允许用户提供的数据传递给这个函数时,请使用escapeshellarg()escapeshellcmd()来确保用户不能欺骗系统执行任意命令。

可能有人在您的脚本中发现了一个安全漏洞,允许他们运行任意命令。下次使用给定的函数来清理您的输入。记住,从客户端发送的任何东西都不能被信任。

票数 1
EN

Stack Overflow用户

发布于 2010-01-08 21:58:38

exec()允许您使用服务器上的编译代码,这将比php运行得更快,后者将被解释。

因此,如果您有大量的处理需要快速完成,exec()可能是有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2031028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档