您现在的位置是:首页 >其他 >js逆向之rpc远程调用(你强任你强,我无视一切)网站首页其他
js逆向之rpc远程调用(你强任你强,我无视一切)
简介js逆向之rpc远程调用(你强任你强,我无视一切)
一、找到加密函数位置
二、在其下面注入ws服务
(1)注入准备
资源>>替换>>随便选一个空文件夹
(2)进行注入
进行(1)操作后可直接编辑js代码了,做以下修改
(function() {
var ws = new WebSocket("ws://127.0.0.1:8080")
ws.onmessage = function(evt) {
console.log("收到消息:" + evt.data);
if (evt.data == "exit") {
wx.close();
} else {
ws.send(encrypt(evt.data));
}
}
}
)();
红框为插入的代码
修改完成后按 ctrl+s 进行保存,出现下载紫色点表示成功。
保存成功后,把所有断点去掉,运行下面python代码,然后刷新页面,即可进行python调用了。
三、开启ws服务,python进行调用
注意:先运行python代码再去刷新页面
import sys
import asyncio
import websockets
async def receive_message(websocket):
while True:
send_text = input("请输入要加密的字符串:")
if send_text == "exit":
print("退出!")
await websocket.send(send_text)
await websocket.close()
sys.exit()
else:
await websocket.send(send_text)
response_text = await websocket.recv()
print("加密结果:", response_text)
start_server = websockets.serve(receive_message, "127.0.0.1", 8080)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
四、测试效果
python测试效果,注:部署到服务器用flask写个接口就可以提供远程调用啦
谷歌控制台效果
四、部署到服务器
到服务器上也是按上面过程,ws注入不变,只修改python代码,然后用flask提供远程调用。
(1)开启ws服务
同样是进行ws注入后,运行下面代码,再刷新页面
python代码
import asyncio
import websockets
connected = set()
async def server(websocket):
connected.add(websocket)
try:
async for message in websocket:
for conn in connected:
if conn != websocket:
await conn.send(message)
finally:
connected.remove(websocket)
start_server = websockets.serve(server, "127.0.0.1", 8080)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
(2)开启flask服务
开启ws服务,刷新页面后,即可运行flask提供远程调用了
flask代码
import asyncio
import websockets
from flask import Flask,request
app = Flask(__name__)
loop = asyncio.get_event_loop()
async def hello(message):
# 连接 websocket 并发送消息 获取相应
async with websockets.connect("ws://127.0.0.1:8080") as websocket:
await websocket.send(message)
return await websocket.recv()
def get_encrypt(message):
return str(loop.run_until_complete(hello(message)))
@app.route('/',methods = ['POST', 'GET'])
def hello_world():
if request.method == 'GET':
encrypt_txt = request.args.get('encrypt_txt')
return get_encrypt(encrypt_txt)
if __name__ == '__main__':
app.run(host="0.0.0.0",port=80,debug=True)
(3)测试效果
测试效果不错,基本0.05s返回,预估每秒50并发无压力。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。