利用HTML實現限制ip的投票網站作弊方案_HTML/Xhtml_網頁製作

WBOY
發布: 2016-05-16 16:36:42
原創
1528 人瀏覽過

  對限制ip的投票網站作弊方案,這個方法利用了投票網站監測遠端ip的一些漏洞來實現,並沒有真正的偽造ip位址,http是建立的tcp之上的第七層,是不可能偽造真實ip位址的最近朋友需要一個投票軟體,我最近也就研究了一下這個投票網站,這個投票網站有驗證碼,每個IP限制為一票,看起來是標準的投票網站。我先研究了一下驗證碼:

  這個投票網站的驗證碼開始很簡單,標準位置的標準四個數字,很好識別。後來變態到位數不一定,而且還有字母,而且還位置上下不一定,這下驗證碼的識別,不但是軟體很難識別,就連人工識別都困難。山窮水盡疑無路,柳暗花明又一村,請看下段分解!

  在我不斷的分析和研究發現他的驗證碼檢查有漏洞,發現了這個漏洞,這個驗證碼已經形同虛設,無需識別,無需驗證碼,直接就繞過去了,因為他只在投票選項頁設定檢查驗證碼是否為空的js程式碼,js程式碼是運行在客戶端,這種驗證的效果為零,一般JS這種驗證只是為了方便用戶來使用的,做為投票網站只使用這一種驗證方式,在投票處理動態頁面竟然不檢查驗證碼是否為空,實在是不敢恭維,為網站的安全帶來極大的隱患。

  對於驗證碼的問題,我已經了解了破解方法,只要在投票的時候不直接訪問驗證碼文件,那麼驗證碼就是為空,既然他的動態頁面不檢查驗證碼是否為空,所以只要在post的時候驗證碼參數為空就可以了。

  那麼還有一個問題就是這個投票網站檢查IP,限制一個IP只允許投票一次,那麼只有使用代理,或者透過不停的斷網和撥號才能實現。我實在想不到其他好辦法,後來這個朋友找到了一個可以極速在這個網站投票的程序,我對這個程序的IP解決方案很好奇就問朋友要來想分析一下。

  首先我是採取對這個投票軟體進行抓包的方式來研究,準備好了之後,打開投票程序“刷!提示軟體衝突!”暈,不會吧,那我就關掉一些程序,都關完了只留一個抓包程序還提示衝突,呵呵,原來這個程序竟然還知道有人可能會分析他的軟體,竟然遍歷進程名稱,檢查是否有可疑的程序,如果有程序對他進行分析或者抓包,他就拒絕運行。呵呵,目前我知道他限制的軟體有易語言程式設計軟體,還有 WSockExpert_Cn 抓包軟體。呵呵,關了易語言,把 WSockExpert_Cn 名稱改一下,順利通過軟體的自身安全偵測,運作成功。

  以下是我在使用過程中他投票是的資料包:

XML/HTML Code複製內容到剪貼簿
  1. POST /vote/view.php?sid=33=33= act=
  2. vote HTTP/1.1   
  3. Accept: */*   
  4. Referer: http://www.qdnfy.gov.cn/vote/vote.php   
  5. Content-Type: application/x-www-form-urlencoded   
  6. X-Forwarded-For: 218.20.218.200   
  7. CLIENT_IP: 218.20.218.200   
  8. VIA: 218.20.218.200   
  9. REMOTE_ADDR: 218.20.218.200   
  10. Accept-Language: zh-cn   
  11. Accept-Encoding: text   
  12. User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.507277 SLCC1; .NET CLR 2.0.50727] SLCC1; .NET CLR 2.0.507277 
  13. Host: www.qdnfy.gov.cn    Cookie: PHPSESSID=
  14. pldjnb6scereodjm5niqb9q990Content-Length: 49   
  15. Connection: Close  

   -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為例).這段程式碼是在百度搜尋到的.大部分網站可能都用這段代碼。

XML/HTML Code複製內容到剪貼簿
  1. $user_IP = ($_SERVER["HTTP_VIA"]) ? // $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];    
  2. //取得失敗則從REMOTE_ADDR取得   
  3. $
  4. user_IP = ($user_IP) ? $user_IP : $ ,["REMOTE_ADDR"]; $user_IP : $  ?>
  5.         首先判斷HTTP_VIA頭是否存在,HTTP_VIA頭代表是否使用了代理伺服器.如果沒有那就從REMOTE_ADDR字段獲取客戶端的IP地址,如果有那就從X-Forwarded-For獲取客戶端IP我估計很多程序員都是從百度來的代碼吧.asp也類似.
  然後我們來測試一下.
  

服務端程式碼:

XML/HTML Code

複製內容到剪貼簿
//輸出HTTP_X_FORWARDED_FOR    
  1. echo "HTTP_X_FORWARDED_FOR:".$_SERVER["HTTP_X_FORWARDED_FOR"];    
  2. //輸出REMOTE_ADDR echo "REMOTE_ADDR:". $_SERVER["REMOTE_ADDR"];    
  3. ?>
  4.      
  5.   可以看到取得到的客戶端ip位址是不一樣的.REMOTE_ADDR為真實位址.
  所以一個網站如果是從X-Forwarded-For來判斷客戶端IP位址的話,那麼我們就可以利用這個邏輯漏洞刷票。
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板