JS逆向 -- 某联盟登录密码分析

本文详细描述了一位技术专家如何使用F12开发者工具,通过抓包、定位JS文件、设置断点,逐步分析并复现了一个基于RSA加密的密码处理过程。在理解加密逻辑后,成功模拟了密码加密函数,最终能够运行并得到加密结果。
摘要由CSDN通过智能技术生成

一、输入账号密码

账号:15836353612
密码:123456

二、F12打开开发者工具,抓包分析,password被加密提交了

三、全局搜索password,定位到关键JS文件,下断调试

四、断下来后,查看formDate的值,正好是POST提交的数据,只是此时的password还没有加密

五、encryptedString(key, formData[i].value),这个是密码加密后的值,赋值给了password

六、通过new RSAKeyPair("10001", '', rsa_n),判断该加密应该是RSA加密

七、代码实现

1、基础代码

function aiyou(pwd){
var a='DC1683EEAA2B709F97743773E18F53E3C9A15D12465CE82227A6E447E6EC590D0B569876BB631B0AB4D67881E7EC874066D6E022E2978B4C6EAA8903EC1774AAE040A3BEAF9C2B48730ADD46BEF5F0C8109DB6FCEFED0F4A84CCD7AFFDB4FB4214DA0D0FF1A8E2831E81FA4D7C2F4346184EEC87CE42230FC320B2B4E392ECDF'
var key = new RSAKeyPair("10001", '', a);
var value = encryptedString(key, pwd);
return value
}

2、查找encryptedString函数所在js文件,将JS代码全部复制过来

3、加载代码,缺少biFromHex函数,查找该函数所在js文件,将JS代码全部复制

4、重新加载代码,缺少BarrettMu函数,查找该函数所在js文件,全部复制

5、重新加载代码,没有报错,双击要调用的函数,点击运行,会发现程序卡死了。

6、重新分析关键代码处,发现setMaxDigits函数,我们重新调用一下

7、关键代码如下

function aiyou(pwd){
setMaxDigits(131);
var a='DC1683EEAA2B709F97743773E18F53E3C9A15D12465CE82227A6E447E6EC590D0B569876BB631B0AB4D67881E7EC874066D6E022E2978B4C6EAA8903EC1774AAE040A3BEAF9C2B48730ADD46BEF5F0C8109DB6FCEFED0F4A84CCD7AFFDB4FB4214DA0D0FF1A8E2831E81FA4D7C2F4346184EEC87CE42230FC320B2B4E392ECDF'
var key = new RSAKeyPair("10001", '', a);
var value = encryptedString(key, pwd);
return value
}

8、点击运行,得到最终的运行结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web安全工具库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值