jsrpc進階模式 秒殺js前端逆向問題 burp聯動進行爆破

案例演示

思路就是 這個 jsrpc遠程加載加密函數的方法就是? 在js代碼中進行插入一個 遠程加載的代碼 從而實現 :

第一步還是使用 js_tools 進行

查找算法的位置 這個可以幫助我們找到明文=>密文? 加密算法函數的位置

因為這個需要我們進行js前端代碼的修改 所以我們還需要使用本地覆蓋的方法

創建一個本地覆蓋的項目? 把這個帶有加密函數的 js文件替換到替換內容中去

在此之前 我們先 進行聯動一下

執行hook 然后我們修改一下 加密函數那個位置的代碼

var demo =new H1client("ws://127.0.0.1:12080/ws?group=xiaodi&name=xiaodisec");
//這個是 進行遠程的會話連接
demo.regAction("pass",function(resolve,param){   //創建一個新的行為  pass 他的作用就是調用 l() 函數   這樣我們進行連接的時候這個l() 其實就是被調用到了遠程地址的位置  :ws://127.0.0.1:12080/ws?group=xiaodi&name=xiaodise 這個就是我們的遠程地址resolve(l(param));
})// 備用代碼
var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=xiaodi");demo.regAction("pass",function(resolve,param){resolve(l(param));});

第二個練習案例

?先導入??內的代碼

https://passport.meituan.com/account/unitivelogin

然后我們根據這個發起程序進行調試堆棧找加密的地方

var demo = new Hlclient("ws://127.0.0.1:12080/ws?group=xiaodi");
// 創建一個rpc的實例  實例的地址是  //127.0.0.1:12080          密碼是  xiaodidemo.regAction("pass",function(resolve,param){resolve(encrypt.encrypt(param));});// 創建實例的一個方法  名稱為 pass  需要傳入一個參數 param

然后完成這些之后 我們直接訪問本地的console 就完事了

http://127.0.0.1:12080/go?group=xiaodi&action=pass&param=123456

因為xiaodi這個組內只有一個 方法所以我們是不用寫name的? 但是如果需要多個接口需要給接口名字

這個就是123456加密的數據

可以使用對方的瀏覽器測試 我們把密碼寫為 123456

但是密碼變了? 所以這個對方是使用的特點庫并且是有偏移的

每次刷新

http://127.0.0.1:12080/go?group=xiaodi&action=pass&param=123456

也會進行變化?

聯動burp進行爆破的思路

對于這樣的js保護的加密我們進行bp的思路 :1、直接把字典換為加密之后的 然后使用加密之后的字典進行 bp? ?2、使用加密邏輯的接口(auto decode插件的功能) 然后我們只需使用明文字典進行bp即可

但是這個mt的這個肯定是不行的因為是動態的

當然思路是通的 讓ai 寫個腳本

import requests
import json
from urllib.parse import quote
import timedef encrypt_data(dictionary_path, output_file):"""讀取字典文件,發送加密請求,保存加密結果:param dictionary_path: 字典文件路徑:param output_file: 結果保存路徑"""# 讀取字典文件try:with open(dictionary_path, 'r', encoding='utf-8') as f:words = [line.strip() for line in f if line.strip()]print(f"成功讀取字典文件,共 {len(words)} 個條目")except Exception as e:print(f"讀取字典文件失敗: {str(e)}")return# 處理每個單詞的加密請求results = []success_count = 0fail_count = 0print("\n開始加密處理...")for i, word in enumerate(words):try:# URL編碼并構造請求URLencoded_word = quote(word)url = f"http://127.0.0.1:12080/go?group=xiaodi&action=pass&param={encoded_word}"# 發送HTTP請求response = requests.get(url, timeout=10)response.raise_for_status()  # 檢查HTTP錯誤# 解析JSON響應并提取data字段json_data = response.json()if 'data' in json_data:encrypted = json_data['data']results.append(f"{word} -> {encrypted}")success_count += 1status = "?"else:results.append(f"{word} -> 錯誤: 響應中缺少data字段")fail_count += 1status = "?"# 進度顯示progress = (i + 1) / len(words) * 100print(f"[{status}] [{i+1}/{len(words)} {progress:.1f}%] {word.ljust(20)} => {encrypted if 'data' in json_data else 'ERROR'}")except requests.exceptions.RequestException as e:results.append(f"{word} -> 網絡請求失敗: {str(e)}")fail_count += 1print(f"[?] [{i+1}/{len(words)}] {word} - 網絡錯誤: {str(e)}")except json.JSONDecodeError:results.append(f"{word} -> 錯誤: 無效的JSON響應")fail_count += 1print(f"[?] [{i+1}/{len(words)}] {word} - 響應不是有效的JSON")except Exception as e:results.append(f"{word} -> 未知錯誤: {str(e)}")fail_count += 1print(f"[?] [{i+1}/{len(words)}] {word} - 錯誤: {str(e)}")# 添加延遲避免服務器壓力time.sleep(0.1)# 保存結果到文件try:with open(output_file, 'w', encoding='utf-8') as f:f.write("\n".join(results))print(f"\n處理完成: 成功 {success_count}, 失敗 {fail_count}")print(f"加密結果已保存到: {output_file}")except Exception as e:print(f"結果保存失敗: {str(e)}")if __name__ == "__main__":# 配置參數dictionary_file = "1.txt"  # 字典文件路徑result_file = "encrypted_results.txt"  # 結果文件路徑print("="*60)print("字典加密處理工具")print("="*60)print(f"字典文件: {dictionary_file}")print(f"結果文件: {result_file}")print(f"目標API: http://127.0.0.1:12080/go?group=xiaodi&action=pass&param=")print("="*60 + "\n")encrypt_data(dictionary_file, result_file)

第二種方法 : 使用接口加密

明文字典爆破 這個就可以應用在動態 加密數據 因為接口也是動態的

聯動? 先改一下設置

然后這個還需要一個監聽的 接口的腳本 :

import requests
import json
from urllib.parse import quote
from flask import Flask, requestapp = Flask(__name__)  
url = "http://localhost:12080/go"   # 這個需要和 rpc的端口一致
@app.route('/encode',methods=["POST"])    #訪問這個 /encode的時候需要帶參數
def encrypt():  param = request.form.get('dataBody')  # 獲取  post 參數  #print(json.dumps(param))param_headers = request.form.get('dataHeaders')  # 獲取  post 參數  這個參數需要進行傳遞param_requestorresponse = request.form.get('requestorresponse')  # 獲取  post 參數  data = {"group": "xiaodi",# "name": "xiaodisec","action": "pass","param": json.dumps(param)}res = requests.post(url, data=data) #這里換get也是可以的encry_param = json.loads(res.text)['data']print(encry_param)if param_requestorresponse == "request":  return param_headers + "\r\n\r\n\r\n\r\n" + encry_param  return encry_param@app.route('/decode',methods=["POST"])  
def decrypt():  param = request.form.get('dataBody')  # 獲取  post 參數  param_headers = request.form.get('dataHeaders')  # 獲取  post 參數  param_requestorresponse = request.form.get('requestorresponse')  # 獲取  post 參數  print(param)data = {"group": "xiaodi","name": "xiaodisec","action": "dec","param": param}res = requests.post(url, data=data) #這里換get也是可以的decrypt_param = json.loads(res.text)['data']print(decrypt_param)if param_requestorresponse == "request":  return param_headers + "\r\n\r\n\r\n\r\n" + decrypt_param  else:  return decrypt_param  if __name__ == '__main__':  app.debug = True # 設置調試模式,生產模式的時候要關掉debug  app.run(host="0.0.0.0",port="8888")

這個是根據 .jar 插件改的

這個聯動的原理:? 就是

這個腳本會監聽本地的8888? 然后 aoto對應的就是 8.8.8.8 無論是加密還是解密

我們訪問web的時候這個插件會進行轉發到 把加密的數據 發到 8.8.8.8 (數據的定位需要進行工具的配置) 然后 這個 8.8.8.8 web會根據 falsk的指令然后去訪問??

127.0.0.1:12080/go?group=xiaodi&action=pass&param=123

然后param 是 8888 端口進行轉發的數據 就會顯示加解密(這邊是實現的加密) 然后接口獲得加密數據之后 就會對我們的數據包的參數進行 加密為加密的數據? 這樣我們就能單憑借 明文字典就能實現bp

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82776.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于BERT-Prompt的領域句子向量訓練方法

基于BERT-Prompt的領域句子向量訓練方法 一、核心原理:基于BERT-Prompt的領域句子向量訓練方法 論文提出一種結合提示學習(Prompt Learning)和BERT的領域句子向量訓練方法,旨在解決裝備保障領域文本的語義表示問題。核心原理如下: 以下通過具體例子解釋傳統詞向量方法和…

Python PyMySQL

1.PyMySQL是什么 是Python操作mysql的一個包 2.PyMySQL使用基本步驟 2.1 創建連接 conn pymysql.connect(host10.248.53.148,password123456,port3306,userroot,databasetest_database,charsetutf8)2.2 游標 2.2.1 什么是游標 游標實際上是一種能從包括多條數據記錄的結果…

OC—UI學習-1

OC—UI學習 UILabel UILabel是UIKit框架中的一個類Label主要參數 text:文本frame:位置框架backgroundcolor:背景顏色textAlignment:設置文本在Label中的位置textColor:文本顏色shadowColor:陰影顏色shado…

【應用密碼學】實驗七 Hash函數——SM3

一、實驗要求與目的 理解哈希函數的基本原理及在密碼學中的應用;掌握國密哈希標準 SM3 的算法結構;編程實現 SM3 摘要算法,包括消息填充、消息擴展、壓縮函數及摘要輸出;對中間變量 W、W′ 和 A~H 的迭代過程進行可視化&#xff…

進行性核上性麻痹護理之道:助力患者舒適生活

進行性核上性麻痹是一種緩慢進展的神經退行性疾病,主要影響患者的運動、語言和吞咽功能,給日常生活帶來諸多不便。除了遵醫囑接受藥物或物理治療,科學的健康護理對延緩病情發展、提升生活質量尤為重要。 運動康復是護理的關鍵環節。由于患者常…

5G 核心網中 NRF 網元的功能、接口及參數詳解

引言 在 5G 核心網的架構體系里,網絡存儲功能(Network Repository Function,NRF)占據著關鍵地位,承擔著核心網網絡功能(Network Function,NF)的注冊、發現以及服務管理等重要任務,為整個 5G 網絡的高效穩定運行提供了堅實支撐。接下來,讓我們深入剖析 NRF 網元在注冊…

HUAWEI交換機配置鏡像口驗證(eNSP)

技術術語: 流量觀察口:就是我們常說的鏡像口,被觀察的流量的引流目的端口 流量源端口:企業生產端口,作為觀察口觀察對象。 命令介紹: [核心交換機]observe-port [觀察端口ID或編號(數字&am…

Spring AI Alibaba 發布企業級 MCP 分布式部署方案

作者: 影子,劉宏宇,劉軍 Spring AI 通過集成 MCP 官方的 java sdk,讓 Spring Boot 開發者可以非常方便的開發自己的 MCP 服務,把自己企業內部的業務系統通過標準 MCP 形式發布為 AI Agent 能夠接入的工具;…

Redis實戰-緩存篇(萬字總結)

前言: 今天結合黑馬點評這個項目,講下有關Redis緩存的一些內容,例如緩存更新策略,緩存穿透,雪崩和擊穿等。 今日所學: 什么是緩存緩存更新策略緩存穿透緩存雪崩緩存擊穿緩存工具封存 目錄 1.什么是緩存…

openFuyao開源發布,建設多樣化算力集群開源軟件生態

openFuyao 開源發布 隨著 AI 技術的高速發展,算力需求呈爆發式增長,集群已成為主流生產方式。然而,當前集群軟件生態發展滯后于硬件系統,面臨多樣化算力調度困難、超大規模集群軟件支撐不足等挑戰。這些問題的根源在于集群生產的…

深入理解 Redis 哨兵模式

Redis 哨兵模式深度解析:從原理到實踐的全流程指南 在分布式系統架構中,Redis 作為高性能的內存數據庫,其哨兵模式(Sentinel)是保障服務高可用性的核心方案。本文將從基礎概念、運行機制出發,結合具體配置…

HackMyVM-Find

信息搜集 主機發現 ┌──(root?kali)-[~] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:39:60:4c, IPv4: 192.168.43.126 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.43.1 c6:45:66:05:91:88 …

2025年滲透測試面試題總結-匿名[校招]安全服務工程師(題目+回答)

安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具,歡迎關注。 目錄 匿名[校招]安全服務工程師 一面問題與完整回答 1. 學校、專業、成績與排名 2. 學習安全時長 3. 當前學習…

TopCode之手撕快排

題目鏈接 912. 排序數組 - 力扣&#xff08;LeetCode&#xff09; 題目解析 算法原理 使用數組分三塊的思想 i用來遍歷整個數組 left用來標記<key的邊界 right用來標記>key的邊界 然后i進行遍歷,數組就分成了四塊 [l,left]<key [left1,i-1]key [i,right-1]未…

bi軟件是什么?bi軟件是做什么用的?

目錄 一、BI 軟件是什么 1. 基本概念 2. 工作原理 二、BI 軟件是做什么用的&#xff1f; 1. 精準洞察市場趨勢 2. 優化企業戰略規劃 3. 輔助投資決策 三、如何選擇合適的 BI 軟件 1.功能匹配度 2.易用性和可擴展性 3.數據安全和穩定性 4.技術支持和服務 總結 生產…

11.14 LangGraph檢查點系統實戰:AI Agent會話恢復率提升287%的企業級方案

使用 LangGraph 構建生產級 AI Agent:LangGraph 持久化與記憶的"檢查點系統的實現" 關鍵詞:LangGraph 檢查點系統,多回合記憶,狀態持久化,會話恢復,AI Agent 容錯機制 1. 檢查點系統的核心價值 在復雜對話場景中,AI Agent 需要處理長達數十輪甚至數百輪的交…

鴻蒙完整項目-仿盒馬App(一)首頁靜態頁面

跟著鴻蒙小林博主&#xff0c;練習下項目~記錄下首頁的搭建,后續繼續完善和整體項目完成會進行布局修改&#xff0c;先按照博主的跟做&#xff0c;后續在改 1.分為底部整體框架搭建 2.首頁布局&#xff08;頂部搜索、新人專享、金剛區&#xff08;兩個不同集合數據&#xff09…

LINUX安裝運行jeelowcode后端項目(idea啟動)

參考 LINUX安裝運行jeelowcode后端項目&#xff08;命令行&#xff09;-CSDN博客 IntelliJ IDEA下載地址&#xff08;社區版、付費版&#xff09;-CSDN博客 軟件已安裝好&#xff0c;數據庫也初始化完畢。 步驟1&#xff1a;打開項目目錄步驟2&#xff1a;配置JDK步驟3&…

Web Vitals 核心指標快速掌握指南

Next.js 內置了對測量和報告性能指標的支持,我們可以通過 useReportWebVitals 鉤子自行管理報告。它會在應用的前端代碼開始之前運行,用于對應用進行全局分析、錯誤跟蹤以及性能監控。 本篇內容主要詳細介紹 6 個性能分析的指標,幫助我們更好的進行性能優化。 1. TTFB 定…

專業課復習筆記 10

感覺專業課就是考研的幾個科目里面難度最高的科目&#xff0c;我要好好加油&#xff0c;爭取拿下一百二十分。這個要是過不了線&#xff0c;考研基本廢完了。我感覺專業課練習題沒有說像是數學那么多練習題&#xff0c;反而是需要自己仔細去理解里面的知識&#xff0c;記住知識…