吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5083|回复: 59
收起左侧

[Web逆向] 【js逆向】学某通模拟登录

  [复制链接]
asone917 发表于 2025-3-25 14:44
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
目标网址aHR0cHM6Ly9wYXNzcG9ydDIuY2hhb3hpbmcuY29tL2xvZ2luP2ZpZD0mbmV3dmVyc2lvbj10cnVlJnJlZmVyPWh0dHBzJTNBJTJGJTJGaS5jaGFveGluZy5jb20=
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
感谢各位大佬的观看,我是菜鸟,新手上路,在某同学的忽悠下入坑js逆向,请多指教


查看请求载荷,uname,password 均加密
image.png

查看响应数据
image.png

查看启动器,点击红框
image.png

进入,在上面找到加密的地方
image.png


断点,点击登录,触发断点,F9进入这个函数,一眼AES加密,把代码扣下来
image.png

测试成功
image.png

js代码:
[JavaScript] 纯文本查看 复制代码
const CryptoJS = require("crypto-js");

function encryptByAES(message, key) {
    let CBCOptions = {
        iv: CryptoJS.enc.Utf8.parse(key),
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
    };
    let aeskey = CryptoJS.enc.Utf8.parse(key);
    let secretData = CryptoJS.enc.Utf8.parse(message);
    let encrypted = CryptoJS.AES.encrypt(
        secretData,
        aeskey,
        CBCOptions
    );
    return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
function run(username, password) {
    uname = encryptByAES(username, "u2oh6Vu^HWe4_AES")
    pwd = encryptByAES(password, "u2oh6Vu^HWe4_AES")
    return [uname,pwd]
}


编写主函数:
[Python] 纯文本查看 复制代码
import requests

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs

login_url = '#填写请求接口'
headers = {
    "accept": "application/json, text/javascript, */*; q=0.01",
    "accept-encoding": "gzip, deflate, br, zstd",
    "accept-language": "zh-CN,zh;q=0.9",
    "cache-control": "no-cache",
    "connection": "keep-alive",
    "content-length": "216",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
    "cookie": "你的cookie",
    "host": "",
    "origin": "",
    "pragma": "no-cache",
    "referer": "",
    "sec-ch-ua": "\"Google Chrome\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"",
    "sec-ch-ua-mobile": "?0",
    "sec-ch-ua-platform": "\"Windows\"",
    "sec-fetch-dest": "empty",
    "sec-fetch-mode": "cors",
    "sec-fetch-site": "same-origin",
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
    "x-requested-with": "XMLHttpRequest",
}

username = input("请输入手机号/超星号:")
password = input("请输入密码:")
with open("main.js") as f:
    jscode = f.read()

js = execjs.compile(jscode)
result = js.call("run", username,password)
print(result)
payload = {
    "fid": -1,
    "uname": result[0],
    "password": result[1],
    "refer": '',
    "t": True,
    "forbidotherlogin": 0,
    "validate": "",
    "doubleFactorLogin": 0,
    "independentId": 0,
    "independentNameId": 0
}

res = requests.post(login_url, headers=headers, data=payload)
print(res.text)


运行截图:
失败:
image.png

成功:
image.png

今天的分享就到这里,这个案例很简单,适合新手入门练习!-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


免费评分

参与人数 17吾爱币 +23 热心值 +13 收起 理由
EternalBliss + 1 + 1 用心讨论,共获提升!
linxuande + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
anwuzhu077 + 1 + 1 我很赞同!
lxm2333 + 1 + 1 用心讨论,共获提升!
melooon + 1 + 1 我很赞同!
Mrsun02 + 1 + 1 用心讨论,共获提升!
无名 + 1 谢谢@Thanks!
chao0927 + 1 谢谢@Thanks!
bai1276 + 1 用心讨论,共获提升!
涛之雨 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
sxsrz + 1 + 1 我很赞同!
weizhi151 + 1 + 1 谢谢@Thanks!
niga + 1 + 1 用心讨论,共获提升!
wzh103103 + 1 我很赞同!
PastorBonus + 1 + 1 我很赞同!
abaooo + 1 + 1 我很赞同!
小白白爱吃糖 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

VnYzm 发表于 2025-3-25 17:25
用对称加密,密钥直接放前端,这加密了个寂寞。难怪这家公司当年能发生数据库泄露把学生们的个人信息全透个遍……
ofo 发表于 2025-3-26 15:50
zp65210 发表于 2025-3-26 10:03
加密,放前端这系统加了个寂寞呀

你找一个登录加密不是放前端的网站出来......这种加密是用来做防爬或防截包修改的。前端输入明码再加密后存到服务器的数据库里,用户登录时,也需要用户加密后的数据和数据库的密码对比,正确的就给权限.你后端加密校验前端不校验?那人家直接修改服务器反回的数据就行了,还不用研究解密。说话前要先动手去实际环境操作下。这种验证肯定是在前端的.但这个网站的问题是密钥给得直接了,应该用动态密钥。密钥也要使用算法得出。这样就能增加难度.

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
anning666 + 1 + 1 我很赞同!

查看全部评分

caixuan19911103 发表于 2025-3-25 16:12
xinxiu 发表于 2025-3-25 16:16
就这样水灵灵的扣出来了。
Bigstmart 发表于 2025-3-25 16:23
又学到了
feirenzai 发表于 2025-3-25 17:19
厉害,学到了
lmc2hwj 发表于 2025-3-25 17:20
感谢大佬
joylau123 发表于 2025-3-25 17:38
大佬分析的简单明了,受益良多
 楼主| asone917 发表于 2025-3-25 18:32
VnYzm 发表于 2025-3-25 17:25
用对称加密,密钥直接放前端,这加密了个寂寞。难怪这家公司当年能发生数据库泄露把学生们的个人 ...

哈哈哈哈哈哈哈哈好骂
Ascent 发表于 2025-3-25 20:17
十分好的思路,学习到了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-4-10 11:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表