当前位置:首页 > PHP教程 > php应用 > 列表

php 伪造ip地址来源实现程序

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-01 16:30:39 浏览: 评论:0 

今天我们来做一个简单的假的ip地址访问网站,这个可以利用php curl或fsockopen来实现,有需要的同学可以参考一下方案很简单的,不过此方案不完美对第三方工具没有用.

HTTP-REFERER这个变量已经越来越不可靠了,完全就是可以伪造出来的东东.

1.php 请求 2.php 。

1.php代码:

  1. $ch = curl_init(); 
  2. curl_setopt($ch, CURLOPT_URL, "http://localhost/2.php"); 
  3. curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:8.8.8.8''CLIENT-IP:8.8.8.8'));  //构造IP 
  4. curl_setopt($ch, CURLOPT_REFERER, "http://www.google.com/ ");   //构造来路 
  5. curl_setopt($ch, CURLOPT_HEADER, 1); 
  6. $out = curl_exec($ch); 
  7. curl_close($ch); 

2.php代码如下: 

  1. function getClientIp() { 
  2.     if (!emptyempty($_SERVER["HTTP_CLIENT_IP"])) 
  3.         $ip = $_SERVER["HTTP_CLIENT_IP"]; 
  4.     else if (!emptyempty($_SERVER["HTTP_X_FORWARDED_FOR"])) 
  5.         $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; 
  6.     else if (!emptyempty($_SERVER["REMOTE_ADDR"])) 
  7.         $ip = $_SERVER["REMOTE_ADDR"]; 
  8.     else 
  9.         $ip = "err"
  10.     return $ip
  11. echo "IP: " . getClientIp() . ""
  12. echo "referer: " . $_SERVER["HTTP_REFERER"]; 

伪造成功,这是不是给“刷票”的朋友提供了很好的换IP的方案,再看一下相对复杂的处理办法,PHP(前提是装了curl),PHP代码如下:

  1. $ch = curl_init();  
  2. curl_setopt ($ch, CURLOPT_URL, "http://www.phpfensi.com");  
  3. curl_setopt ($ch, CURLOPT_REFERER, "http://www.phpfensi.com/");  
  4. curl_exec ($ch);  
  5. curl_close ($ch);  

PHP(不装curl用sock),代码如下:

  1. $server = '127.0.0.1';  
  2. $host = '127.0.0.1';  
  3. $target = '/xxx.asp';  
  4. $referer = 'http://127.0.0.1/'; // Referer  
  5. $port = 80;  
  6. $fp = fsockopen($server$port$errno$errstr, 30);  
  7. if (!$fp)  
  8. {  
  9. echo "$errstr ($errno)<br />n";  
  10. }  
  11. else  
  12. {  
  13. $out = "GET $target HTTP/1.1rn";  
  14. $out .= "Host: $hostrn";  
  15. $out .= "Cookie: ASPSESSIONIDSQTBQSDA=DFCAPKLBBFICDAFMHNKIGKEGrn";  
  16. $out .= "Referer: $refererrn";  
  17. $out .= "Connection: Closernrn";  
  18. fwrite($fp$out);  
  19. while (!feof($fp))  
  20. {  
  21. echo fgets($fp, 128);  
  22. }  
  23. fclose($fp);  

IP也可以伪造,代码如下:

  1. $fp = fsockopen ("192.168.0.128", 80, $errno$errstr, 30); 
  2. if (!$fp) { 
  3. echo "$errstr ($errno)<br>n"
  4. else { 
  5. $msg="GET /003.php HTTP/1.0rn"
  6. $msg.="Host: 192.168.0.128rn"
  7. $msg.="Referer: http://www.phpfensi.comrn"
  8.  
  9. $msg.="Client-IP: 1.1.1.1rn"
  10. $msg.="X-Forwarded-For: 1.1.1.1rn"//主要是这里来构造IP 
  11. $msg.="Connection: Closernrn"
  12. fputs ($fp$msg); 
  13. while (!feof($fp)) { 
  14. echo fgets ($fp,1024); 
  15. fclose ($fp); 

记住用fsockopen时,命令最后一定要有rnrn,不然会超时.

其实这个可以用$_SERVER['REMOTE_ADDR']来得到正确IP,但是人们为了得到代理访问IP,而采用的得到IP的方法往往不是$_SERVER['REMOTE_ADDR'],这就为我们提供了机会.

Tags: php 伪造ip地址 来源实现

分享到: