当前位置:Gxlcms > PHP教程 > php中fsockopen模仿post与get详解_PHP教程

php中fsockopen模仿post与get详解_PHP教程

时间:2021-07-01 10:21:17 帮助过:5人阅读

在php中fsockopen函数可以模仿用户去访问一些网站并且还可以带一些常用的信息,如果浏览器,IP,post,get 等等数据,下面我分别一来给大家介绍介绍。

如果你要使用fsockopen函数我们必须在php.ini中把allow_url_fopen = On 设置为开启状态。

fsockopen() Example

代码如下

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)
n";
} else {
$out = "GET / HTTP/1.1rn";
$out .= "Host: www.example.comrn";
$out .= "Connection: Closernrn";
fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
?>


伪造post

POST HTTP请求(URL)并获取返回值

代码如下

$srv_ip = '192.168.1.5';//你的目标服务地址.

$srv_port = 80;//端口

$url = 'http://localhost/fsock.php'; //接收你post的URL具体地址

$fp = '';

$errno = 0;//错误处理

$errstr = '';//错误处理

$timeout = 10;//多久没有连上就中断

$post_str = "username=demo&password=hahaha";//要提交的内容.

//打开网络的 Socket 链接。

$fp = fsockopen($srv_ip,$srv_port,$errno,$errstr,$timeout);

if (!$fp){

echo('fp fail');

}

$content_length = strlen($post_str);

$post_header = "POST $url HTTP/1.1rn";

$post_header .= "Content-Type: application/x-www-form-urlencodedrn";

$post_header .= "User-Agent: MSIErn";

$post_header .= "Host: ".$srv_ip."rn";

$post_header .= "Content-Length: ".$content_length."rn";

$post_header .= "Connection: closernrn";

$post_header .= $post_str."rnrn";

fwrite($fp,$post_header);

$inheader = 1;

while(!feof($fp)){//测试文件指针是否到了文件结束的位置

$line = fgets($fp,1024);

//去掉请求包的头信息

if ($inheader && ($line == "n" || $line == "rn")) {

$inheader = 0;

}

if ($inheader == 0) {

echo $line;

}

}

fclose($fp);

unset ($line);

?>

简要说明:代码第二行是你的IP地址或域名,第四行是你要POST的页面的具体地址,本例用的是fsock.php,fsock.php内容如下:

代码如下

echo "username:".$_POST['username']."
";

echo "password:".$_POST['password'];

?>


结果为:

username:demo

password:hahaha


伪造get


同时伪造post,get方法。

代码如下

//fsocket模拟post提交
$purl = "http://localhost/netphp/test2.php?uu=rrrrrrrrrrrr";
print_r(parse_url($url));
sock_post($purl,"uu=55555555555555555");
//fsocket模拟get提交
function sock_get($url, $query)
{
$info = parse_url($url);
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3);
$head = "GET ".$info['path']."?".$info["query"]." HTTP/1.0rn";
$head .= "Host: ".$info['host']."rn";
$head .= "rn";
$write = fputs($fp, $head);
while (!feof($fp))
{
$line = fread($fp,4096);
echo $line;
}
}
sock_post($purl,"uu=rrrrrrrrrrrrrrrr");
function sock_post($url, $query)
{
$info = parse_url($url);
$fp = fsockopen($info["host"], 80, $errno, $errstr, 3);
$head = "POST ".$info['path']."?".$info["query"]." HTTP/1.0rn";
$head .= "Host: ".$info['host']."rn";
$head .= "Referer: http://".$info['host'].$info['path']."rn";
$head .= "Content-type: application/x-www-form-urlencodedrn";
$head .= "Content-Length: ".strlen(trim($query))."rn";
$head .= "rn";
$head .= trim($query);
$write = fputs($fp, $head);
while (!feof($fp))
{
$line = fread($fp,4096);
echo $line;
}
}
?>


www.bkjia.comtruehttp://www.bkjia.com/PHPjc/444597.htmlTechArticle在php中fsockopen函数可以模仿用户去访问一些网站并且还可以带一些常用的信息,如果浏览器,IP,post,get 等等数据,下面我分别一来给大家介...

人气教程排行