JS RPC-sekiro直接得到加密参数结果进行爬虫(同花顺)

前言

该文章为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系作者删除~

需求

目标网站:
aHR0cDovL3EuMTBqcWthLmNvbS5jbi8=

简介

RPC 在逆向中,简单来说就是将本地和浏览器,看做是服务端和客户端,二者之间通过 WebSocket 协议进行 RPC 通信,在浏览器中将加密函数暴露出来,在本地直接调用浏览器中对应的加密函数,从而得到加密结果,不必去在意函数具体的执行逻辑,也省去了扣代码、补环境等操作,可以省去大量的逆向调试时间。
sekiro RPC 可自行百度环境配置及使用方式

正文

在这里插入图片描述
抓包可知cookie值有一个v参数是加密的,且每次加载都会不一样

v=A8JnuPYkFUKgLwkeNYmpdiRAE8Mhk8TveJa6awzb76ngpGx99CMWvUgnCuzf

用hook找以下位置

(function () {
  Object.defineProperty(document, 'cookie', {
    set: function (val) {
      if (val.indexOf('v') != -1) {
        debugger;
      }
      console.log('Hook捕获到cookie设置->', val);
      return val;
    }
  });
})();

断住以后往下调用栈堆,找到这个位置
在这里插入图片描述
在这里插入图片描述
rt.update()就是生成的参数,进入方法内部
在这里插入图片描述
实际上是调用了方法D。在控制台导出,可以通过自己设置一个变量名进行调用
在这里插入图片描述
把所有断点放开,再测试是否能调用
接下来控制台注入RPC连接(复制以下代码到控制台)

https://sekiro.virjar.com/sekiro-doc/assets/sekiro_web_client.js

接下来写一段代码连接服务器并转发。也是控制台注入

function guid() {
    function S4() {
        return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
    }
    return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
// 连接服务端
var client = new SekiroClient("ws://127.0.0.1:5620/business-demo/register?group=ths&clientId="+guid());
// 业务接口 
client.registerAction("v",function(request, resolve, reject){
    resolve(xxx());
})

通过PY访问,同时开启sekiro提供的服务器

import requests
data = {"group": "ths",
        "action": "v",
       }
res = requests.get("http://127.0.0.1:5620/business-demo/invoke",params=data )
print(res.text)

最后

欢迎联系作者交流更多

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值