技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 952|回复: 2
收起左侧

【JS解密】练手帖①

[复制链接]

2

主题

3

帖子

167

积分

用户组: 小·技术宅

UID
7504
精华
0
威望
17 点
宅币
110 个
贡献
20 次
宅之契约
0 份
在线时间
3 小时
注册时间
2021-9-30
发表于 2022-9-8 01:21:23 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

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

x
本帖最后由 DeHby 于 2022-9-8 01:28 编辑

目标:aHR0cHM6Ly93d3cuemZyb250aWVyLmNvbS8=
首先打开 浏览器匿名窗口(在Edge 叫inPrivate),这是为了避免残留缓存 抓到不准确的包 或者来源不明的Cookie..等等,接着打开开发者工具 挂上Fiddler
FD方便分析详细的协议以及注入操作,开发者工具方便观察请求调用堆栈以及debug JS代码,然后打开目标网站,等待页面加载完成得到数据后,停止抓包,请求数越少,抓包数据精度越高是最好的,过滤掉没用的请求。


1.png
接着我们找到了 数据接口的关键请求 *v2/tag/flows


2.png
寻找关键请求的几个小技巧:


1.根据爬取的数据源在FD进行全局文本搜索


2.在开发者工具找到Fetch/XHR的数据分类进行过滤分析


3.优先查看正文最大 且Content-Type不为text html


3.png 4.png
大致看一下请求协议头发现了 X-CSRF-TOKEN头,看名字就知道有作用 先记录到我们的小本本(notepad.exe)


5.png
接着我们看到了 cookie dnt sec-gpc 以及post数据:


time=1662566366&t=e418c683f1993d78f861e82b882cb6fd&page=1&id=2002&type=normal&tradeType=


我们首先要做的是,用最少的http协议复现浏览器最"原始"得到的http响应数据


我们使用Fiddler/PostMan/Postwoman/手码的方式去发送http请求 测试这些cookie 以及token 等协议头的作用区域


最后我根据测试得出 X-CSRF-TOKEN,Content-Type,Referer是必须存在的协议头,且POST数据不能有任何修改否则失败


6.png
接着我们理清楚哪些数据是从何而来的,首先看X-CSRF-TOKEN,我们使用FD进行全局文本搜索得到如下的结果


7.png
Token的数据来源是访问第一个HTML页面在 响应的HTML源码内的script标签内置的 可以使用一些文本查找处理代码进行获取,接着我们看POST的数据来源


根据分析time为10位时间戳,t是一个32长度的文本,根据常识我们猜测他是MD5


后面的 page id type 都是我们需要获取数据的一些明文参数就不用管了,我们需要的是知道t是怎么来的


我们前面说过,POST的内容只要任意的修改就会提交失败,并且还有时间戳的参数,按照通常的设计来看这是很明显的 MD5签名,并且是根据某些内容的变化而变化进行校验的


根据上面的猜测(MD5),我们在开发者工具 进行全局搜索"md5"的关键字,得到如下结果


8.png
点开后进行JS美化显示,我们看到了熟悉的 time && t,不多废话代码行数位置点上断点,尝试重新触发请求


9.png
10.png
我们看到t对象里面储存着我们POST里面的每项熟悉的参数


接着我们分析代码,time = 强转整数(当前13位时间戳 ÷ 1000)  -  time_diff  


根据FD的搜索我们发现 time_diff 也是来源于第一个HTML的请求内的script标签,我们只需要取出代码丢到JS引擎跑一下 或者自行文本翻译处理代码得到 time_diff  的结果


11.png
接着往下关键点 t = e,e= 一大坨混淆的代码,我们将这一戳代码拿到下面控制台运行是可以正常得到数据的


13.png
我们猜测他肯定是用了MD5加密,至于加密了什么,我们有两种方式得到这部分的原始代码


方法1:使用在线版反混淆 https://mindedsecurity.github.io/jstillery/# 当然这种方法 代码还是有点反人类


14.png
方法2:直接丢到新的窗口控制台运行,让他报错 我们点击报错的VM


15.png
16.png

显然方法2 让我们直接看清楚了加密的原理,md5 = window.md5 ,t = md5( 计算出来的10位时间戳 + Token )



完结,第一次发帖,回复支持一下吧!


评分

参与人数 2威望 +15 宅币 +50 贡献 +20 收起 理由
watermelon + 10 + 30 + 10 这字体也太大了!!!!
0xAA55 + 5 + 20 + 10 好大的字啊!

查看全部评分

回复

使用道具 举报

1096

主题

2683

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
240
威望
649 点
宅币
22706 个
贡献
46119 次
宅之契约
0 份
在线时间
2164 小时
注册时间
2014-1-26
发表于 2022-9-8 10:34:37 | 显示全部楼层
我也有这样的使用记事本的习惯。

你这个破 md5 加密方式的过程真是屌。

支持。

2

主题

3

帖子

167

积分

用户组: 小·技术宅

UID
7504
精华
0
威望
17 点
宅币
110 个
贡献
20 次
宅之契约
0 份
在线时间
3 小时
注册时间
2021-9-30
 楼主| 发表于 2022-9-8 12:50:37 | 显示全部楼层
0xAA55 发表于 2022-9-8 10:34
我也有这样的使用记事本的习惯。

你这个破 md5 加密方式的过程真是屌。

我经常 顺手Ctrl+R  输入notepad
快捷记录当前有用 可能比较重要的内容

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2022-9-26 21:32 , Processed in 0.041400 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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