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本身就没安好

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Pytest(6)重复运行用例pytest-repeat「建议收藏」

    Pytest(6)重复运行用例pytest-repeat「建议收藏」前言平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,

  • 制作系统U盘详细教程,以及分盘等基础操作

    制作系统U盘详细教程,以及分盘等基础操作制作系统U盘详细教程,以及分盘等基础操作一、简介相信很多朋友都会遇到系统崩溃,然后捧着电脑去电脑店,或者百度一番后做出系统盘无法使用的情况;综上:本人计算机系大三学生,虽经验较少但男女同学电脑都有我给做过的系统,因此为方便他人等,特制此教程。二、制作系统U盘前期准备制作U盘软件市面上的软件会有:大白菜、老毛桃、深度,U启动等,我也都用过,但目前我在用优启通。(一是:制作简单。二是:安…

  • 各个版本Microsoft Visual C++运行库下载

    各个版本Microsoft Visual C++运行库下载各个版本MicrosoftVisualC++运行库下载MicrosoftVisualC++2005MicrosoftVisualC++2005RedistributablePackage(x86)https://www.microsoft.com/zh-cn/download/details.aspx?id=3387MicrosoftVisualC++2…

  • LAN8720A网络模块的使用问题

    LAN8720A网络模块的使用问题一、LAN8720A模块驱动电路最近在调试STM32F4驱动LAN8720A网络模块,在做方案前参考是正点原子的LAN8720A的驱动电路方案,但是从网上买回来的LAN8720A模块用正点原子的例程一直驱动不起来,在windows系统下一直都ping不通,后面对比正点原子的LAN8720A与网上买回来的微雪LAN8720A模块的电路有差异。下图为网上买回来微雪的LAN8720A驱动电路:下…

  • webpack css_webpack打包有哪些文件

    webpack css_webpack打包有哪些文件css文件处理-准备工作(以下项目配置都是基于上一篇webpack(4)的基础上)在项目开发中,我们必然需要添加很多的样式,而样式我们往往写到一个单独的文件中。这里我们就在src目录中创建一个n

  • mac怎么上传文件到服务器_shell上传文件到服务器

    mac怎么上传文件到服务器_shell上传文件到服务器前言我们使用mac时,想让本地文件上传至服务器,该怎么办呢windows系统,我们可以使用xftp或者rz命令,那么mac呢?mac系统,我们可以使用sftp、scp或者rz命令,本文介绍sft

发表回复

您的电子邮箱地址不会被公开。

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