🗒️JsRPC yakit热加载
2025-7-18
| 2025-7-18
字数 1344阅读时长 4 分钟
type
status
date
slug
summary
tags
category
icon
password
😀
JsRPC原理学习与实践

涉及工具,教程

实操

执行后如图
notion image
打开yakit的靶场
notion image
注入如下的链接代码,加到f12代码段中执行即可
notion image
按照github的教程,建立通信,设定的组是zzz var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=zzz");
notion image
notion image
在/list接口可以看见连接情况
notion image

execjs接口执行自定义js代码

提交js代码到浏览器执行,通过接口/execjs
运行后f12出现test
notion image

远程调用1:无参获取值

运行后f12发现方法注册成功
notion image
调用注册的方法/go ,方法在客户端执行
notion image

远程调用2:带参获取值

notion image
notion image

远程调用3:带多个参获 并且使用post方式 取值

notion image
调用如下:
notion image

HMAC解密+JsRPC配置

notion image
通过搜索俩个关键字找到加密点signatureEncrypt(
notion image
notion image
配置jsrpc,在控制台直接调用Encrypt()发现可以成功,说明它是全局函数,全局函数可以在jsrpc的代码直接调用,非全局的需要提升到全局。
notion image
jsrpc自定义函数,采用调用方法2:
在JsRpc中,我们需要通过调用resolve回调来返回结果。而不能return Encrypt(input)
最后调用如下链接即可加密,达到免抠代码的结果
notion image

接口注册总结

通过如下python脚本自定义代码添加
以下三种方法注册时均可调用原网页的全局函数
单参数加密如下注册
多参数加密如下注册

原生base64加解密函数

处理当输入需要&等特殊符号的情况,需要改方法注册代码
拿到参数直接解密var param = atob(param);
notion image
注册后即可跟正常传参一样,传参直接传base64后的结果即可
notion image
notion image

yakit热加载

官方操作文档:
 
调用方式:{{yak(funcname|param)}} 函数名|参数|参数|……
代码:跟yak runner一样,除了新定义一个函数signRequest,它接受一个参数result。将输入的result字符串按照竖线"|"分割成两部分(最多分割成两部分),然后对分割后的第一部分进行某种基础处理(base_word函数),接着将处理后的结果和本地地址127.0.0.1以及端口12080一起传递给handleCheck函数,最后返回handleCheck的结果。
notion image
配置好后fuzz成功,但是设置俩个fuzz位置需要选择交叉/同步 ,默认交叉乘积
选择的字典有511个,交叉乘积就会触发511*511请求,选择同步会1对1 ,一共511请求
notion image
  • js加解密
  • 溯源学习HTB Alert实战(攻)
    Loading...