您的位置:首页 > 娱乐 > 明星 > js逆向——RSA实战案例讲解

js逆向——RSA实战案例讲解

2024/10/6 10:30:13 来源:https://blog.csdn.net/Tandy12356_/article/details/141778400  浏览:    关键词:js逆向——RSA实战案例讲解

受害者网站:http://www.15yunmall.com/pc/login/index

检查超时,这个我们不管他

直接分析参数,有2处加密位置,分别为password和csrftoken

只要是能够跟栈的,一律先在send的位置下断 

很快就跟栈找到加密数据的位置

RSA分析的重点:

1、new RSA(); //反正必须要new一个对象

2、setPublicKey; 一定要调用一个方法设置公钥(名称无所谓),需要有公钥和mode(一般为10001)

3、加密; 必须用到BigInt大数的运算

RSA扣取代码平均2000行左右,行数一定要大致对的上

把关键代码扣取出来,检查上面提到的new;setkey;publickey,mode是否都全面了!!!

var public_key="00bdf3db924714b9c4ddd144910071c282e235ac51371037cf89fa08f28b9105b6326338ed211280154c645bf81bae4184c2b52e2b02b0953e7aa8b25a8e212a0b";
var public_length="10001";
var rsa = new RSAKey();
rsa.setPublic(public_key, public_length);

一、RSA四件套测试

首先测试RSA必备的4件套(new,setkey,mode,publickey)能否正确得到了!!

注意一定要新开一个空白页面!!

提示:RSAKey is not defined,我们再次返回刚刚的界面去寻找RSAKey的定义,然后把代码扣取下来

我们在new RSAKey()上面打上断点

算法单独使用一个文件来实现,一共也就100多行,直接全部扣取下来

新扣取的代码一律放到最上面, 再次运行,报错:BigInteger is not defined

于是就再次回到之前的网页下断点分析 BigInteger的来源

发现又是一个500行左右的单独文件

直接全部复制下来,放到脚本的头部

再次运行就没问题了,注意脚本的命名要使用英文!

否则会报错:由于此 URI 格式不正确,因此在工作区尝试绑定“snippet:///%u5300%u52A0%u901F%u5546%u57CE”时失败。

二、RSA加密测试

尝试使用我们自己扣取的RSA算法来加密文本"123456"

结果报错,我们就继续缺啥补啥

同样把单独文件全部扣取下来

然后又报错:rng_psize is not defined

直接搜索rng_psize的定义位置

再次运行发现已经可以在浏览器的环境下正确进行RSA加密了

三、本地运行RSA代码

尝试使用js调试工具在本地运行代码,结果报错:navigator 未定义

本地一般都是确实浏览器的环境所导致的!!!

补环境主要2点:补/删(需要读逻辑)

删:删除的代码不参与最后的计算(只是一个逻辑判断)

补:参与本地计算/需要提交到服务器

对于数量不多的情况,可以考虑删除代码

直接在你不确定是否执行的代码前面打上debugger(本地脚本)

结果没用断下来,说明可以直接删除 

为了严谨起见,我们在fd中把相关代码注释掉

再次加载代码

一个分支语句到底走哪一个?我们在流程的最前面加上一个debugger看看到底进入哪一个流程

if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) {BigInteger.prototype.am = am2;dbits = 30;
}else if(j_lm && (navigator.appName != "Netscape")) {BigInteger.prototype.am = am1;dbits = 26;
}
else { // Mozilla/Netscape seems to prefer am3BigInteger.prototype.am = am3;dbits = 28;
}

这样前面的2条分支语句就可以注释掉了

再次在fd当中加载代码,这次成功了

然后我们尝试执行加密函数,也是顺利得到了加密结果

补充知识点:

函数返回undefined说明函数没用返回值,但是也有可能在函数的内部a.param.key=xxx这样赋值

ok,今天的你就到此为止吧,see you tomorrow

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com