Discuz教程网

强大的PHP伪造IP头、Cookies、Reference……

[复制链接]
authicon dly 发表于 2012-2-15 23:17:04 | 显示全部楼层 |阅读模式
  1. <?
  2. $fp = fsockopen ("passport.baidu.com", 80, $errno, $errstr, 30);
  3. if (!$fp) {
  4. echo "$errstr ($errno)<br>\n";
  5. } else {
  6. $msg="GET /?login&username=lapiaotuan22&password=oyhz123456 HTTP/1.0\r\n";
  7. $msg.="Host:passport.baidu.com \r\n";
  8. $msg.="Referer: http://passport.baidu.com/ \r\n";

  9. $msg.="Client-IP: 202.101.201.11\r\n";
  10. $msg.="X-Forwarded-For: 202.101.201.11\r\n"; //主要是这里来构造IP
  11. $msg.="Connection: Close\r\n\r\n";
  12. fputs ($fp, $msg);
  13. while (!feof($fp)) {
  14. echo fgets ($fp,1024);
  15. }
  16. fclose ($fp);
  17. }
  18. ?>
复制代码

HTTP-REFERER这个变量已经越来越不可靠了,完全就是可以伪造出来的东东。
以下是伪造方法:
PHP(前提是装了curl):
PHP代码

  1. $ch = curl_init();
  2. curl_setopt ($ch, CURLOPT_URL, "http://www.dc9.cn/xxx.asp");
  3. curl_setopt ($ch, CURLOPT_REFERER, "http://www.dc9.cn/");
  4. curl_exec ($ch);
  5. curl_close ($ch);
复制代码

PHP(不装curl用sock)
PHP代码

  1. $server = 'www.dc9.cn';
  2. $host = 'www.dc9.cn';
  3. $target = '/xxx.asp';
  4. $referer = 'http://www.dc9.cn/'; // 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.1\r\n";
  14. $out .= "Host: $host\r\n";
  15. $out .= "Cookie: ASPSESSIONIDSQTBQSDA=DFCAPKLBBFICDAFMHNKIGKEG\r\n";
  16. $out .= "Referer: $referer\r\n";
  17. $out .= "Connection: Close\r\n\r\n";
  18. fwrite($fp, $out);
  19. while (!feof($fp))
  20. {
  21. echo fgets($fp, 128);
  22. }
  23. fclose($fp);
  24. }
复制代码

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.0\r\n";
  6. $msg.="Host: 192.168.0.128\r\n";
  7. $msg.="Referer: http://www.baidu.com\r\n";
  8. $msg.="Client-IP: 1.1.1.1\r\n";
  9. $msg.="X-Forwarded-For: 1.1.1.1\r\n"; //主要是这里来构造IP
  10. $msg.="Connection: Close\r\n\r\n";
  11. fputs ($fp, $msg);
  12. while (!feof($fp)) {
  13. echo fgets ($fp,1024);
  14. }
  15. fclose ($fp);
  16. }
复制代码

记住用fsockopen时,命令最后一定要有\r\n\r\n,不然会超时。
其实这个可以用$_SERVER['REMOTE_ADDR']来得到正确IP,但是人们为了得到代理访问IP,而采用的得到IP的方法往往不是$_SERVER['REMOTE_ADDR'],这就为我们提供了机会。
注意以上在现实中用处不是很大,因为这好像对第三方统计没有用,而现在都是用的第三方统计。





上一篇:REMOTE_ADDR HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR收藏
下一篇:Discuz X2 附件广告 V1.5 版发布,附件页提供seo优化增加站长收入!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-8-2 15:04

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表