ip“伪造”

作者: 我不是鱼 (2009-07-30 17:33)分类: PHP   标签: IP伪造

发现有些程序,如discuz。在取ip的先判断 $_SERVER['HTTP_CLIENT_IP'] 再判断 $_SERVER['HTTP_X_FORWARDED_FOR'] 最后 $_SERVER['REMOTE_ADDR']。测试了一下发现 $_SERVER['HTTP_CLIENT_IP'] 和 $_SERVER['HTTP_X_FORWARDED_FOR'] 都可以伪造过来。getenv('HTTP_CLIENT_IP') 和getenv('HTTP_X_FORWARDED_FOR') 也是一样的情况。

PHP代码
  1. <?php    
  2. $fp = fsockopen("localhost", 80, $errno$errstr, 30);   
  3. if (!$fp) {   
  4.    echo "{$errstr} ({$errno})<br />\n";   
  5.    exit;   
  6. }   
  7.   
  8. $out = "GET /xuance/tttt.php HTTP/1.1\r\n";   
  9. $out .= "Host: localhost\r\n";   
  10. $out .= "CLIENT_IP: 我够假吧\r\n";   
  11. $out .= "X_FORWARDED_FOR: 我更假\r\n";   
  12. $out .= "Connection: Close\r\n\r\n";   
  13.   
  14. fwrite($fp$out);   
  15. while (!feof($fp)) {   
  16.    echo fgets($fp, 128);   
  17. }   
  18. fclose($fp);   
  19. ?>   
/xuance/tttt.php
PHP代码
  1. <?php    
  2. print_r($_SERVER);   
  3. ?>   


听说这样获取是因为服务器之前经过代理已经没法获取原来的ip了,所以这样传送过去。不过如果没有上述情况的话还要用 $_SERVER['REMOTE_ADDR']。

评论 (0) | 浏览 (11692)

前一篇: 种菠萝得菠萝
后一篇: POST的原始数据获得方法


添加评论

昵称:


博主


« 2019年-12月 »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 1 2 3 4

分类


热门标签


最新评论


最近留言


概要

  • 文章数量: 41
  • 分类数量: 9
  • 标签数量: 73
  • 评论数量: 159
  • 浏览次数: 3076995

友情链接