微信网页游戏刷分BUG利用——抓包分析记录
前言
臭臭今早上跟我說,他們做的詩詞小游戲被人破解后臺接口然后刷分了。問我能不能分析一下怎么做到的,該怎么修復。然后我就看了看,學習一下移動端(微信網頁)分析技術
抓包 分析
我只了解PC端網站抓包分析,移動端沒有做過。所以最開始的思路是把小游戲放到PC上來搞。
“請在微信客戶端打開鏈接”這個判斷很好騙,在UA上面加上MicroMessenger/6.6.2.501 就好了。整體的UA如下:
Mozilla/5.0 (iPhone; CPU iPhone OS 13_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/83.0.4103.116 Mobile/15E148 Safari/604.1 MicroMessenger/6.6.2.501
可是這也只能處理一般的網頁,獲取微信用戶ID及授權的步驟還是沒辦法搞。在github上也沒找到相關的工具。看來只能作罷。還是老老實實的抓手機的包吧。
移動端設置使用burpsuite抓包
參考:burpsuite抓取手機數據包
我猜的坑:
ok,其他就沒啥了,開始抓包分析。
請求分析
setp1,start——開始答題,獲得題目
這里能拿到題目列表。
而且發現修改用戶id可以輕松突破答題次數,因此可以無線獲得題目
setp2,answer——提交選項,判斷對錯
對每道題的提交都用這個,可以判斷出正確答案。
又發現題目id有規律,是遞增的,所以題庫最多就256*3個題目嗎
至此,有方法,多次請求題目,獲取所有問題,再進行答案的判斷,最終 獲得 題庫。 但是方法比較笨,而且應用復雜,還是要靠人操作。
再分析!
setp3,submit_result——提交game,獲得分數
由于手機加了證書和代理后,變得非常慢,所以我足足等了20分鐘才把10個題目做完,拿到這個請求。不過總算沒有白等。這個非常關鍵,因為這個是加分項。我就想,那我多來幾次,重復提交不久好了嗎?
試了一下,失敗了,顯示游戲已結束。果然,gameID用過了就不行了。那我就fake ID重新申請game。試了一下,成功了,但是加了0分。因為沒有做題。
于是我在中間提交一個問題,N次,發現成功了,不過只有一道題的分數。
至此,運行邏輯清楚了:
在burpsuite 的Repeater工具里面進行的測試過程:
1 偽造uid,獲取游戲id
2 對游戲id回答問題,隨便啥問題都行,哪怕不再問題列表里面
3 提交成績,獲得積分
腳本編寫
使用requests進行post訪問,把burpsuite里面的cookie和header拿過來用。
幾個函數:
邏輯也很簡單。記錄一下踩得坑:
腳本地址:poc
基本上就是想刷多少分刷多少分,想給誰刷給誰刷(不過要知道ID)
自己的ID獲取方法
點開游戲連接,不帶任何參數的。然后自己登陸,分享給別人。分享的連接里面,refererid就是自己的UID。
修復方法
現在想想,即便是修復了,還是能搞一下。雖然不能刷高分,但是可以保證題目全對,而且最重要的是,可以讓積分考前的人每天得不了分。(通過積分榜獲取前面人的ID,每天凌晨就把他們題目刷干得0分,讓他們沒法再答題。)
rank信息直接是get 就可以
總結
分析過程,和采坑點都很重要,值得回味。這個bug就是在最開始設計的時候,沒有安全意識。其實最后只要簡單判定就好了,應用邏輯問題。
在分析過程中,一定是對完整的流程進行分析,千萬不要分析一般就放棄,后者以為了解了所以。最后那個等了20分鐘的請求出來后,我才知道了整個流程。對流程梳理清楚后,才能更好地分析問題。
總結
以上是生活随笔為你收集整理的微信网页游戏刷分BUG利用——抓包分析记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中:统计字符串大串中小串出现的次
- 下一篇: 计算机主机usb插口松,台式电脑音频接口