How can I find the version of php that is running on a distinct domain name?
How can I find the version of php that is running on a distinct server with distinct domain name? (like www.abc.com) It is not my server, no ftp access for making a php file with this code:
<?ph开发者_运维百科p
echo PHP_VERSION;
?>
This works for me:
curl -I http://websitename.com
Which shows results like this or similar including the PHP version:
HTTP/1.1 200 OK
Date: Thu, 13 Feb 2014 03:40:38 GMT
Server: Apache
X-Powered-By: PHP/5.4.19
P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
Cache-Control: no-cache
Pragma: no-cache
Set-Cookie: 7b79f6f1623da03a40d003a755f75b3f=87280696a01afebb062b319cacd3a6a9; path=/
Content-Type: text/html; charset=utf-8
Note that if you receive this message:
HTTP/1.1 301 Moved Permanently
You may need to curl the www version of the website instead i.e.:
curl -I http://www.websitename.com
I use redbot, a great tool to see the PHP version, but also many other useful infos like headers, encoding, keepalive and many more.
Try it on
http://redbot.org
I love it!
I also up vote Neil's answer: curl -I http://websitename.com
Sometimes, PHP will emit a X-Powered-By:
response header which you can look at e.g. using Firebug.
If this setting (controlled by the ini setting expose_php
) is turned off (it often is), there is no way to tell the PHP version used - and rightly so. What PHP version is running is none of the outside world's business, and it's good to obscure this from a security perspective.
There is a surprisingly effective way that consists of using the easter eggs.
They differ from version to version.
By chance: Default error pages often contain detailed information, e.g.
Apache/{Version} ({OS}) {Modules} PHP/{Version} {Modules} Server at {Domain}
Not so easy: Find out which versions of PHP applications run on the server and which version of PHP they require.
Another approach, only mentioned for the sake of completeness; please forget after reading: You could (but you won't!) detect the PHP version by trying known exploits.
I suggest you much easier and platform independent solution to the problem - wappalyzer for Google Chrome:
See here
Possibly use something like firefox's tamperdata and look at the header returned (if they have publishing enabled).
There is a possibility to find the PHP version of other domain by checking "X-Powered-By" response header in the browser through developer tools as other already mentioned it. If it is not exposed through the php.ini configuration there is no way you can get it unless you have access to the server.
As this questions was asked with PHP implied as the tool to use to extract the PHP version information for any website, I felt that the code provides a working solution to the question.
The class below is used to extract the headers given a set of cURL parameters ($opts).
class get_site_php_info {
public $headers;
public function __construct() {
$this->headers = array();
}
public function fetch_headers($opts){
$opts[CURLOPT_HEADERFUNCTION] = array($this, '_setHeader');
$ch = curl_init();
curl_setopt_array($ch, $opts);
return curl_exec($ch);
}
private function _setHeader($ch, $header) {
$this->headers[] = $header;
return strlen($header);
}
}
This class is called when a URL is submitted in the form specified in the code below.
echo "<h1>Get Site Header Information</h1>";
echo "<h3>Domain input form</h3>";
echo "<form action='" . $_SERVER['PHP_SELF'] . "' method='post' enctype=''>" .
"<table>" .
"<tr><td>Enter URL: </td>" .
"<td><input type='text' name='url' value='' size='40' maxlength='128' placeholder='your domain here' /></td>" .
"</tr>" .
"<tr><td colspan='2'><input type='hidden' name='action' value='submitted' />" .
"<input type='submit' name='submit' value='Submit' /> " .
"<input type='reset' value='Reset' /></td></tr>" .
"</table>" .
"</form>";
if (isset($_POST['action']) && $_POST['action'] == "submitted") {
echo "<h4>Output</h4>";
if ($_POST['url']) {
$url = substr($_POST['url'], 0, 4) == 'http'? $_POST['url']: 'http://' . $_POST['url'];
echo "<h3>General [" . $url . "]</h3>";
$opts = array(
CURLOPT_URL => $url, // set the URL
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 3,
);
$info = new get_site_php_info;
$data = $info->fetch_headers($opts);
echo "<h3>Headers</h3><pre>" . var_export($info->headers, true) . "</pre>";
} else {
echo "<p>The field is not set!!</p>";
}
echo "<p><a href='" . $_SERVER['PHP_SELF'] . "'>Try again</a></p>";
}
I am sure that the code and cURL options can be improved but this provides a working PHP code for extracting the headers that allow the PHP version and other information to be extracted. Helow is a sample output:
I hope that this code is useful to someone and saves a bit of time.
You can’t. One reason is that not every web site uses PHP. And another reason is: Even if there are some signs that PHP might be used (e.g. .php
file name extension, some “PHPSESSID” parameter, X-Powered-By header field containing “PHP”, etc.) those information might be spoofed to let you think PHP is used.
THE ANSWER IS : NMAP PROGRAM
THANKS FOR YOUR ATTENTIONS ...
another way is getting HTTP Headers by this site (http://web-sniffer.net/) or firefox add-on for getting HTTP Headers...
Best Regards
精彩评论