某次渗透测试过程中发现这样一个页面
登录抓包时发现密码被加密了
遇到密码加密怎么办?直接谷歌打断点逆向啊
F12 全文搜索password字段
找到加密点 继续下去
搜索encryptedPassword
开启打断点
对194行和203打断点接下来进行调式
继续
成功得到加密后的密文 接下来就是如何批量生成
这里我们利用execjs模块
pip install pyexecjs
pyexecjs可以执行js文件 当然nodejs也行
主要这里是用来批量加密
案列:
这里定义一个s.js文件
function f(x,y) {
return x+y
}
python调用s.js
import execjs
with open('s.js', 'r', encoding='utf-8') as f: #代码意思为打开s.js文件
jstext = f.read()
ctx = execjs.compile(jstext) #加载js
x=1
y=2
result = ctx.call('f',x,y) #调用js里面的函数
print(result)
接下来就是利用python加密
这里的key在之前返回包中有我们直接导进去
function encryptedPassword(password){
//老的加密算法有问题,使用新的实现方法
var key = '10001&94dd2a8675fb779e6b9f7103698634cd400f27a154afa67af6166a43fc26417222a79506d34cacc7641946abda1785b7acf9910ad6a0978c91ec84d40b71d2891379af19ffb333e7517e390bd26ac312fe940c340466b4a5d4af1d65c3b5944078f96a1a51a5a53e4bc302818b7c9f63c4a1b07bd7d874cef1c3d4b2f5eb7871'
var split = key.split("&");
var publicKeyExponent = split[0];
var publicKeyModulus =split[1];
RSAUtils.setMaxDigits(200);
var key = new RSAUtils.getKeyPair(publicKeyExponent, "", publicKeyModulus);
var passwordEncry = RSAUtils.encryptedString(key,password.split("").reverse().join(""));//这里要对字符串进行反转,否则解密的密码是反的
return passwordEncry;
}
nodejs调式下
我们看到 RSAUtils未定义
继续上F12搜索RSAUtils
直接将代码抄下来
这里需要注意一个点 我们需要把encryptedPassword函数放在里面
去除$w和})(window);后继续debug下
这里oK
对比下之前浏览器后的密文
OJBK 没有任何问题
最后写入文件
没毛病