【问题标题】:cgi-bin questioncgi-bin 问题
【发布时间】:2010-08-27 19:38:34
【问题描述】:

我可以访问共享网络主机。 安装在那里的网站使用exec()。大约 4 个月前,该功能已启用,但现在他们已将其放在 disable_functions 列表中。他们将execpassthrushell_exec 放在该列表中,但他们忘记了system:) 这让我觉得服务器管理员不太清楚他在做什么。无论如何,他们现在说这些功能不应该被启用并且他们不会重新启用它们。

安装的网站使用exec() 来启动一些可以做一些后台工作的php 脚本。现在我正在寻找是否有任何其他“合法”方式在后台启动这些 php 脚本(我希望 system() 可以工作,但也许他们将来也会禁用它)。 现在我的简单问题: 在 perdefined 文件结构中,我看到一个 cgi-bin 文件夹。它有什么用?从我在网上阅读的内容来看,它用于在通过浏览器访问时生成“动态”页面,但服务器无论如何都安装了 php,所以我看不到它的用途。

【问题讨论】:

  • 你可以使用 perl 的系统调用system("command"); 非常类似于 php,除非禁用 cgi/perl,否则它几乎不会被阻塞

标签: php cgi cgi-bin


【解决方案1】:

/cgi-bin/ 是应该放置CGI script 的目录。
您可以使用 CGI 解决 PHP 中对 exec 的限制。

创建一个名为somefile.sh 的文件,内容如下:

#!/bin/sh
printf "Content-Type: text/plain\n\n"
#your code here

这仅在 /bin/sh 实际存在且可执行(例如,如果您不在没有 /bin/sh 的 chroot 中)时才有效

有足够的方法来执行命令。如果他们禁用 CGI,您可以继续使用SSI

【讨论】:

  • 我现在收到“内部服务器错误”。我制作了 sh.sh,将权限更改为任何内容为 #!/bin/bash echo "dsfsdfsdf" 通过site.com/cgi-bin/sh.sh 访问它的人都可以执行
  • 我忘记了 CGI 脚本需要发送 Content-Type 标头。查看更新后的帖子。
猜你喜欢
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多