您现在的位置是:首页 >其他 >js逆向之rpc远程调用(你强任你强,我无视一切)网站首页其他

js逆向之rpc远程调用(你强任你强,我无视一切)

云霄IT 2023-06-26 04:00:02
简介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并发无压力。

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。