逆向破解某APP的sign值校驗

什么是sign值?
可以理解為檢驗,每一個數(shù)據(jù)包中有sign值就意味著可以被檢驗,當我們一旦篡改數(shù)據(jù),校驗值不正確,則會失敗。
0X01 體測APP
界面功能點如圖:

手機裝好https證書,掛好Burpsuite的代理,隨后我們直接去抓取該APP上傳校園跑步數(shù)據(jù)時的請求

將跑步距離0.000 修改為5.000時,直接提示認證失敗,原因就是sign值的問題。

0X02 逆向破解Sign值的加密
首先判斷sign是否有漏洞,看sign值是否采用了一些弱加密/編碼方法(例如md5)

上一方法失敗,隨后我們嘗試第二種方法,置空sign值,發(fā)現(xiàn)依然鑒權認證失敗

0X03 逆向破解app
先查殼,運氣不錯,apk沒加殼,省了不少功夫

全局搜素sign,在仔細挨個查看后,成功定位到了其sign生成的關鍵算法

其sign值的簽名算法:創(chuàng)建一個鏈表, 將全部已有的參數(shù)加入進去, 然后再加上一些鍵值對(其中timestamp時間戳我們已知,
appID,appSecret兩個鍵值對我們均未知),之后再將全部的鍵值對根據(jù)鍵的字母順序進行排序, 之后使用 querystring 方式對鍵值對進行編碼,最后再對編碼后的字符串求 MD5 值

分析代碼發(fā)現(xiàn),appID獲?。海绻埱蟮膗rl是 https://m.xxxxx.com 則為move,否則調(diào)用getAppId方法,獲取某接口openId的參數(shù)值,隨后賦值給AppID。

appSceret獲?。涸趈adx中提示appSecre鍵t對應的值來源于g.b,我們在import的包中成功找到了g.b(即appSecret)

現(xiàn)確定了所有參數(shù)的鍵值對,只需要寫個腳本寫出sign值即可

將原來的formatSportRange跑步距離改為了從0.000修改為5.003,并使用程序生成的sign值


大功告成,跑步記錄保存成功,我們成功使用偽造的sign簽名增加了一條5.003 km的跑步記錄
