前段时间班里有十佳的投票,看到其他学院的把票神奇地刷了很高,所以自己百度了一下破解的方法,下次有需要再用。
一般都是换IP,用代理之类的。
转载的这篇有点技术含量,是利用网站的漏洞抓数据包来破解的,网页代码是PHP,转过以后再看懂它。
转自http://www.sharejs.com/codes/html/6826
针对限制ip的投票网站作弊方案,这个方法利用了投票网站监测远程ip的一些漏洞来实现,并没有真正的伪造ip地址,http是建立的tcp之上的第七层,是不可能伪造真实ip地址的
POST /vote/view.php?sid=33&act=vote HTTP/1.1
Accept: */*
Referer: http://www.qdnfy.gov.cn/vote/vote.php
Content-Type: application/x-www-form-urlencoded
X-Forwarded-For: 218.20.218.200
CLIENT_IP: 218.20.218.200
VIA: 218.20.218.200
REMOTE_ADDR: 218.20.218.200
Accept-Language: zh-cn
Accept-Encoding: text
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)
Host: www.qdnfy.gov.cn
Cookie: PHPSESSID=pldjnb6scereodjm5niqb9q990
Content-Length: 49
Connection: Close
X-Forwarded-For 发现了这个http头参数
后面跟着IP,呵呵,这个参数肯定有来头,原来我一直不知道,呵呵,赶紧百度一下。
下面是百度后的一篇说明文章,说得很好,大家看看。
--------------------------------------------------------------------------------
伪造HTTP头中的X-Forwarded-For字段来伪造IP
百度了一下X-Forwarded-For的原理,这东西出来好长时间了.我还第一次听说
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP
代理或者负载均衡服务器时才会添加该项。
它不是RFC中定义的标准请求头信息,在squid缓存代理服务器开发文档中可以找到该项的详细介绍。
标准格式如下:
X-Forwarded-For:
client1, proxy1,
proxy2
从标准格式可以看出,X-Forwarded-For头信息可以有多个,中间用逗号分隔,第一项为真实的客户端ip,剩下的就是曾经经过的代理或负载均衡的ip地址,经过几个就会出现几个。
wiki
的X-Forwarded-For解释
http://en.wikipedia.org/wiki/X-Forwarded-For
分析:
既然是要伪造客户端IP,那我们先看看一般是怎样获取客户端IP地址的(以php为例).这段代码是在百度搜索到的.大部分网站可能都用这段代码
<!--该代码片段来自于: http://www.sharejs.com/codes/html/6826-->
$user_IP = ($_SERVER["HTTP_VIA"]) ? //是否使用了代理
$_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
//获取失败则从REMOTE_ADDR获取
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
?>
首先判断HTTP_VIA头是否存在,HTTP_VIA头代表是否使用了代理服务器.如果没有那就从REMOTE_ADDR字段获取客户端的IP地址,如果有那就从X-Forwarded-For获取客户端I
我估计很多程序员都是从百度来的代码吧.asp也类似
然后我们来测试一下.
服务端代码
//输出HTTP_X_FORWARDED_FOR
echo "HTTP_X_FORWARDED_FOR:".$_SERVER["HTTP_X_FORWARDED_FOR"];
//输出REMOTE_ADDR echo "REMOTE_ADDR:". $_SERVER["REMOTE_ADDR"];
?>
可以看到获取到的客户端ip地址是不一样的.REMOTE_ADDR为真实地址
所以一个网站如果是从X-Forwarded-For来判断客户端IP地址的话,那么我们就可以利用这个逻辑漏洞刷票