前段時間班里有十佳的投票,看到其他學院的把票神奇地刷了很高,所以自己百度了一下破解的方法,下次有需要再用。
一般都是換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地址的話,那么我們就可以利用這個邏輯漏洞刷票

