PHP和PHPINFO

PHP和PHPINFOPHP开放源码和跨越平台,PHP可以运行在WINDOWS和多种版本的LINUX上。它不需要任何预先处理而快速反馈结果,它也不需要mod_perl的调整来使您的服务器的内存映象减小。PHP消耗的资源较少

大家好,又见面了,我是你们的朋友全栈君。

PHP开放源码和跨越平台,PHP可以运行在WINDOWS和多种版本的LINUX上。它不需要任何预先处理而快速反馈结果,它也不需要mod_perl的调整来使您的服务器的内存映象减小。PHP消耗的资源较少,当PHP作为ApacheWeb服务器一部分时,运行代码不需要调用外部二进制程序,服务器不需要承担任何额外的负担。


关于PHP $_SERVER的一些使用方式

$_SERVER['HTTP_ACCEPT_LANGUAGE']//浏览器语言 
$_SERVER['REMOTE_ADDR'] //当前用户 IP 。 
$_SERVER['REMOTE_HOST'] //当前用户主机名 
$_SERVER['REQUEST_URI'] //URL

$_SERVER['REMOTE_PORT'] //端口。 
$_SERVER['SERVER_NAME'] //服务器主机的名称。 
$_SERVER['PHP_SELF']//正在执行脚本的文件名 
$_SERVER['argv'] //传递给该脚本的参数。 
$_SERVER['argc'] //传递给程序的命令行参数的个数。 
$_SERVER['GATEWAY_INTERFACE']//CGI 规范的版本。 
$_SERVER['SERVER_SOFTWARE'] //服务器标识的字串 
$_SERVER['SERVER_PROTOCOL'] //请求页面时通信协议的名称和版本 
$_SERVER['REQUEST_METHOD']//访问页面时的请求方法 
$_SERVER['QUERY_STRING'] //查询(query)的字符串。 
$_SERVER['DOCUMENT_ROOT'] //当前运行脚本所在的文档根目录 
$_SERVER['HTTP_ACCEPT'] //当前请求的 Accept: 头部的内容。 
$_SERVER['HTTP_ACCEPT_CHARSET'] //当前请求的 Accept-Charset: 头部的内容。 
$_SERVER['HTTP_ACCEPT_ENCODING'] //当前请求的 Accept-Encoding: 头部的内容 
$_SERVER['HTTP_CONNECTION'] //当前请求的 Connection: 头部的内容。例如:“Keep-Alive”。 
$_SERVER['HTTP_HOST'] //当前请求的 Host: 头部的内容。 
$_SERVER['HTTP_REFERER'] //链接到当前页面的前一页面的 URL 地址。 
$_SERVER['HTTP_USER_AGENT'] //当前请求的 User_Agent: 头部的内容。 
$_SERVER['HTTPS']//如果通过https访问,则被设为一个非空的值(on),否则返回off 
$_SERVER['SCRIPT_FILENAME'] #当前执行脚本的绝对路径名。 
$_SERVER['SERVER_ADMIN'] #管理员信息 
$_SERVER['SERVER_PORT'] #服务器所使用的端口 
$_SERVER['SERVER_SIGNATURE'] #包含服务器版本和虚拟主机名的字符串。 
$_SERVER['PATH_TRANSLATED'] #当前脚本所在文件系统(不是文档根目录)的基本路径。 
$_SERVER['SCRIPT_NAME'] #包含当前脚本的路径。这在页面需要指向自己时非常有用。 
$_SERVER['PHP_AUTH_USER'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的用户名。 
$_SERVER['PHP_AUTH_PW'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是用户输入的密码。 
$_SERVER['AUTH_TYPE'] #当 PHP 运行在 Apache 模块方式下,并且正在使用 HTTP 认证功能,这个变量便是认证的类型

  • 举个两小例子
    两种PHP获取服务器端IP地址的方法
if('/'==DIRECTORY_SEPARATOR){
   $server_ip=$_SERVER['SERVER_ADDR'];
}else{
   $server_ip=@gethostbyname($_SERVER['SERVER_NAME']);
}
echo $server_ip;
/**
* 获取服务器端IP地址
* @return string
*/

function get_server_ip(){
   if(isset($_SERVER)){
       if($_SERVER['SERVER_ADDR']){
           $server_ip=$_SERVER['SERVER_ADDR'];
       }else{
           $server_ip=$_SERVER['LOCAL_ADDR'];
       }
   }else{
       $server_ip = getenv('SERVER_ADDR');
   }
   return $server_ip;
}

echo get_server_ip();

为什么要使用phpinfo呢?

这一部分非常非常重要

  • PHP中提供了PHPInfo()函数,该函数返回 PHP 的所有信息,包括了 PHP 的编译选项及扩充配置、PHP 版本、服务器信息及环境变量、PHP 环境变量、操作系统版本信息、路径及环境变量配置、HTTP 标头、及版权宣告等信息。

  • PHPInfo()函数主要用于网站建设过程中测试搭建的PHP环境是否正确,很多网站在测试完毕后并没有及时删除,因此当访问这些测试页面时,会输出服务器的关键信息,这些信息的泄露将导致服务器被渗透的风险

下面我们重点学习一下:

(1)语法:int phpinfo(void);
他的返回值是一个整数
(2)使用方式:列如新建一个.php文件vi test.php
输入:<?php phpinfo(); ?>

来看一下泄漏了哪些比较敏感的信息。
1.++绝对路径(_SERVER[“script_FILENAME”])++
找到phpinfo()页面可以直接找到网站的绝对路径,对于写shell和信息搜集是必不可少的。
ep1:(PHP $_SERVER[‘SCRIPT_FILENAME’] 与 FILE)

<?php
echo 'SCRIPT_FILENAME 为:',$_SERVER['SCRIPT_FILENAME'];
echo '<br />';
echo '__FILE__ 为:',__FILE__;
?>

上述测试代码拷贝至 test.php 并访问该文件(http://localhost/test.php),得到如下结果:

SCRIPT_FILENAME 为:E:/web/html/php/test.php
__FILE__ 为:E:\web\html\php\test.php 

2.++支持的程序++
可以通过phpinfo()查看一些特殊的程序服务,在没有思路的情况下,可以着重找一下ssrf

3.++泄漏真实ip(_SERVER[“SERVER_ADDR”]或SERVER_ADDR)++

4.++泄漏缓存文件地址(_FILES[“file1”])++
向phpinfo() post一个shell可以在_FILES[“file1”]中看到上传的临时文件,如果有个lfi,便可以直接getshell了。

5.++一些敏感配置++
allow_url_include、allow_url_fopen、disable_functions、open_basedir、short_open_tag等等。
比如allow_url_include可用来远程文件包含、disable_functions用来查看禁用函数,绕过执行、查看是否开启open_basedir,用p牛的绕过open_basedir的方法有可能能读一些没权限的目录等等。

我们简单用图片说明一下
<span role="heading" aria-level="2">PHP和PHPINFO

  1. 我们可以看到PHP的版本
    <span role="heading" aria-level="2">PHP和PHPINFO

  2. 加载的php.ini文件,我们是可以看到该文件的路径的
    <span role="heading" aria-level="2">PHP和PHPINFO

  3. 还有就是php的zend(一般用于加密/提高性能)的版本和zend optimizers(一个为加速php脚本的执行,第二为给用zend加密的文件解密)的版本
    PS:如果php的脚本没有经过加密,那么zend optimizer可以不用安装!

    论坛文件目录中的api里面的一些文件是经过加密的,
    supesite( SupeSite可以实现对站内的论坛(Discuz!)、个人空间(X-Space)信息进行内容聚合。任何站长,都可以通过SupeSite,轻松构建一个面向Web2.0的社区门户。)的主程序的文件也是经过加密的,所以对于论坛来说,如果你想使用支付宝,奇虎搜索什么的,就必须安装zend optimizers,如果你想要安装supesite,必须得安装好zend optimizer!

    关于zend optimizer的加速功能,一般可以让php的执行速度提高到30%左右!
    所以如果是独立主机用户,最好是将zend optimizer安装上,这样不仅可以起到加速的作用,而且可以使你的空间完全
    支持论坛和supesite!

PS:
简单介绍一下安装过程

下载安装包后,直接双击安装即可,安装过程要你选择 Web Server 时,选择 Apache 2.x ,然后提示你是否 Restart Web Server,选择是,完成安装之前提示是否备份 php.ini ,点确定后安装完成。

Zend Optimizer 的加密作用

我们自己写一个php文件,里面就1行代码
<?php phpinfo(); ?>
把它保存为phpinfo.php,上传到服务器上,然后访问这个 PHP 文件。
如果看到里面有 Zend Optimizer 的版本信息。就说明服务器上支持 Zend Optimizer。版本信息一般是这样的:
with Zend Optimizer v版本号, Copyright (c) 1998-2007, by Zend Technologies
只要包含有 with Zend Optimizer,说明服务器支持 Zend Optimizer

<span role="heading" aria-level="2">PHP和PHPINFO

  1. 上面指出zend的内核版本,下面指出zend optimizers版本,要使用我们的SupeSite产品,必须还得安装后者。当然zend optimizers安装时候,在页面里还有专门有一个zend optimizers模块,见图5
    <span role="heading" aria-level="2">PHP和PHPINFO

  2. 加载的模块
    phpinfo会列出你的系统的php加载了哪些模块,然后下面介绍几个比较重要的模块,第一个是gd库模块,很多用户不知道他的空间或者系统是否支持gd库,所以不确定是否可以用水印和缩略图功能,在phpinfo页面,同样可以展示gd库的信息,包括版本,freetype库,gif支持,jpg支持,png支持等等,这些都是很有用的信息,比如支持水印图片为gif的,那你的gd库就有得gig支持。如图所示:
    <span role="heading" aria-level="2">PHP和PHPINFO

  3. mysql模块
    第二个重要的就是mysql模块。很多用户认为只要成功安装mysql,他就可以安装Discuz!论坛了,其实这
    是一个误区,因为你没有确认你的php是否加载上了mysql支持。phpinfo就可以很好的检验到。如果你的
    phpinfo页面没有列出mysql模块扩展,那说明你的环境没有配置好

  4. 扩展模块
    php的其他扩展模块吧,比如mbstring,是支持宽字符集;ftp,这是支持Discuz!论坛后台的ftp附件,还有就是socket,这个是有些安装了supesite播客的用户支持影音上传的;ming,是支持Discuz!后台的Flash 验证码的。

phpinfo实在是一个很好的检验php环境的工具,大家如果遇到问题,不妨按照我们上面的,看看是不是哪些模块没加载上,如果访问phpinfo页面的时候变成了下载,那是你的php本身就没安好

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154894.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 51单片机最小系统原理图、PCB及组成原理详解「建议收藏」

    51单片机最小系统原理图、PCB及组成原理详解「建议收藏」单片机:单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。先上原理图和PCB,原理介绍…

    2022年6月2日
    46
  • 免费且好玩的API接口

    免费且好玩的API接口

    2021年11月11日
    113
  • nodejs安装淘宝镜像(配置淘宝镜像)

    强烈推荐30个原生JavaScript的demo,包括canvas时钟特效、自定义视频播放器、搜索栏快速匹配、fetch访问资源、console调试技巧等,先fork后学习,详见点击打开链接,欢迎点赞~~~谢谢,共同进步学习!将npm的注册表源设置为国内的镜像1、国内用户,建议将npm的注册表源设置为国内的镜像,可以大幅提升安装速度2、国内优秀npm镜像推荐及使用:http://rin…

    2022年4月18日
    943
  • 算法学习笔记——贪婪

    算法学习笔记——贪婪

    2022年1月6日
    357
  • linux网络配置出现E325,打开Vi编辑器出现E325: ATTENTION的解决方法

    linux网络配置出现E325,打开Vi编辑器出现E325: ATTENTION的解决方法当打开Vi编辑器时出现以下的提示时不要着急E325:ATTENTIONFoundaswapfilebythename”/etc/.profile.swp”ownedby:rootdated:WedJul1410:01:102010filename:/etc/profilemodified:YESusername:roothostname:zh…

    2022年5月19日
    49
  • java三大框架要学多久_新手学习SSH三大框架的几点建议[通俗易懂]

    java三大框架要学多久_新手学习SSH三大框架的几点建议[通俗易懂]说起三大框架,目前人们常用的是SSM,有人会认为SSH框架已经落后被淘汰了,其实这样说也不完全对。它毕竟实现了经典的MVC框架的基本功能,在有些项目还会用到。正因为用得不多,反而会出现很多问题。同时SSH在教学中也会被经常用到,笔者觉得SSH在教学中存在的意义在于能够帮助学习者理解经典MVC框架的原理。下面就简单谈一谈作为新手如何学习SSH。所谓SSH展开来讲包括了struts、spring、hi…

    2022年7月7日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号