吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2580|回复: 3
收起左侧

[其他转载] 04-咪咕视频登录RSA分析

  [复制链接]
miboy 发表于 2020-9-23 11:44
省略登录url参数,得到精简版的login页面https://passport.XXXX.cn/login

输入测试账号密码,开启抓包,看看登录的请求。

观察到页面共发起两个xhr请求。分别是publickey获取加密的参数,authn用于登录。

publickey请求返回:

authn请求返回:


authn请求传参:



遇到这一堆字符串,新手已经alt+f4了,但其实不要把困难看太高,学会把很多困难拆分成一个一个,逐一攻破。完事回头再看,也就那么回事,都是吓唬人的。

找加密也讲究经验和方法,一般我都是从密码加密开始的。先全局搜索一下,看看有没有指定的参数名。
ctrl+shift+F 调出全局搜索:enpassword



貌似结果不尽如人意,发现这个name还有个class名,顺便看看这个类名有没有。于是,在loginPage.js文件中发现两处,点进去看看。

惊喜的发现,这三段代码看起来是页面所有的参数加密都在这里。
红框(1):创建RSA对象,设置key,加密密码字段并设置值;
蓝框(2):创建RSA对象,设置key,加密账号字段并设置值;
绿框(3):将页面的modulus和publicExponent参数传入rsaFingerprint函数,取得结果并设置值。


以上是目前观察得出的结论,还需断点调试,看看是不是真的这里。
再次点击登录,果然,进入这段代码了。


找到目标了,那就进去看看怎么实现的。(部分代码)

显然,我们需要把关联到的加密函数都复制下来。导入到webstorm里,缺啥补啥。


这边JS代码是将对象导出,我们不需要,直接赋值给全局变量就行。
[JavaScript] 纯文本查看 复制代码
ab.prototype.nextBytes = _,
db.prototype.doPublic = fb,
db.prototype.setPublic = eb,
db.prototype.encrypt = gb;//注意这里要改成分号,结束
var RSAKey = db;//直接把对象赋值给RSAKey

c = new r.RSAKey;
c.setPublic(a.result.modulus, a.result.publicExponent);
var d = c.encrypt(b.val());
接下来,就可以把上面这三行加密代码,封装成自己的加密函数,以供外部调用。
[JavaScript] 纯文本查看 复制代码
var modulus = "00833c4af965ff7a8409f8b5d5a83d87f2f19d7c1eb40dc59a98d2346cbb145046b2c6facc25b5cc363443f0f7ebd9524b7c1e1917bf7d849212339f6c1d3711b115ecb20f0c89fc2182a985ea28cbb4adf6a321ff7e715ba9b8d7261d1c140485df3b705247a70c28c9068caabbedbf9510dada6d13d99e57642b853a73406817"
var publicExponent = "010001"
function encrypt(text){
  var c = new RSAKey();
  c.setPublic(modulus, publicExponent);
  return c.encrypt(text)
}

console.log(encrypt('qq1234'))
//70778fb8df8fff56fd313399253335c96358e07083a07030c60eda4c89e3c63788633969a499d363e2efa12d50adaf5499c42bb3e74212c120773a5afe59578d4b34ea13816ada9b896af7c05c8d6d51e792123eeee8cbd9d7729c496e0fdfb018cb19a682571e5e3a1cb27082a0beddce90f9f806bd2cc106eac6a4c1ac139a



通过这个encrypt函数,就可以直接算出加密字段loginIDenpassword。紧接着,来看看fingerPrint和fingerPrintDetail。根据上文所述,这两个参数,在经过rsaFingerprint方法后得到。于是我们进入这个函数,也尝试构造加密方法。
var b = q.page.rsaFingerprint(a.result.modulus, a.result.publicExponent);

image.png

免费评分

参与人数 5威望 +1 吾爱币 +15 热心值 +5 收起 理由
buyu + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
火绒 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
_小白 + 1 + 1 我很赞同!
苏紫方璇 + 1 + 10 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Menguy + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

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

latvro 发表于 2020-9-23 14:55
谢谢你分享,向你学习
w92vv 发表于 2020-9-23 17:38
aq78 发表于 2020-11-6 14:39
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-4-17 04:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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