【JS逆向学习实践】某翼云盘登录从头分析(一)

查看 154|回复 10
作者:503671998   
又找来一个练手站点,地址就不放了,有兴趣的可以自己去找,首先抓包分析


1.png (55.62 KB, 下载次数: 0)
下载附件
2022-4-26 11:00 上传

可以看到出现图片验证码,请求中有一项needCapture的请求,这是判断是否需要验证码其返回值为1则为需要,为0则不需要,看下请求数据


2.png (21.2 KB, 下载次数: 0)
下载附件
2022-4-26 11:02 上传

一共三项数据,只有userName是动态变化的,明显看到是经过加密的,先解密吧,从入口跟进去


3.png (27.03 KB, 下载次数: 0)
下载附件
2022-4-26 11:03 上传

跟进去之后可以看到,请求地址一样,将userName进行了RSA加密


4.png (84.65 KB, 下载次数: 0)
下载附件
2022-4-26 11:05 上传

Rsa可以抠代码也可以套用现成的库,我这里抠加密代码,下断点


5.png (61.28 KB, 下载次数: 0)
下载附件
2022-4-26 11:07 上传

跟进去看到实际上调用了encrypt的encrypt的方法进行加密,看下encrypt是JSEncrypt,将他抠出来


7.png (44.67 KB, 下载次数: 0)
下载附件
2022-4-26 11:12 上传

是一个导出函数,跟进去将他们全部抠出来就行了


8.png (44.71 KB, 下载次数: 0)
下载附件
2022-4-26 12:10 上传

将全部代码复制出来,折叠方便看,可以看到下面有一个var JSEncrypt = JSEncryptExports.JSEncrypt,这个JSEncrypt就是上面的那个对象了,再看一下加密函数


9.png (38.73 KB, 下载次数: 0)
下载附件
2022-4-26 12:13 上传

它是由RSA_Pwd这个对象调用的,看下这个对象,里面有一个setPublicKey


10.png (32.13 KB, 下载次数: 0)
下载附件
2022-4-26 12:14 上传

分析可以看到,这个Key是动态请求的,我们为了方便测试直接写固定的,下面是调用代码
function getRsa(val){
    // key动态获取
    key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCZLyV4gHNDUGJMZoOcYauxmNEsKrc0TlLeBEVVIIQNzG4WqjimceOj5R9ETwDeeSN3yejAKLGHgx83lyy2wBjvnbfm/nLObyWwQD/09CmpZdxoFYCH6rdDjRpwZOZ2nXSZpgkZXoOBkfNXNxnN74aXtho2dqBynTw3NFTWyQl8BQIDAQAB"
    var jSEncrypt = new JSEncrypt
    jSEncrypt.setPublicKey(key)
    var rsaStr = "{NRP}" + jSEncrypt.encrypt(val);
    console.log(rsaStr)
}
这样就得出加密后的userName了

下载次数, 下载附件

503671998
OP
  


Hmily 发表于 2022-4-28 17:58
@503671998 这个文章也不算长,就不要拆分写了,后面追加直接编辑帖子继续合并写吧。

哦哦好的
yanplr   

没看到这篇文章,我自己搞了半天,过程基本没差,但是卡在了navigator和window的环境模拟上了,不知道怎么解决……
AIRTIM   

学习学习!!
kewudezhangsan   

这就是大佬的练手吗
msfvenom   

有(一)就有(二),期待一波更新
kds0221   

感谢楼主分享,学习学习
soyadokio   

浅显易懂,小白可以跟着做,感谢。
期待第二集
等到烟火也清凉   

没了?就1个扣USERNAME...
xuezhou   

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

返回顶部