邪恶八进制信息安全团队技术讨论组's Archiver

天下第七 2006-3-27 02:07

[转载]使用socket代替fopen直接读取的PHP函数

信息来源:网络
可以伪装成本站来源和XP SP2的客户端,从而躲过一些站点的检查

[code]function get($url)
{
$url = eregi_replace('^http://', '', $url);
$temp = explode('/', $url);
$host = array_shift($temp);
$path = '/'.implode('/', $temp);
$temp = explode(':', $host);
$host = $temp[0];
$port = isset($temp[1]) ? $temp[1] : 80;

$fp = @fsockopen($host, $port, &$errno, &$errstr, 30);
if ($fp)
{
@fputs($fp, "GET $path HTTP/1.1\r\n");
@fputs($fp, "Host: $host\r\n");
@fputs($fp, "Accept: */*\r\n");
@fputs($fp, "Referer: [url]http://$host/[/url]\r\n");
@fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n");
@fputs($fp, "Connection: Close\r\n\r\n");
}

$Content = '';
while ($str = @fread($fp, 4096))
$Content .= $str;
@fclose($fp);

return $Content;
}
[/code]

天下第七 2006-3-27 02:21

补充一点
$pos=strpos($Content,"\r\n\r\n");
$text=substr($Content,$pos+4);
echo $text;

天下第七 2006-3-27 02:42

童给我的代码如下发现有错误
[code]<?php
ob_start();

$host=$_GET[&#39;host&#39;];
$port=$_GET[&#39;port&#39;];
$path=$_GET[&#39;path&#39;];
$fp = fsockopen($host, $port, $errno, $errstr, 30);
if ($fp)
{
@fputs($fp, "GET $path HTTP/1.1\r\n");
@fputs($fp, "Host: $host\r\n");
@fputs($fp, "Accept: */*\r\n");
@fputs($fp, "Referer: [url]http://$host/[/url]\r\n");
@fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n");
@fputs($fp, "Connection: Close\r\n\r\n");
}

$Content = &#39;&#39;;
while ($str = fread($fp, 4096))
$Content .= $str;
@fclose($fp);
$pos=strpos($Content,"\r\n\r\n");
$head=substr($Content,0,$pos);
$text=substr($Content,$pos+4);
header($head);
echo $text;
?>
[/code]

[b]错误出在倒数第三行。修改以后,完整的如下[/b]<?php
ob_start();

$host=$_GET[&#39;host&#39;];
$port=$_GET[&#39;port&#39;];
$path=$_GET[&#39;path&#39;];
$fp = fsockopen($host, $port, $errno, $errstr, 30);
if ($fp)
{
@fputs($fp, "GET $path HTTP/1.1\r\n");
@fputs($fp, "Host: $host\r\n");
@fputs($fp, "Accept: */*\r\n");
@fputs($fp, "Referer: [url]http://$host/[/url]\r\n");
@fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n");
@fputs($fp, "Connection: Close\r\n\r\n");
}

$Content = &#39;&#39;;
while ($str = fread($fp, 4096))
$Content .= $str;
@fclose($fp);
$pos=strpos($Content,"\r\n\r\n");
$text=substr($Content,$pos+4);
echo $text;
?>

页: [1]
© 1999-2008 EvilOctal Security Team