實戰4-x軸y軸,過點觸驗證碼

枸杞子*發表於2024-03-16

目標網站

aHR0cDovL3d3dy55bmdwLmNvbS9wYWdlL3Byb2N1cmVtZW50L3NlYXJjaEZvck1haW4uaHRtbD9idWxsZXRpbnRpdGxlPSUyNUU3JTI1OUYlMjVCRg==

1.先手動過驗證檢視如何獲取資料

過了驗證檢視獲取資料的請求連結,可以複製curl分析得知在請求負載中字串引數captchaCheckFlag是變化的

2.引數captchaCheckFlag

2.1分析captchaCheckFlag

搜尋captchaCheckFlag並除錯打斷點,檢視captchaCheckFlag來源
控制檯輸出可知this.captchaCheckId就是captchaCheckFlag

透過堆疊方式查詢到this.captchaCheckId

分析這一行程式碼aesEncrypt,檢視aesEncrypt中引數與請求驗證碼的響應結果作對比

其中請求驗證碼的負載中有兩個引數
clientUid:是uuid
ts:時間戳

aesEncrypt:是函式,可以直接拿js程式碼也可以自己魔改,
_this.backToken:是請求響應中的token
_this.secretKey:是請求響應中的secretKey
JSON.stringify(_this.checkPosArr):是座標,用ddddocr解決

2.2.1JSON.stringify(_this.checkPosArr):座標
想要知道座標就需要先獲取被點選的圖片和需要點選的文字 回頭看驗證碼請求的響應內容中,有圖片和需要點選的文字,

呼叫ddddocr,這兩個值作為引數得到座標:[{"x":122,"y":59},{"x":154,"y":74},{"x":221,"y":91}]修改為這樣的格式

2.2獲取captchaCheckFlag

captchaCheckFlag組成
captchaCheckFlag = aesEncrypt(str(str(token) + '---' + 座標),secretKey)

得到captchaCheckFlag後不要著急,還需要校驗驗證碼

3.校驗驗證碼

3.1獲取引數

對比請求驗證碼中多了一個**pointJson**引數

老規矩搜尋pointJson,打斷點,在控制檯挨個輸出引數


兩個引數列印出來發現和在獲取captchaCheckFlag過程中aes函式的引數類似,但是在獲取captchaCheckFlag過程中aes函式的第一個引數值是由(token+座標)傳入,這邊只需要傳入座標,那便直接拿來用就好,
aesEncrypt:是函式,同上
JSON.stringify(_this.checkPosArr):是座標,結果同上
_this.secretKey:是請求響應中的secretKey,結果同上

3.2獲取引數

pointJson組成
 pointJson = aesEncrypt(str(座標),secretKey)

4.獲取資料

將2.2中最後獲取到的**captchaCheckFlag**傳入到url中,這邊如果直接傳入params中貌似不太行

5.流程圖

相關文章