吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2980|回复: 69
上一主题 下一主题
收起左侧

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

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


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


查看响应数据


查看启动器,点击红框


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



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


测试成功


js代码:
[JavaScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
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] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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)


运行截图:
失败:


成功:


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


免费评分

参与人数 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
3#
xinxiu 发表于 2025-3-25 16:16
就这样水灵灵的扣出来了。
4#
Bigstmart 发表于 2025-3-25 16:23
又学到了
5#
tiancheng666 发表于 2025-3-25 16:44
感谢,虽然学到一点
6#
llldx6666 发表于 2025-3-25 17:03
感谢大佬代码,我下去研究研究
7#
feirenzai 发表于 2025-3-25 17:19
厉害,学到了
8#
windlound 发表于 2025-3-25 17:20
不觉明历啊
9#
lmc2hwj 发表于 2025-3-25 17:20
感谢大佬
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-4-16 14:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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