PHP和PHPINFO
PHP開(kāi)放源碼和跨越平臺(tái),PHP可以運(yùn)行在WINDOWS和多種版本的LINUX上。它不需要任何預(yù)先處理而快速反饋結(jié)果,它也不需要mod_perl的調(diào)整來(lái)使您的服務(wù)器的內(nèi)存映象減小。PHP消耗的資源較少,當(dāng)PHP作為ApacheWeb服務(wù)器一部分時(shí),運(yùn)行代碼不需要調(diào)用外部二進(jìn)制程序,服務(wù)器不需要承擔(dān)任何額外的負(fù)擔(dān)。
關(guān)于PHP $_SERVER的一些使用方式
$_SERVER['HTTP_ACCEPT_LANGUAGE']//瀏覽器語(yǔ)言
$_SERVER['REMOTE_ADDR'] //當(dāng)前用戶 IP 。
$_SERVER['REMOTE_HOST'] //當(dāng)前用戶主機(jī)名
$_SERVER['REQUEST_URI'] //URL
$_SERVER['REMOTE_PORT'] //端口。
$_SERVER['SERVER_NAME'] //服務(wù)器主機(jī)的名稱(chēng)。
$_SERVER['PHP_SELF']//正在執(zhí)行腳本的文件名
$_SERVER['argv'] //傳遞給該腳本的參數(shù)。
$_SERVER['argc'] //傳遞給程序的命令行參數(shù)的個(gè)數(shù)。
$_SERVER['GATEWAY_INTERFACE']//CGI 規(guī)范的版本。
$_SERVER['SERVER_SOFTWARE'] //服務(wù)器標(biāo)識(shí)的字串
$_SERVER['SERVER_PROTOCOL'] //請(qǐng)求頁(yè)面時(shí)通信協(xié)議的名稱(chēng)和版本
$_SERVER['REQUEST_METHOD']//訪問(wèn)頁(yè)面時(shí)的請(qǐng)求方法
$_SERVER['QUERY_STRING'] //查詢(query)的字符串。
$_SERVER['DOCUMENT_ROOT'] //當(dāng)前運(yùn)行腳本所在的文檔根目錄
$_SERVER['HTTP_ACCEPT'] //當(dāng)前請(qǐng)求的 Accept: 頭部的內(nèi)容。
$_SERVER['HTTP_ACCEPT_CHARSET'] //當(dāng)前請(qǐng)求的 Accept-Charset: 頭部的內(nèi)容。
$_SERVER['HTTP_ACCEPT_ENCODING'] //當(dāng)前請(qǐng)求的 Accept-Encoding: 頭部的內(nèi)容
$_SERVER['HTTP_CONNECTION'] //當(dāng)前請(qǐng)求的 Connection: 頭部的內(nèi)容。例如:“Keep-Alive”。
$_SERVER['HTTP_HOST'] //當(dāng)前請(qǐng)求的 Host: 頭部的內(nèi)容。
$_SERVER['HTTP_REFERER'] //鏈接到當(dāng)前頁(yè)面的前一頁(yè)面的 URL 地址。
$_SERVER['HTTP_USER_AGENT'] //當(dāng)前請(qǐng)求的 User_Agent: 頭部的內(nèi)容。
$_SERVER['HTTPS']//如果通過(guò)https訪問(wèn),則被設(shè)為一個(gè)非空的值(on),否則返回off
$_SERVER['SCRIPT_FILENAME'] #當(dāng)前執(zhí)行腳本的絕對(duì)路徑名。
$_SERVER['SERVER_ADMIN'] #管理員信息
$_SERVER['SERVER_PORT'] #服務(wù)器所使用的端口
$_SERVER['SERVER_SIGNATURE'] #包含服務(wù)器版本和虛擬主機(jī)名的字符串。
$_SERVER['PATH_TRANSLATED'] #當(dāng)前腳本所在文件系統(tǒng)(不是文檔根目錄)的基本路徑。
$_SERVER['SCRIPT_NAME'] #包含當(dāng)前腳本的路徑。這在頁(yè)面需要指向自己時(shí)非常有用。
$_SERVER['PHP_AUTH_USER'] #當(dāng) PHP 運(yùn)行在 Apache 模塊方式下,并且正在使用 HTTP 認(rèn)證功能,這個(gè)變量便是用戶輸入的用戶名。
$_SERVER['PHP_AUTH_PW'] #當(dāng) PHP 運(yùn)行在 Apache 模塊方式下,并且正在使用 HTTP 認(rèn)證功能,這個(gè)變量便是用戶輸入的密碼。
$_SERVER['AUTH_TYPE'] #當(dāng) PHP 運(yùn)行在 Apache 模塊方式下,并且正在使用 HTTP 認(rèn)證功能,這個(gè)變量便是認(rèn)證的類(lèi)型
舉個(gè)兩小例子
兩種PHP獲取服務(wù)器端IP地址的方法
if('/'==DIRECTORY_SEPARATOR){
$server_ip=$_SERVER['SERVER_ADDR'];
}else{
$server_ip=@gethostbyname($_SERVER['SERVER_NAME']);
}
echo $server_ip;
/**
* 獲取服務(wù)器端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()函數(shù),該函數(shù)返回 PHP 的所有信息,包括了 PHP 的編譯選項(xiàng)及擴(kuò)充配置、PHP 版本、服務(wù)器信息及環(huán)境變量、PHP 環(huán)境變量、操作系統(tǒng)版本信息、路徑及環(huán)境變量配置、HTTP 標(biāo)頭、及版權(quán)宣告等信息。
PHPInfo()函數(shù)主要用于網(wǎng)站建設(shè)過(guò)程中測(cè)試搭建的PHP環(huán)境是否正確,很多網(wǎng)站在測(cè)試完畢后并沒(méi)有及時(shí)刪除,因此當(dāng)訪問(wèn)這些測(cè)試頁(yè)面時(shí),會(huì)輸出服務(wù)器的關(guān)鍵信息,這些信息的泄露將導(dǎo)致服務(wù)器被滲透的風(fēng)險(xiǎn)
下面我們重點(diǎn)學(xué)習(xí)一下:
(1)語(yǔ)法:int phpinfo(void);
他的返回值是一個(gè)整數(shù)
(2)使用方式:列如新建一個(gè).php文件vi test.php
輸入:<?php phpinfo(); ?>
來(lái)看一下泄漏了哪些比較敏感的信息。
1.++絕對(duì)路徑(_SERVER[“script_FILENAME”])++
找到phpinfo()頁(yè)面可以直接找到網(wǎng)站的絕對(duì)路徑,對(duì)于寫(xiě)shell和信息搜集是必不可少的。
ep1:(PHP $_SERVER['SCRIPT_FILENAME'] 與 FILE)
<?php
echo 'SCRIPT_FILENAME 為:',$_SERVER['SCRIPT_FILENAME'];
echo '<br />';
echo '__FILE__ 為:',__FILE__;
?>
上述測(cè)試代碼拷貝至 test.php 并訪問(wèn)該文件(http://localhost/test.php),得到如下結(jié)果:
SCRIPT_FILENAME 為:E:/web/html/php/test.php
__FILE__ 為:E:webhtmlphp est.php
2.++支持的程序++
可以通過(guò)phpinfo()查看一些特殊的程序服務(wù),在沒(méi)有思路的情況下,可以著重找一下ssrf
3.++泄漏真實(shí)ip(_SERVER[“SERVER_ADDR”]或SERVER_ADDR)++
4.++泄漏緩存文件地址(_FILES[“file1”])++
向phpinfo() post一個(gè)shell可以在_FILES[“file1”]中看到上傳的臨時(shí)文件,如果有個(gè)lfi,便可以直接getshell了。
5.++一些敏感配置++
allow_url_include、allow_url_fopen、disable_functions、open_basedir、short_open_tag等等。
比如allow_url_include可用來(lái)遠(yuǎn)程文件包含、disable_functions用來(lái)查看禁用函數(shù),繞過(guò)執(zhí)行、查看是否開(kāi)啟open_basedir,用p牛的繞過(guò)open_basedir的方法有可能能讀一些沒(méi)權(quán)限的目錄等等。
我們簡(jiǎn)單用圖片說(shuō)明一下
我們可以看到PHP的版本
加載的php.ini文件,我們是可以看到該文件的路徑的
還有就是php的zend(一般用于加密/提高性能)的版本和zend optimizers(一個(gè)為加速php腳本的執(zhí)行,第二為給用zend加密的文件解密)的版本
PS:如果php的腳本沒(méi)有經(jīng)過(guò)加密,那么zend optimizer可以不用安裝!
論壇文件目錄中的api里面的一些文件是經(jīng)過(guò)加密的,
supesite( SupeSite可以實(shí)現(xiàn)對(duì)站內(nèi)的論壇(Discuz!)、個(gè)人空間(X-Space)信息進(jìn)行內(nèi)容聚合。任何站長(zhǎng),都可以通過(guò)SupeSite,輕松構(gòu)建一個(gè)面向Web2.0的社區(qū)門(mén)戶。)的主程序的文件也是經(jīng)過(guò)加密的,所以對(duì)于論壇來(lái)說(shuō),如果你想使用支付寶,奇虎搜索什么的,就必須安裝zend optimizers,如果你想要安裝supesite,必須得安裝好zend optimizer!
關(guān)于zend optimizer的加速功能,一般可以讓php的執(zhí)行速度提高到30%左右!
所以如果是獨(dú)立主機(jī)用戶,最好是將zend optimizer安裝上,這樣不僅可以起到加速的作用,而且可以使你的空間完全
支持論壇和supesite!
PS:
簡(jiǎn)單介紹一下安裝過(guò)程
下載安裝包后,直接雙擊安裝即可,安裝過(guò)程要你選擇 Web Server 時(shí),選擇 Apache 2.x ,然后提示你是否 Restart Web Server,選擇是,完成安裝之前提示是否備份 php.ini ,點(diǎn)確定后安裝完成。
Zend Optimizer 的加密作用
我們自己寫(xiě)一個(gè)php文件,里面就1行代碼
<?php phpinfo(); ?>
把它保存為phpinfo.php,上傳到服務(wù)器上,然后訪問(wèn)這個(gè) PHP 文件。
如果看到里面有 Zend Optimizer 的版本信息。就說(shuō)明服務(wù)器上支持 Zend Optimizer。版本信息一般是這樣的:
with Zend Optimizer v版本號(hào), Copyright (c) 1998-2007, by Zend Technologies
只要包含有 with Zend Optimizer,說(shuō)明服務(wù)器支持 Zend Optimizer
上面指出zend的內(nèi)核版本,下面指出zend optimizers版本,要使用我們的SupeSite產(chǎn)品,必須還得安裝后者。當(dāng)然zend optimizers安裝時(shí)候,在頁(yè)面里還有專(zhuān)門(mén)有一個(gè)zend optimizers模塊,見(jiàn)圖5
加載的模塊
phpinfo會(huì)列出你的系統(tǒng)的php加載了哪些模塊,然后下面介紹幾個(gè)比較重要的模塊,第一個(gè)是gd庫(kù)模塊,很多用戶不知道他的空間或者系統(tǒng)是否支持gd庫(kù),所以不確定是否可以用水印和縮略圖功能,在phpinfo頁(yè)面,同樣可以展示gd庫(kù)的信息,包括版本,freetype庫(kù),gif支持,jpg支持,png支持等等,這些都是很有用的信息,比如支持水印圖片為gif的,那你的gd庫(kù)就有得gig支持。如圖所示:
mysql模塊
第二個(gè)重要的就是mysql模塊。很多用戶認(rèn)為只要成功安裝mysql,他就可以安裝Discuz!論壇了,其實(shí)這
是一個(gè)誤區(qū),因?yàn)槟銢](méi)有確認(rèn)你的php是否加載上了mysql支持。phpinfo就可以很好的檢驗(yàn)到。如果你的
phpinfo頁(yè)面沒(méi)有列出mysql模塊擴(kuò)展,那說(shuō)明你的環(huán)境沒(méi)有配置好
擴(kuò)展模塊
php的其他擴(kuò)展模塊吧,比如mbstring,是支持寬字符集;ftp,這是支持Discuz!論壇后臺(tái)的ftp附件,還有就是socket,這個(gè)是有些安裝了supesite播客的用戶支持影音上傳的;ming,是支持Discuz!后臺(tái)的Flash 驗(yàn)證碼的。
phpinfo實(shí)在是一個(gè)很好的檢驗(yàn)php環(huán)境的工具,大家如果遇到問(wèn)題,不妨按照我們上面的,看看是不是哪些模塊沒(méi)加載上,如果訪問(wèn)phpinfo頁(yè)面的時(shí)候變成了下載,那是你的php本身就沒(méi)安好
總結(jié)
以上是生活随笔為你收集整理的PHP和PHPINFO的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 腾讯位置服务使用全教程
- 下一篇: I2C 基础原理详解