JS逆向实战

某网站密码逆向(一)

  • 目标网址
- aHR0cHM6Ly93d3cuaGZheC5jb20vbG9naW4uaHRtbA==
  • 输入测试账户和密码
- username: admin
- password: 123456
  • 调试查看信息如下,显然密码是经过加密的,找出代码的加密逻辑,模拟即可
password: "2bc3d344845b58a87cd0b0f34f84ff79"
username: "admin"
  • 点击请求的启动器,直接定位到toLogin代码块,分析如下
password的值为a,而a = encryptByDES(this.password);
发请求的地方打上断点,然后进入encryptByDES的逻辑
  • 加密逻辑如下
encryptByDES: function(t) {
	return CryptoJS.MD5(t + "TuD00Iqz4ge7gzIe2rmjSAFFKtaIBmnr8S").toString()
},
  • 丢给AI分析,是MD5加密
- 参数t就是password,后面一堆字符串就是'盐'
	- 注意事项: 这个'盐'有可能是固定值(很幸运就是),也有可能是随机算法生成的(比较绕了)
  • 使用pyton模拟如下,结果一致,逆向成功!
import hashlib


def encrypt_by_des(t: str) -> str:
    # 固定盐值(与 JavaScript 代码一致)
    salt = "TuD00Iqz4ge7gzIe2rmjSAFFKtaIBmnr8S"

    # 拼接原始字符串和盐值
    salted_data = t + salt

    # 计算 MD5 哈希值
    md5_hash = hashlib.md5(salted_data.encode("utf-8")).hexdigest()

    return md5_hash


# ---------------
# 使用示例
# ---------------
if __name__ == "__main__":
    plaintext = "123456"
    hashed_result = encrypt_by_des(plaintext)
    print(f"输入: {plaintext}") # 输入: 123456
    print(f"输出: {hashed_result}") # 输出: 2bc3d344845b58a87cd0b0f34f84ff79

posted @ 2025-03-28 15:29  清安宁  阅读(509)  评论(0)    收藏  举报