javascript
JS逆向实战26——某店ua模拟登陆
聲明
本文章中所有內容僅供學習交流,抓包內容、敏感網址、數據接口均已做脫敏處理,嚴禁用于商業用途和非法用途,否則由此產生的一切后果均與作者無關,若有侵權,請聯系我立即刪除!
目標
目標網站
aHR0cHM6Ly9kLndlaWRpYW4uY29tL3dlaWRpYW4tcGMvbG9naW4=
目標
獲取登錄接口 UA 參數加密,UA參數經過了OB混淆加密
其他
**本文更新于2023/11/13 **
與之前版本不太一樣的是增加了phone和password 以及CountryCode的加密。
ps: 上一次發的文章中有個錯誤。我的賬號和密碼加密沒有添加公鑰 導致請求失敗。
還有的就是對ua的某些值的校驗。
其他參數加密
如上圖所示:除了ua是我們本文需要研究的。還有幾個參數也是需要我們給逆向逆出來的。
分別為:
- phone
- countryCode
- password
- wdtoken
我們直接搜索 countryCode
如上圖所示。這里就直接顯示出了加密的位置。后面就一直跟棧一直扣就行了。很簡單。
跟到這個地方。把這一整個JSEncrypt 文件保存下來。然后簡單補兩個環境。
具體代碼如下:
JSEncrypt.js
window = global;
navigator={
appName:'Netscape'
}
...
login_encrypt.js
window = global;
var JSEncrypt =require("./JSEncrypt.js")
var v = new JSEncrypt()
_encrypt = function (e) {
return e ? v.encrypt(e + "") : ""
}
getCountryCode = function (e) {
return Number(e.split("-")[0])
}
function encrypt_up(t){
return _encrypt(t)
}
function encrypt_CountryCode(){
return _encrypt(getCountryCode("86-Z"))
}
// i = window.getUa()
// phone = _encrypt(17772231096)
// countryCode = _encrypt(getCountryCode("86-Z"))
// password = _encrypt("1323123213")
//
// console.log(phone,countryCode,password)
至于wdtoken
其實是通過某個請求set_cookie得來的。
抓包分析
研究完其他參數。我們可以來搞UA了。
在剛剛的抓包過程中。我們已經找到了加密位置。
可以看到 ua加密賦值給了i 。i最后再通過URL編碼。得到了網頁上呈現的UA。
進棧之后
可以看到 這就是個標準的OB混淆啊。至于什么是OB混淆,自己搜搜資料。這里貼一個官網地址: https://obfuscator.io/#upload
簡單來說就是一個免費且高效的 JavaScript 混淆器。使代碼更難復制,并防止其他人竊取代碼。
可以通過AST的方式。或者是工具的方法去給解混淆。
這里我通過
https://tool.yuanrenxue.cn/decode_obfuscator
模式2 的方式去解混淆。
代碼分析
解混淆后的主要代碼如下
確實到這邊已經一目了然了。
這里簡單來看看 _0x2e98dd 和 _0x420004
_0x2e98dd:
_0x420004:
如此一來。可以得到一下如此結論
UA參數由三部分組成。最后通過gzip壓縮然后btoa(base64)加密。
- _0x7dfc34 這個值很簡單。通過JS生成的時間戳
- _0x1722c3(_0x2e98dd) 這部分是瀏覽器的環境代碼
- _0x1722c3(_0x420004) 這部分是鼠標軌跡以及一些是否點擊的鼠標環境。
- 最后通過gzip壓縮 然后base64 加密。
var _0x261229 = _0x1722c3(_0x2e98dd) + "|" + _0x1722c3(_0x420004) + "|" + _0x7dfc34["toString"](16);
_0x261229 = btoa(_0x570bef["gzip"](_0x261229, {
"to": "string"
}));
參數分析
這里扣代碼其實很簡單。因為已經脫混淆了。缺什么補什么就行了
這里需要注意的是最后通過zip壓縮 然后base64加密的那部分函數代碼。
這里可以通過兩種方法去補全。
- 扣代碼(最穩定且最容易出正確結果的)
- 因為是gzip壓縮算法,可以直接套庫。
代碼
我們把所有值帶入
誒 發現為什么是參數錯誤呢?
哦我的天哪。好像并沒有看上去那么簡單。經過我無間斷的測試。我發現ua確實是沒問題的。
而真正出問題的是 phone 和password 這個rsa加密。
我們網上去找。
按步驟去跟棧 最后發現在初始化V的時候。還有個地方設置了個公鑰。我并沒有發現。所以導致請求的時候 老是參數錯誤。
設置完公鑰后。重新請求。
然后就可以了。搞的時候感覺很難。真正寫出來。感覺好簡單。。。
可以關注我的微信公眾號。
某些文章,核心代碼,以及提前更新都在微信公眾號上。
總結
以上是生活随笔為你收集整理的JS逆向实战26——某店ua模拟登陆的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TiDB binlog故障处理之drai
- 下一篇: 【主流技术】详解 Spring Boot