18

我正在尝试获取 PHP 中“隐藏”常量的可靠列表(跨请求一致)列表(例如,在大多数情况下,客户端不会在没有黑客攻击的情况下知道它)。

我感兴趣的一些事情如下:

  1. ./configure选项。
  2. 我还想要Systemphpinfo 中的第一个值。
  3. 加载的 PHP 模块(如 Apache 部分所示)
  4. PHP 的构建日期。
  5. 注册的 PHP 流
  6. 注册的流套接字传输
  7. 注册的流过滤器

如何获取 phpinfo 的一部分或将这些值作为常规字符串获取?请注意,是否包含标记并不重要,但我不想解析 phpinfo,因为这看起来真的很慢,而且肯定有更好的方法..

4

3 回答 3

22

干得好:

  1. ini_get_all()或者get_loaded_extensions() 是我能找到的最接近的
  2. php_uname()
  3. apache_get_modules()
  4. phpversion() 是我能找到的最接近的
  5. stream_get_wrappers()
  6. stream_get_transports()
  7. stream_get_filters()

另见get_defined_constants()更多


正如 Chacha102 提到的,您还可以使用输出控制函数并解析phpinfo()

ob_start();
phpinfo();
$variable = ob_get_contents();
ob_get_clean();

由于使用ob_get_clean()它不会弄乱您可能正在使用的其他输出缓冲级别。

于 2010-01-15T03:57:27.487 回答
7

phpinfo() 提供的大部分内容都可以在常量中找到。尝试浏览:

print_r(get_defined_constants());

或此页面上的功能:http: //us.php.net/manual/en/ref.info.php。有很多函数可以获取有关特定扩展的信息。

以下功能可能值得一看:

ini_get() http://us.php.net/manual/en/function.ini-get.php
getenv() http://us.php.net/manual/en/function.getenv.php
get_cfg_var() http://us.php.net/手册/en/function.get-cfg-var.php

于 2010-01-15T03:48:20.417 回答
0

也许我迟到了一点,但基本上如果你调用一个有问题的 shell 脚本到 php.exe

php -i

然后你可以解析所有需要的信息

于 2016-03-31T17:39:52.203 回答