利用python调用JS函数
利用python调用JS函数
利用python调用JS函数
起因:在做登陆界面的渗透测试时,对登陆功能进行弱口令检测,对目标地址爆破遇到了前端加密。
刚好学习一下如何使用python调用js的函数,竟然真的可以,万能的Py神!
安装PyExecJS库,对js文件函数进行调用
PyExecJS 是使用最多的一种方式,底层实现方式是:在本地 JS 环境下运行 JS 代码支持的 JS 环境包含:Node.js、PyV8、PhantomJS、Nashorn 等首先,我们需要安装依赖包 PyExecJS
1
python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple PyExecJS
然后,从 JS 文件中读取源码
1
2
3
4
5
6def js_from_file(file_name):
# 读取js文件
with open(file_name, 'r', encoding='UTF-8') as file:
jscode = file.read()
return jscode使用 execjs 类的compile()方法编译加载上面的 JS 字符串,返回一个上下文对象
1
2
3
4import execjs
# 编译加载js字符串
context1 = execjs.compile(js_from_file('./norm.js'))调用上下文对象的call() 方法执行 JS 方法其中参数包含:JS 代码被调的方法名、对应方法的传入参数
1
2
3
4
5
6# 调用js代码中的add()方法,参数为2和3
# 方法名:add
# 参数:2和3
result1 = context1.call("add", 2, 3)
print(result1)需要注意:js代码返回的字符串如果有特殊字符的话可能会出错。
解决方法:先将字符串进行base64编码后再返回。
1
2
3function a(str) {
return new Buffer(str).toString("base64");
}
下载目标js文件,并且安装其所需依赖
下载保存为target.js
1
const xxJS = require('crypto')
下载依赖,例如需要crypto依赖
1
npm install crypto
可以运行python脚本对js函数进行调用了
最后整理一下脚本:
ps:如果能写入burp就更好了,在这期间也看到了一些burp的python插件的开发
Burpy:连接你的BurpSuite和Python ==> 来自FreeBuf.COM
Github项目:https://github.com/mr-m0nst3r/Burpy
1 | import execjs |
Refer From:
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.




