吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6213|回复: 41
收起左侧

[Web逆向] 【JS逆向】某点数据登录逆向分析

  [复制链接]
littlewhite11 发表于 2025-5-3 14:00
本帖最后由 littlewhite11 于 2025-5-3 17:57 编辑

逆向目标

  • 网址:aHR0cHM6Ly9hcHAuZGlhbmRpYW4uY29tL2xvZ2luP2xpbms9aHR0cHMlM0ElMkYlMkZhcHAuZGlhbmRpYW4uY29tJTJGcmFuayUyRmlvcyUyRg==
  • 目标:登录参数逆向

抓包分析

我们选择邮箱,输入账号密码进行登录,发了一个login请求,其中参数k是需要逆向分析的,请求头和响应都不需要额外处理。

1.png

因为参数k并没有什么特征,所以直接搜索不太现实,所以我们选择跟栈来看参数如何生成的。

从启动器入手,看到了Promise.then,那参数的生成有可能涉及异步,那我们在异步之后下断点,验证一下猜想。

2.png

可以看到异步之后参数k已经生成,那大概率就涉及异步了。

3.png

逆向分析

既然知道可能涉及异步,那我们就在异步之前下断,可以找一找请求拦截器。

4.png

5.png

可以看到data中参数k还没有生成。

6.png

那我们可以简单hook一下参数k(这里因为只剩下参数k还没有set,且只是为了找到位置,所以hook代码就简单写了,更完善的hook代码可以自行查资料实现)。

Object.defineProperty(e.data, 'k', {
    set(){
        debugger
    }
})

hook代码生效后,过掉断点,发现参数kset并没有hook到,那么根据经验,data可能在过程中被重新赋值了,所以我们hook一下dataset方法。

Object.defineProperty(e, 'data', {
    set(){
        debugger
    }
})

成功hookdata设置参数。

7.png

往上跟一个栈,我们就可以发现参数k的生成位置了。

8.png

把断点下好,重新刷新网页(因为之前的hook代码写得很潦草,防止出现不期待的情况),然后进行参数k的逆向。

在逆向过程中,有很多小技巧可以简化我们的逆向过程,比如这里的t.data,在经过h()(t.data, !1) || {}其实并没有变化,那我们就可以不去抠h()的代码。

9.png

然后我们的重点是Object(y.a)这个函数,直接跟进去,edatapath是路径参数/v1/user/company/loginn就是前文的nr是请求方法。

10.png

可以直接把这个函数拉下来本地,然后缺什么补什么,还是那句话,能简化的东西就简化,能不抠的代码就不要去抠。

这里的t经过c()函数后并没有发生变化,那就可以不抠c()的代码,直接var n = t;

11.png

这里的!l()(n)可能只是在校验n这个对象是什么类型,在生成参数k这一细分流程中,n始终是对象类型,那我们也没必要去抠l()的代码,直接把条件当true处理。

12.png

l()函数代码

13.png

然后就是加密方法Object(_.b),我们直接跟进去。可以清晰地看到是aes-cbc的加密,但我们常遇到的是用crypto-js这个库实现的,这里显得有些陌生。

14.png

遇事不决,那就问一问AI,可以看到AI也是很给力,给出了一版答案。

15.png

16.png

我们本地模拟实现,和网站的结果对比一下,可以看到结果是正确的。

17.png

18.png

那我们的代码就算是抠完了。

那么有人就好奇,在进行aes加密时用到的几个参数,看起来并没有规律,那为什么我们并没有去跟,其实这都是经验之谈。

服务器拿到我们生成的加密参数,是需要去校验的,对于aes这种对称加密算法而言,它的keyiv肯定在服务器中存有一份,既然login接口没有上报,那keyiv要么是固定的,要么是服务器下发的,这个网站每次刷新keyiv都会变,那大概率是服务器下发的,我们可以直接搜索。

可以看到这些参数确实在html页面中(服务器下发)。

19.png

那我们模拟登录的流程就是:先请求html页面拿到s、k和l三个参数,然后通过前文的流程生成参数k,最后携带生成的参数模拟请求。

模拟请求结果:

20.png

成功!!!

免费评分

参与人数 16威望 +1 吾爱币 +35 热心值 +14 收起 理由
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
qazplmwsx + 1 + 1 好细致,逐步学习
fries08 + 1 + 1 谢谢@Thanks!
Silence_NPC + 1 谢谢@Thanks!
bianqi + 1 + 1 鼓励转贴优秀软件安全工具和文档!
Flytom + 1 我很赞同!
anning666 + 1 + 1 我很赞同!
yumeng987 + 1 + 1 我很赞同!
Dogexx + 1 + 1 用心讨论,共获提升!
st0rm + 1 + 1 用心讨论,共获提升!
天空宫阙 + 2 + 1 用心讨论,共获提升!
lerd + 1 用心讨论,共获提升!
FitContent + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
allspark + 1 + 1 用心讨论,共获提升!
ioyr5995 + 1 + 1 热心回复!
涛之雨 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

Scan 发表于 2025-5-11 17:30
littlewhite11 发表于 2025-5-11 15:52
你要在那个拦截器断住才能对e进行hook

感谢回复,我往上跟了一个栈m.request (app~253ae210.8abf8ae.js:670)
n.forEach.m.<computed> (app~253ae210.8abf8ae.js:702)是这两个,倒是hook到data参数了,在控制台打印出来了,但是断点还是原来的o = o.then(m.shift(), m.shift());
niheibie 发表于 2025-5-3 14:56
Mike666 发表于 2025-5-3 15:00
SerryKl 发表于 2025-5-3 16:54
有部分截图的URL还是露出来了,楼主看到这条消息的话可以尽快重新编辑下,不然码白打了
 楼主| littlewhite11 发表于 2025-5-3 17:58
SerryKl 发表于 2025-5-3 16:54
有部分截图的URL还是露出来了,楼主看到这条消息的话可以尽快重新编辑下,不然码白打了

还是你观察得仔细
anan097 发表于 2025-5-3 20:17
学习一下
铭焱 发表于 2025-5-3 22:47

学习学习,开始学习咯
star0angel 发表于 2025-5-3 23:43
学习大佬了  那个hook大佬为啥我hook不到
 楼主| littlewhite11 发表于 2025-5-3 23:44
star0angel 发表于 2025-5-3 23:43
学习大佬了  那个hook大佬为啥我hook不到

在那个拦截器那里hook,应该是可以hook到的
o824 发表于 2025-5-4 00:01
学习下  JS太难了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-9-20 16:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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