找回密码
 立即注册
首页 业界区 安全 js逆向实战之某恩思登录参数加密

js逆向实战之某恩思登录参数加密

奄幂牛 8 小时前
声明:本篇文章仅用于知识分享,不得用于其他用途

网址:aHR0cHM6Ly93d3cuNTFkbnMuY29tLw==
加密逻辑


  • 输入用户名和密码登录,触发的数据包如下,所有的传参都是加密过的。
    1.png

  • 全局搜索email_or_phone,总共13处,不过有一处非常明显,包含了所有要的参数。
    2.png

  • 打断点,触发。$(".formAccount .email_or_phone").val()就是输入的手机号或邮箱,然后对其进行aes函数的处理。
    3.png

  • 看下aes函数的加密逻辑,一目了然。
    4.png

  • 其余的password、type都是同样的加密逻辑。redirectTo是个固定值,_token的值是由_token变量赋值的,看下_token变量是个定值还是变量。在当前文件下搜索。
    5.png

    6.png

    7.png

    8.png

    看下来应该是个定值。
  • 代码就非常好写了。


  • encrypt.js
    1. var CryptoJS = require("crypto-js")
    2. function aes(val) {
    3.         var k = CryptoJS.enc.Utf8.parse('1234567890abcDEF');
    4.         var iv = CryptoJS.enc.Utf8.parse('1234567890abcDEF');
    5.         enc = CryptoJS.AES.encrypt(val, k, {
    6.                 iv: iv,
    7.                 mode: CryptoJS.mode.CBC,
    8.                 padding: CryptoJS.pad.ZeroPadding
    9.         }).toString();
    10.         return enc;
    11. }
    复制代码
  • ensi.py
    1. import requests
    2. import execjs
    3. url = "https://www.51dns.com/login"
    4. headers = {
    5.         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0",
    6.         "Cookie": "xxxxxxxx",
    7. }
    8. username = input("请输入邮箱或手机号:")
    9. password = input("请输入密码:")
    10. jscode = open("encrypt.js", "r").read()
    11. js_compile = execjs.compile(jscode)
    12. encrypt_username = js_compile.call("aes", username)
    13. encrypt_password = js_compile.call("aes", password)
    14. account= js_compile.call("aes", "account")
    15. data = {
    16.         "email_or_phone": encrypt_username,
    17.         "password": encrypt_password,
    18.         'redirectTo': '/',
    19.         'type': account,
    20.         "_token": "U0mptVXAg1Acezzf5SG7RDoGoOBmlwtXQlv2VyGR",
    21. }
    22. resp = requests.post(url, headers=headers, data=data)
    23. resp.encoding = "utf-8"
    24. print(resp.text)
    复制代码
    如果输入的是不匹配的手机号和密码,返回的结果如下。
    9.png

    如果输入的是匹配的手机号和密码,返回的结果如下。
    10.png

这个加密逻辑是最简单的了,刚入门的新手可以拿来练习一下。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册