瑞数FSSBBIl1UgzbN7N443T分析
本文僅做研究使用.
研究的是一個(gè)移動(dòng)的網(wǎng)站,12580惠生活https://hsh.12580.com/Login/login.html
觀察抓包:
分2次請(qǐng)求,才得到了頁面:
加入不處理cookie,直接進(jìn)行第二次請(qǐng)求:
這樣是獲取不到數(shù)據(jù)的.
原因:
第一次請(qǐng)求獲取了js代碼,生成FSSBBIl1UgzbN7N443T這個(gè)cookie.帶著這個(gè)cookie請(qǐng)求才是成功的,這也是今天要分析的.
目標(biāo):
由于第一次請(qǐng)求獲取js代碼的數(shù)據(jù)每次都是變化的,變量也是混淆的,因此要完美的破解的話,必須解決每次多變不一的混淆,因此我們的目標(biāo)是這樣,每次獲取得到的js代碼,直接使用一個(gè)eval來執(zhí)行,偽代碼:
function get_data(jscode){eval(jscode)return FSSBBIl1UgzbN7N443T}思路:
按照以上的目標(biāo),分析還是要以單次獲取的js來分析:
首先來觀察下代碼:
基本上是無法閱讀的,細(xì)心看下:
String對(duì)象被替換了
window對(duì)象被替換了.
所以要查看如何調(diào)用的話,在代碼里面基本讀不出來了.
js 扒下來運(yùn)行,發(fā)現(xiàn)
1.id="9DhefwqGPrzGxEp9hPaoag" 的content屬性是一個(gè)關(guān)鍵的地方 2.window['$_ts'];這個(gè)也是解密相關(guān)的參數(shù),是固定的,也可以抓出來.接著來到了下一層的eval:
調(diào)用的關(guān)系是這樣的:
源代碼是這樣的,但是我們?cè)趎ode中執(zhí)行的時(shí)候就會(huì)出錯(cuò).
出錯(cuò)的原因是:
_$DA函數(shù)沒有定義
但是函數(shù)明顯有定義:
由于我們的目標(biāo)是不打算替換任何的代碼和改變?nèi)魏我惶幵创a的內(nèi)容,所以我們打算深入的研究一下這個(gè)問題:
舉例:
在瀏覽器中,我們定義了一個(gè)函數(shù)a和全局變量b,使用window[‘a(chǎn)’]和window[‘b’]來進(jìn)行調(diào)用,發(fā)現(xiàn)是可以調(diào)用成功的
node中:
這樣發(fā)現(xiàn),函數(shù)a并沒有添加到全局的global對(duì)象中.window[‘a(chǎn)’]和window[‘b’]均為undefined
這是一個(gè)非常有意思的結(jié)果.在瀏覽器中,var 定義的全局變量會(huì)加到全局window屬性中去,函數(shù)也自動(dòng)加到了全局為window調(diào)用.但是在node中卻不會(huì)加到全局.
這個(gè)也是我們使用eval執(zhí)行出現(xiàn)報(bào)錯(cuò)的原因.
解決辦法:
使用遍歷AST修改代碼,將全局的var和代碼第一層函數(shù)添加到window對(duì)象上去:
全局var
首層函數(shù)
這樣就不需要改變?nèi)魏未a內(nèi)容就完美的解決了這個(gè)問題
剩下的所有分析都在第二層的eval中了.
有幾個(gè)難點(diǎn):
1.location.reload會(huì)一直重新加載頁面,阻擾分析的進(jìn)行,可以將這段代碼屏蔽掉 2.canvas對(duì)象: 某數(shù)中不僅使用了2d的canvas畫圖也是用了webgl的3D畫圖,所以這一部分的模擬需要很認(rèn)真. 3.檢測的瀏覽器對(duì)象需要一一模擬,當(dāng)然按照我們追求完美的結(jié)果的話需要這樣接下來python模擬請(qǐng)求:
后面還有一個(gè)參數(shù)MmEwMD會(huì)在接下來的日子里分享思路.
總結(jié)
以上是生活随笔為你收集整理的瑞数FSSBBIl1UgzbN7N443T分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兽医提醒:这几种养狗方式,会让狗狗身体越
- 下一篇: 怎么获取网易云歌单外链链接