url伪造Referer来路方法汇总

php 伪造ip以及url来路信息方法汇总

<?php
$host = “www.3se.cc“; //你要访问的域名
$target = “/test.asp”; //你要访问的页面地址
$referer = “http://ww.3se.cc/“; //伪造来路页面
$fp = fsockopen($host, 80, $errno, $errstr, 30);
if(!$fp){
echo “$errstr($errno)<br />\n”;
}else{
$out = ”
GET $target HTTP/1.1
Host: $host
Referer: $referer
Connection: Close\r\n\r\n”;
fwrite($fp, $out);
while(!feof($fp)){
echo fgets($fp, 1024);
}
fclose($fp);
}
?>
______________________________________________________________

var url = “http://ww.3se.cc“;  

var param = “name=david&age=30”;  

var obj = new ActiveXObject(“WinHttp.WinHttpRequest.5.1”);  

obj.Open(“POST”, url, false);  

obj.Option(4) = 13056;  

obj.Option(6) = false; //false可以不自动跳转,截取服务端返回的302状态。  

obj.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);  

obj.setRequestHeader(“Referer”, “http://www.baidu.com“);  

obj.Send(param);  

WScript.Echo(obj.responseText);

上面保存成.js  调用

_________________________________________________________________

很多投票都有对来路的网址和IP进行验证,但是使用CURL可以伪造成任意的网址与IP,以绕过一些简单的验证,下面举一个简单的例子。

程序运行之前,请确保 php.ini 中 extension=php_curl.dll 没有被注释掉。

test.php

<?php $ch = curl_init();   curl_setopt($ch, CURLOPT_URL, "http://localhost/test_2.php");   curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8', 'CLIENT-IP:8.8.8.8'));  //构造IP   curl_setopt($ch, CURLOPT_REFERER, "http://www.phprm.com);   //构造来路   curl_setopt($ch, CURLOPT_HEADER, 1);   $out = curl_exec($ch);   curl_close($ch); ?>

test.php 会向 test_2.php 发送请求。

<?php function getClientIp() {   if (!empty($_SERVER["HTTP_CLIENT_IP"]))   $ip = $_SERVER["HTTP_CLIENT_IP"];   else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))   $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];   else if (!empty($_SERVER["REMOTE_ADDR"]))   $ip = $_SERVER["REMOTE_ADDR"];   else   $ip = "err";   return $ip;   }    echo "<br />IP: " . getClientIp() . "";   echo "<br />referer: " . $_SERVER["HTTP_REFERER"]; ?>

程序运行结果如下:

HTTP/1.1 200 OK Date: Tue, 01 Nov 2011 12:20:06 GMT Server: Apache/2.2.11 (Win32) DAV/2 mod_ssl/2.2.11 OpenSSL/0.9.8i PHP/5.2.9 X-Powered-By: PHP/5.2.9 Content-Length: 53 Content-Type: text/html IP: 8.8.8.8referer: http://www.phprm.com/

看到了吧,IP和地址可以随意换,对于很多投票机制不完善的投票功能都可以使用这个进行刷票了。

顺便说一下,关于真实IP的事情。

一般获得用户IP都是使用$_SERVER[‘REMOTE_ADDR’]这个环境变量,但是此变量只会纪录最后一个主机IP,所以当用户浏览器有设定Proxy时,就无法取得他的真实IP。

这时可以使用另一个环境变量$_SERVER[‘HTTP_X_FORWARDED_FOR’] ,它会纪录所经过的主机IP,但是只有在用户有透过Proxy时才会产生,所以可以像以下这样写来取得使用者真实IP。

<?php  if ( empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) {   $myip = $_SERVER['REMOTE_ADDR'];  } else  {      $myip = explode( ',' , $_SERVER['HTTP_X_FORWARDED_FOR']);      $myip = $myip [0];  }  echo $myip;  ?>
版权声明:admin 发表于 2020-03-02 12:52:11。
转载请注明:url伪造Referer来路方法汇总 | 甄选网

暂无评论

暂无评论...