开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8032|回复: 7
收起左侧

[技术专题] 问答区的 js 之 arraybuffer

[复制链接]

结帖率:100% (2/2)
发表于 2021-1-28 18:23:43 | 显示全部楼层 |阅读模式   湖南省郴州市
https://bbs.125.la/forum.php?mod ... 14664021&extra=
老鸟绕道。文中如有错误,麻烦指出

大概看了下,这个算法,

浏览器加载完这个 js 后,会执行一个初始化操作

这个初始化,包括申请一块很长的内存堆(这就是为什么会boom 的缘故)

0x1 瞎J8搜索定位法

step1.png

在 Sources 处 ctrl + shift + f 搜索 password ,来到这里,下个断点,再点登录跑一次

step3.png

断下来之后,F9 跟进去

来到这里:

  
return function () {
return ccall (ident, returnType, argTypes, arguments, opts)
}


继续 F9 进去:

step5.png

根据传入的字符串型函数名,动态调用加密函数

妈妈咪啊,再一步步跟进去...

我们注意上面这个stringToUTF8 函数

step6.png

function stringToUTF8(str, outPtr, maxBytesToWrite) {
    return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite)
}


此处很熟悉的几个单词 Ptr 、HEAP ,像是在内存堆里面搞事情...

0x2 使劲扣就行

跟到这里,我们看到这个看到这个文件:2.20200901.js

大概看了下,这个文件几乎都是和加密有关的。

二话不说,ctrl + a 然后 ctrl + c

有一点需要注意,arraybuffer 是在 ES6 标准中才增加的,这是用来表示一段固定的二进制,所以我们得用 V8 来执行它(如果你非要杠的话,时间大把的话,也可以把他转换一下)

下图这些方法,也是和上面那个吊毛一起加进去的。

step7.png

好了,来加载运行它:

上面跟出来是调用 ccall('strEncrypt','string',['string'],['aaaaaaaaaaa,1611826834']) 来执行加密的,现在,我们也来调用它

step9.png

提示 189 行, console 是个黑户,找不到,删!!!

最终189和190行变成:

var out = Module["print"];
var err = Module["printErr"];



再跑起来。。。。

step10.png

提示 window 没有定义,先来个空对象,加进去,

var  window = {}

再跑起来.....

step11.png

提示 document 没定义。不着急

我们来看这两行代码

    if (ENVIRONMENT_IS_WORKER) {
        scriptDirectory = self.location.href
    } else if (document.currentScript) {
        scriptDirectory = document.currentScript.src
    }


这不就是获取一些文档的信息吗? 通过 搜索 scriptDirectory 关键词,搞清楚了它是想加载一些文件,oh,,,shit,

先删为敬!

整条 if 语句都删。。。。

最终变成

  
} else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
if (scriptDirectory.indexOf ("blob:") !== 0) {
scriptDirectory = scriptDirectory.substr (0, scriptDirectory.lastIndexOf ("/") + 1)
} else {
scriptDirectory = ""
}
{


再跑起来:

step12.png

提示 host 读不到,我们知道,host 是 window 的孙子,location 的儿子。。。

回到上面 ,var window = {} 再改下,我们需要把 host 写进去

变成:

  
var window = {
location: {
host: ' xxxx点com'
}
}


step13.png

再跑起来:

step14.png

是这样的吗?我们来验证一下:

vf1.png

vf2.png

ccall('strEncrypt','string',['string'],['aaaaaaaaaaa,1611826834'])


浏览器断点:"UhJOMQ2GS02sUla5g30P1hwoAb0CdjDw3a8EFGnz5DQ="
V8引擎计算: UhJOMQ2GS02sUla5g30P1hwoAb0CdjDw3a8EFGnz5DQ=



好了,至此,我们搞定了 phone 和 password 的加密


我们回过头来,注意到 header 里面还有个 sign


瞎J8搜索大发好,搜索  sign


step16.png

搜索了好久,看到非常熟悉的函数,和调用方法,果断下段,重新跑一下

step17.png

我们再来验证一下:

step18.png

正确,那么我们回到刚才的js中,对比一下计算结果

step19.png

ccall('get_sign','string',['string'],['1611828992,249508908bearer null'])

完全 OJBK

至此,加密算法全部被搞出来了!

感谢耐心观看,

如有帮助到你,能否伸出爱心小手加个分:


js:

1.txt (286.91 KB, 下载次数: 16)
step15.png

评分

参与人数 1好评 +1 精币 +3 收起 理由
石榴熟了 + 1 + 3 新技能已get√

查看全部评分


头像被屏蔽
结帖率:76% (19/25)
发表于 2021-4-25 11:00:51 | 显示全部楼层   河南省平顶山市
厉害了。我的哥哥
回复 支持 反对

使用道具 举报

结帖率:75% (3/4)
发表于 2021-2-24 21:40:29 | 显示全部楼层   湖北省武汉市
没看懂的。。,搭理我没课啦
回复 支持 反对

使用道具 举报

结帖率:14% (1/7)
发表于 2021-1-29 14:23:38 | 显示全部楼层   河北省保定市
帅吱吱
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 5 天

发表于 2021-1-28 22:18:16 | 显示全部楼层   浙江省衢州市
支持一下
回复 支持 反对

使用道具 举报

签到天数: 15 天

发表于 2021-1-28 21:28:01 | 显示全部楼层   河南省周口市
不错 学习了
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 1 天

发表于 2021-1-28 20:32:13 | 显示全部楼层   广西壮族自治区南宁市
不错 学习了
回复 支持 反对

使用道具 举报

结帖率:79% (30/38)

签到天数: 18 天

发表于 2021-1-28 19:16:43 | 显示全部楼层   山西省大同市
我喜欢这个:瞎J8搜索定位法

评分

参与人数 1好评 +1 收起 理由
Patek + 1 我读书少,不要骗我

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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