JS逆向實戰11——某金屬集團動態cookie加密

始識發表於2023-02-21

本文作者:ZiCh
本文連結:https://www.cnblogs.com/zichliang/p/17138431.html
版權宣告:未經作者允許嚴禁轉載

目標網站

aHR0cDovL3d3dy50bm1nLmNvbS5jbi9pbmZvcm1hdGlvbi9pbmZvX3h3enguYXNweD9jbGFzc2lkPTMx

分析

此網站根據cookie加密 如cookie無效則返回 412 有點像某數。

根據抓包分析 可知 這個

Cookie: ASP.NET_SessionId=irftqluvfywztp3nhmfqsgab; ASP.NET_SessionId_NS_Sig=oenCV6mdwHx26gTo; eFKuN5wtW89D006=K7vHE8llNk_GHoH63eOhtYf6Tr3vg0boafQPv9qOVyQRtO6M6rtkgWprfZrRt11Vr_OchRw__wmXgj2B9B70eMsA6XWIrwQ4BmwLUu23eXBog
這些cookie 是我們所傳的引數。

定位函式入口

根據hook 確定 cookie加密的未知

然後我們一步一步追棧進入


這部分就是函式入口,我們在控制呼叫函式看看

由此可見 這就是cookie生成的入口了

耐心扣程式碼

本文來自:來自: https://www.cnblogs.com/zichliang/

我們找到了cookie生成的位置 接下來就是慢慢扣程式碼了
函式R\(ih()和R\)ff.R$aK();由我們多次試驗可知 這是一個定值(如果不確定呼叫函式也行 這兩個函式扣起來比較簡單。)
所以我們可以改寫一下

var R$aZ = 'eFKuN5wtW89D006'
var R$jZ = "K"
var R$ma = R$lA(); // 32位隨機數
var R$jy = R$jn(); // 16位隨機數
var R$fX = R$ke(); // 43位隨機數
var R$gQ = R$jZ + R$jP(R$jy["concat"](R$jt(R$fX, R$ma)));

接下里就是扣這三個陣列隨機數了
R$lA()



由此可見這是cookey
但是生成的地方我們暫時不知道
所以我們可以先扣其他地方 這個地方暫時寫死好了
R$jn();

同理 這個隨機數也是一樣的。
R$ke();
然後我們扣這個函式

這裡有個坑


在扣R$lr();這個函式的時候,我們會發現很多selenium webdriver


這種情況要偽裝的引數太多了,而且往裡面越扣就越多,索性我們直接寫死寫成個定值
反正也只是一大堆環境檢測。
其他順著慢慢扣就好了。

執行JS

本文來自:來自: https://www.cnblogs.com/zichliang/
然後我們執行我們的JS

發現可以執行。
我們放到Python中執行,發現還是不行。

解決伺服器動態生成問題。

那肯定是我們剛剛寫的定值不對。唯一值得懷疑的點 就是那個"cookieKey"還有"blackBlock"
但是這兩個值怎麼追棧都找不到,
所以我們反覆hook
會發現有有些值可能是伺服器生成的。
所以我們只要找到這個函式入口函式即可。

實驗多次,我們找到了這個函式。
然後我們只要把這個cookieKey 和 blackBlock提取出來即可。
我們後續只需要

用正則把這個值提取出來就能正常爬取了。

執行驗證

可以正常執行~~

本文作者:ZiCh
本文連結:https://www.cnblogs.com/zichliang/p/17138431.html
版權宣告:未經作者允許嚴禁轉載

相關文章