天天看點

js逆向之去哪兒滑塊分析-pc端

文章目錄

    • 流程分析
    • 過程

目标網址:‘aHR0cHM6Ly91c2VyLnF1bmFyLmNvbS9wYXNzcG9ydC9sb2dpbi5qc3A=’

難度:新手難度

流程分析

抓包看到登入需要發送一個slideToken,這個token就是上一個接口snapshot傳回的,snapshot裡面看需要送出的資料隻有一個data是變化的,隻要分析這個data怎麼生成的,再通過代碼模拟送出 獲得傳回值 就可以送出到登入接口完成滑塊。

js逆向之去哪兒滑塊分析-pc端
js逆向之去哪兒滑塊分析-pc端

過程

snapshot接口-點“啟動器” ajax,

js逆向之去哪兒滑塊分析-pc端

左下角的格式化代碼

js逆向之去哪兒滑塊分析-pc端

這看起來很正常的Ajax,下斷點,再次操作滑塊,斷下之後 調試輸出一下這個r(json轉字元串了)

js逆向之去哪兒滑塊分析-pc端

往上跟棧 檢視誰調用,data在這生成 t.encryption()

js逆向之去哪兒滑塊分析-pc端

跟進這個函數

js逆向之去哪兒滑塊分析-pc端

點進來之後 看到的 太标準的aes加密了,隻要JSON.stringify(this.sliderInfo);再套個crypto庫就行了 繼續下個斷點 重新點進來

js逆向之去哪兒滑塊分析-pc端
var e = '{"openTime":1655261398728,"startTime":1655261400494,"endTime":1655261400757,"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36","uid":"00008000254042fe26d81d1b","track":["557;570.00;134.00;0.00","589;572.00;135.00;2.00","610;590.00;141.00;20.00","634;638.00;152.00;68.00","657;683.00;153.00;113.00","677;746.00;153.00;176.00","698;793.00;154.00;223.00","719;877.00;154.00;307.00","741;957.00;154.00;387.00"],"acc":[],"ori":[],"deviceMotion":[{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true},{"isTrusted":true}]}'
                        return d.AES.encrypt(d.enc.Utf8.parse(e), d.enc.Utf8.parse("227V2xYeHTARSh1R"), {
                            mode: d.mode.ECB,
                            padding: d.pad.Pkcs7
                        }).toString()
           

這個sliderInfo 軌迹也可以固定,隻要把打開時間,開始時間,結束時間弄一下,套個aes庫 生成data送出就行了

endTime就用時間戳吧,然後開始時間和打開時間我都是按它浏覽器現在的間隔秒數來減的,再随機一下減多少毫秒

js逆向之去哪兒滑塊分析-pc端
js逆向之去哪兒滑塊分析-pc端

完成~

繼續閱讀