程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python逆向之 eval 函數解析,看著一篇就會了,案例掌房【4】

編輯:Python

️ 實戰場景

本篇博客要盤的目標站點是【掌房買好房】登錄頁加密邏輯,提前訪問 http://eip.chanfine.com/login.jsp 做一下接口分析。

隨機寫入一個賬號和密碼,測試加密接口。

  • 賬號:15012341234
  • 密碼:123456

通過開發者工具查看到接口參數如下所示。

  • 請求網址: http://eip.chanfine.com/j_acegi_security_check
  • 請求方法: POST

其中加密位置呈現如下內容。

  • j_username: 15012341234
  • j_password: 䐵匠䴵 N3IRFNdustKHXjJ5PDrZIQ==
  • j_redirectto:

其中比較重要的就是 j_password,我們要解析的位置也在這裡。

️ 加密參數尋找過程

直接全局搜索關鍵字 j_password 即可查詢對應值。

直接定位到檢索結果中的 desEncrypt 函數位置,得到下述內容。

鼠標移動到加密函數位置,發現出現 VM 相關內容,這裡就可以初步猜測其使用的是 eval 函數加密。

直接跳轉到對應代碼部分,其實已經得到了相關邏輯,參考著下述代碼編寫 Python 代碼就可以完成任務,但這與我們一開始學習 eval 逆向相違背。

function desEncrypt(value, xForm, type) { if (_0(xForm)) { return value; } else { var keyObj = {}; if (type == null || "aes" == type.toLowerCase()) { keyObj = SECURITYKEY.get(); value = CryptoJS.AES.encrypt(value, CryptoJS.enc.Utf8.parse(keyObj.key), { iv: CryptoJS.enc.Utf8.parse(keyObj.iv), }).toString(); } else { keyObj = SECURITYKEY.get("des"); value = CryptoJS.DES.encrypt(value, CryptoJS.enc.Hex.parse(keyObj.key), { iv: CryptoJS.enc.Hex.parse(keyObj.iv), }); } return keyObj.security + value; }}

從上述代碼提煉關鍵字 SECURITYKEY,在全局代碼再次檢索。

結果中發現了加密函數真實位置,並且明顯的 eval 痕跡。

既然已經找到代碼源頭,接下來就可以找一款在線解密工具,實施解析即可。


你正在閱讀 【夢想橡皮擦】 的博客
閱讀完畢,可以點點小手贊一下
發現錯誤,直接評論區中指正吧
橡皮擦的第 685 篇原創博客


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved