吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2596|回复: 9
收起左侧

[Web逆向] [原创] 猿人学Web爬虫攻防第一题:js 混淆 - 源码乱码

  [复制链接]
ZenoMiao 发表于 2025-6-7 13:03
本帖最后由 ZenoMiao 于 2025-6-7 13:05 编辑

本次解题链接地址为: https://match.yuanrenxue.cn/match/1

打开浏览器F12后  看到了一个无限的debugger, 看到控制台有一堆打印出来的信息.
image.png
image.png

为了防止他把浏览器刷爆, 打下script断点把console.log和setInterval给hook了

在翻页之后, 已知请求链接为:
https://match.yuanrenxue.cn/api/match/1?m=91bc2ee952717f069c4dded57aa16eab%E4%B8%A81749369641
https://match.yuanrenxue.cn/api/match/1?page=2&m=dccdf00ea9649eb81a75b9b912481c25%E4%B8%A81749369648
https://match.yuanrenxue.cn/api/match/1?page=3&m=945af4fe498b76666ed2369f0871e737%E4%B8%A81749369650
image.png
根据链接的分析应该是一串暂时未知的加密+|+时间戳组成, 加密参数应该是跟后面的时间戳息息相关

重新刷新网页打上script断点一步步查看运行的js有没有可疑的地方

在打script断点的过程中. 发现有部分代码是通过eval执行的, 也打上断点
image.png

当进入到名为oo0O0的方法时, 查看他的形参mw发现是时间戳, 其时间戳跟请求参数m的时间戳极为相似,则跟堆栈看一下是哪里调用了他.
image.png


在方法oo0O0的返回前一行  发现又是一行eval的代码, 跟进去后发现是一个疑似md5的加密,
image.png

而底下的window.f调用了hex_md5的参数是固定位时间戳的字符串
image.png
在控制台试一下是否标准md5加密
image.png

确认不是标准md5加密后  把js代码扣下来,然后对比一下跟浏览器运行结果是否一样

image.png image.png

确认一样之后, 加密代码就扣完了下面是撸Python代码的时候了

[Python] 纯文本查看 复制代码
import statistics
import subprocess
import time

import requests_html

requests = requests_html.HTMLSession()
def main():
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36',
        'Cookie': 'sessionid=自己的sessionid',
    }
    avg = list()
    for i in range(1, 6):
        _time = str(int(time.time()) * 1000 + 100000000)
        m = subprocess.Popen("node 1.js混淆-源码乱码 " + _time, encoding="utf-8", stdout=subprocess.PIPE)
        m = m.stdout.read().replace('\n', '') + '丨' + _time[:10]
        url = 'https://match.yuanrenxue.cn/api/match/1'
        params = {
            'page': i,
            'm': m
        }
        response = requests.get(url, params=params, headers=headers).json()
        for j in response['data']:
            avg.append(j['value'])
        print(response)
    print(avg)
    print(statistics.mean(avg))


if __name__ == '__main__':
    main()


运行后获得结果, 大功告成打完收工!
image.png
image.png
image.png

免费评分

参与人数 5吾爱币 +11 热心值 +5 收起 理由
ImpJ + 1 + 1 谢谢@Thanks!
jaffa + 1 + 1 谢谢@Thanks!
liuxuming3303 + 1 + 1 谢谢@Thanks!
涛之雨 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
99910369 + 1 + 1 谢谢@Thanks!

查看全部评分

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

mw26973 发表于 2025-6-9 08:03
需要学习,希望大佬能把这个系列更新下去
liuhc7216 发表于 2025-6-9 16:06
zZBooM 发表于 2025-6-10 12:38
lxb187 发表于 2025-6-10 15:30
希望大佬一直更新下去 想学
LUCKYYC1 发表于 2025-6-10 16:01
努力学习
过林黑马 发表于 2025-6-10 17:13
不错,很强大
ImpJ 发表于 2025-6-16 15:59
大佬,这一步 在方法oo0O0的返回前一行  发现又是一行eval的代码, 跟进去后发现是一个疑似md5的加密 是从哪跳过来的,我按照你的教程走了一遍,上面都可以找到对应的源代码,这一步卡住了,不知道怎么进到这个js文件里,能再帮忙讲解一下吗,谢谢。
 楼主| ZenoMiao 发表于 2025-6-18 10:19
ImpJ 发表于 2025-6-16 15:59
大佬,这一步 在方法oo0O0的返回前一行  发现又是一行eval的代码, 跟进去后发现是一个疑似md5的加密 是从哪 ...

在eval那边打个断点, 然后F10单步进去 进去后你会发现一堆轻混淆的代码, 就在那些代码里面有加密过程
ImpJ 发表于 2025-6-18 10:34
ZenoMiao 发表于 2025-6-18 10:19
在eval那边打个断点, 然后F10单步进去 进去后你会发现一堆轻混淆的代码, 就在那些代码里面有加密过程

好的 谢谢 我去试试
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2026-2-8 01:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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