JS逆向之RSA(一)
难度: ⭐️
网站:https://beijing.tuitui99.com/denglu.html
介绍:表单提交的RSA,很简单
开始
首先确定我们想要逆向的值
可以看到是个表单提交
直接定位到表单提交触发的方法
全局搜一下
加密的地方很明显了
然后发现进了加密的库文件里,上下滑滑发现是RSA
那就很好办了,我们直接复制这个文件出来就可以了,而且很贴心的把我们把这个对象导出来了
但是我们知道RSA是有公钥的,那么我们找找设置公钥的地方,发现直接定位到了
好了已经没有难度了,重新提交一下,就可以拿到公钥了
那么我们就可以写出加密的方法
function encrypt() {
var encrypt = new JSEncrypt();
public_key = "-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAbfx4VggVVpcfCjzQ+nEiJ2DLnRg3e2QdDf/m/qMvtqXi4xhwvbpHfaX46CzQznU8l9NJtF28pTSZSKnE/791MJfVnucVcJcxRAEcpPprb8X3hfdxKEEYjOPAuVseewmO5cM+x7zi9FWbZ89uOp5sxjMnlVjDaIczKTRx+7vn2wIDAQAB-----END PUBLIC KEY-----";
encrypt.setPublicKey(public_key);
var encrypted = encrypt.encrypt("123456");
return encrypted;
}
看下结果,成功~
注意点
要注意公钥不一定是不变的,对于服务端渲染来说这个值可能是动态的,这种情况下就不能写死了,要通过xpath提取出来
另一种导出方式
在这个例子中对于加密的函数我们是不需要做操作的,文件里已经导出了
那么如果我们想自己导出呢,可以这样子
首先是定位到我们要导出的函数
翻到最下面加上jiami = JSEncrypt;
手动导出
修改一下我们写的加密方法
function encrypt() {
var encrypt = new jiami();
public_key = "-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDAbfx4VggVVpcfCjzQ+nEiJ2DLnRg3e2QdDf/m/qMvtqXi4xhwvbpHfaX46CzQznU8l9NJtF28pTSZSKnE/791MJfVnucVcJcxRAEcpPprb8X3hfdxKEEYjOPAuVseewmO5cM+x7zi9FWbZ89uOp5sxjMnlVjDaIczKTRx+7vn2wIDAQAB-----END PUBLIC KEY-----";
encrypt.setPublicKey(public_key);
var encrypted = encrypt.encrypt("123456");
return encrypted;
}
调用,没有问题~
本文含有隐藏内容,请 开通VIP 后查看