吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1581|回复: 36
收起左侧

[Web逆向] 【JS逆向】某土地市场网逆向分析

  [复制链接]
littlewhite11 发表于 2025-3-4 15:32
本帖最后由 littlewhite11 于 2025-3-10 07:29 编辑

逆向目标

  • 网址:aHR0cHM6Ly93d3cubGFuZGNoaW5hLmNvbS8jLw==
  • 目标:反调试及请求头Hash

反调试

进入网站,我们会发现F12无法打开控制台。那就换一种方式,以谷歌浏览器为例设置 -> 更多工具 -> 开发者工具,然后网页就会跳到空白页了,这是除了debugger外一种经典的反调试手段。

那么我们如何过掉这个反调试呢?目前,我遇到的就两种情况,第一种就是window.close(),第二种就是location.href = '',还有其他情况的话欢迎各位大佬补充。

下面直接开始分析:

我们用无痕浏览器分析(因为在Script断点时不会加载插件的JS代码),打开控制台,勾上Script断点,输入网址,成功断住。

1.png

然后我们先搜索window.closeF8一直走,之后某个文件出现了相关代码,直接下断。

2.png

然后放开Script断点,直接F8过掉,成功在断点处停住。

3.png

我们往前跟栈,看网站通过什么手段进行的反调试。可以看到,是e > 10 * this.maxPrintTime这个条件成立才触发this.onDevToolOpen,从而触发后续的window.close

4.png

那我们就看看代码具体做了什么,我们在前面的er处下断,重新请求,成功断住。

5.png

然后我们单步跟进去m函数,可以看到,先取了一下时间戳,然后调用传进的参数,最后再返回参数调用的时间差,那猫腻肯定是出现在传入的函数中了。

6.png

我们直接进入被调用的参数函数中,可以看到t.largeObjectArray是一个大对象,b其实是console.table函数,也就是在控制台打印一个大对象。

7.png

那反调试的逻辑大体清楚了:如果打开了控制台,就会通过console.table打印一个很大的对象,这就需要消耗时间,后续e > 10 * this.maxPrintTime就成立,就会进入最终window.close的逻辑。

我们可以通过hook,返回一个固定的时间戳来过掉反调试(油猴或者直接在控制台注入都可以)。

Date.prototype.getTime = function(){
    return 1741067137856
}

hook掉时间戳之后,我们会发现控制台一直会被清空,也不利于调试,我们直接把清空控制台的代码置为空函数E = function(){}

8.png

同理,再把和控制台打印相关的bw函数也置空(在对应函数断住的时候去置空)。

9.png

最后,能够在控制台输入并输出表示我们成功过掉了反调试。

10.png

抓包分析

我们直接点击土地供应 -> 供地计划,会发一个list的包,请求头中的Hash参数就是需要逆向的参数。

11.png

逆向分析

一般请求头参数加密,我们可以通过hook的手段去找加密位置(可以去找现成的hook代码)。我选择直接从启动器去找了,一般都会看异步之前的request

12.png

下断,发包,然后找请求拦截器。

13.png

很显然,下图大概率就是加密参数的生成位置。

14.png

我们在控制台输出一下结果,可以看到密文的长度为64,看起来很像SHA256

15.png

那我们就去尝试一下,看是否为标准的SHA256,字符串'1'的摘要为6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b

16.png

再去控制台对字符串'1'进行摘要,经对比,算法是标准的,没有魔改。

17.png

那加密过程大概清楚了,对userAgent今天的日期(日)以及list进行SHA256得到Hash

18.png

那我们直接对接口进行请求模拟。

19.png

成功!!!

免费评分

参与人数 16威望 +1 吾爱币 +34 热心值 +15 收起 理由
zhangchuangaipj + 1 + 1 热心回复!
笙若 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
luoyueqing + 1 我很赞同!
Yangzaipython + 1 + 1 鼓励转贴优秀软件安全工具和文档!
o824 + 1 + 1 谢谢@Thanks!
唐小样儿 + 1 + 1 我很赞同!
allspark + 1 + 1 用心讨论,共获提升!
Aircraftcomman5 + 1 + 1 我很赞同!
cfdnfsa + 1 + 1 我很赞同!
涛之雨 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
fhlfxtd + 1 + 1 我很赞同!
FitContent + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
jk998 + 1 + 1 我很赞同!
st0rm + 1 + 1 谢谢 @Thanks!
田田爱崽崽 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
meet52 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

pxq 发表于 2025-3-5 14:29
感谢佬分享,其实也可以直接搜
[JavaScript] 纯文本查看 复制代码
1
interceptors.request
,一般用axios 都有这个关键词
KaliHt 发表于 2025-3-11 23:06
[JavaScript] 纯文本查看 复制代码
1
2
3
4
5
let r = n(2966)
                  , a = e.url.split("/");
                return console.log(navigator.userAgent + (new Date).getDate() + a[a.length - 1]),
                t["Hash"] = r(navigator.userAgent + (new Date).getDate() + a[a.length - 1]),
                e

请教一下,这个n是否为webpack加载器?
[JavaScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
function n(r) {
       var a = t[r];
       if (void 0 !== a)
           return a.exports;
       var o = t[r] = {
           id: r,
           loaded: !1,
           exports: {}
       };
       return e[r].call(o.exports, o, o.exports, n),
       o.loaded = !0,
       o.exports
   }

格式好像不太一样,这个需要怎么改写?
meet52 发表于 2025-3-4 15:34
nicholas7372427 发表于 2025-3-4 15:53
不明觉厉,看的一脑袋浆糊,但是感觉热血沸腾。
st0rm 发表于 2025-3-4 15:55
感觉学到了一些东西,谢大佬
sdieedu 发表于 2025-3-4 16:08
非常厉害啊
ChaChaL 发表于 2025-3-4 17:23
现在反爬真的是套路多
HEA7528 发表于 2025-3-4 18:28
厉害了,不错的方法
fhlfxtd 发表于 2025-3-4 18:41
现在反爬真的是套路多
globalindex 发表于 2025-3-4 18:53

学到了,又逮到大佬更新
gs129090 发表于 2025-3-4 19:59
正好在学习这方面的知识。学习一下。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-4-11 17:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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