找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 40|回复: 0

AST反混淆进阶|动态的混淆js(reese84)还原后如何替换调试?

[复制链接]

2万

主题

129

回帖

12万

积分

管理员

积分
120769
发表于 2024-7-9 17:25:15 | 显示全部楼层 |阅读模式 IP:山东省济南市 电信

登录后更精彩...O(∩_∩)O...

您需要 登录 才可以下载或查看,没有账号?立即注册

×
AST反混淆进阶|动态的混淆js(reese84)还原后如何替换调试?


本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!

1.需求

有个兄弟问静态的混淆js可以还原后替换,但是动态的混淆js还原后就不知道怎么弄了。所以决定写篇文章来探讨一下。

2.目标地址

这次要拿捏的网站是这个:https://www.flyscoot.com/en

它加密参数所在的混淆js是动态的,但是url地址是不变的:

https://www.flyscoot.com/g-Then-And-meeting-beding-O-Scena-Quarre-allowt-

如何使用 mitmproxy 库和设置本地代理,请参考这篇文章:

调试技巧|如何动态调试经过还原后的某数VM文件

设置好以后,修改main.py 如下:

[Python] 纯文本查看 复制代码
import os
import mitmproxy.http
 
print('脚本初始化成功')
 
def request(flow: mitmproxy.http.HTTPFlow):
    pass
 
def response(flow: mitmproxy.http.HTTPFlow):
    if flow.request.method == "GET" and "g-Then-And" in flow.request.url:
        with open("ob.js","w",encoding = "utf-8") as fp:
            fp.write(flow.response.text)
        
        os.system("node main.js ob.js ok.js")
        with open("ok.js","r",encoding = "utf-8") as fp:
            flow.response.text = fp.read();

经过分析后得知,网站其实请求了两次 上面的混淆url,一次GET,一次是POST,因此需要在脚本中进行判断。

代码中的main.js,加了一行代码:

ast.program.body.unshift(types.DebuggerStatement());

即在代码的最开头加一个debugger;这样方便我们查看是否替换成功。

注意,main.js 和 main.py需要放在同一目录内。

3.运行

在进行替换前,建议先将该网站的所有 缓存,cookie 清空。打开cmder,输入:

mitmdump -q -p 8888 -s main.py

进行监听。再打开该网站,我们发现有替换的操作了:

1.png

并且,网站停在了debugger的位置:

1.png

这个时候,搜"p",定位到代码位置并打断点:


1.png

上面的debugger运行后,停到断点的位置:

1.png

可以直接看到 pD 的值,再运行,抓下一个混淆js的包:

1.png

这样直接就定位到 加密参数 p 的位置了。





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|IOTsec-Zone|在线工具|CTF WiKi|CTF平台汇总|CTF show|ctfhub|棱角安全|rutracker|攻防世界|php手册|peiqi文库|CyberChef|猫捉鱼铃|手机版|小黑屋|cn-sec|分享屋 ( 鲁ICP备2021028754号 )

GMT+8, 2024-7-21 00:11

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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