在php中fsockopen函数可以模仿用户去访问一些网站并且还可以带一些常用的信息,如果浏览器,IP,post,get 等等数据,下面我分别一来给大家介绍介绍。
如果你要使用fsockopen函数我们必须在php.ini中把allow_url_fopen = On 设置为开启状态。
例
fsockopen() Example
代码如下 | 复制代码 |
$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30); |
伪造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提交 |