記一次小程序加解密測試

2021-02-07 Python數據分析師
1.前言

由於小程序的便捷性,越來越多的應用遷移到了了小程序上,由此伴隨著小程序上線前的日常滲透測試工作也開始增加。但小程序的測試中經常會遇到數據包被加密了,導致無法進行改包測試。和測試網頁數據包加密一樣,就需要找到小程序前端相應的加解密方法進行加解密數據包改包測試。

2.小程序前端源碼提取

不同於網頁f12查看網頁源碼即可查看搜索相應加解密函數,小程序雖然也是三大組件但其前端源碼存放在微信安裝包的wxapkg包中,我們需要使用一個root設備提取處相應的wxapkg包,並還原出前端源碼。文件一般位於 /data/data/com.tenc ent.mm/MicroMsg/appbrand/pkg/(安卓系統,以下測試都在安卓機下進行)目錄下。

提取的時候需要準備一臺root手機或使用夜神等模擬器均可,然後使用adb進入/data/data/com .tencent.mm/MicroMsg/appbrand/pkg/,提取相應的文件。由於wxapkg的命名時隨機的,可以使用ls -al 命令根據你所安裝小程序時間來判斷提取相應小程序的wxapkg包。.wxapkg是一個二進位文件,有其自己的一套結構,具體可以參考該連結。

接下來就需要對wxapkg文件進行反編譯提取相應的前端源碼,一般是搭建nodejs環境進行反編譯還原。我比較懶不太想搭喜歡用傻瓜式操作,這邊推薦一個小程序反編譯工具CrackMinApp,具有圖形化的操作界面及所需依賴環境。界面長這樣:

下載和操作指南可以參考它的github項目,還原後的前端源碼就這樣:

3.開始測試

第一步就是要找到前端源碼中的加解密的方法,一行行代碼去找肯定不現實太費時間,一般都全局搜 encrypt、decrypt、AES、DES、RSA這些關鍵詞。一般來說基本都用對稱加密且AES出現的頻率最高,如下所示直接找到相應的加解密方法和密碼。


用的還是ECB模式這這這。之後就好辦了開始測試發現兩個高危,中低危就不描述了,說實話加密的數據包解密後一般漏洞較多。

3.1任意用戶登錄

在忘記密碼處輸入手機號點擊發送驗證碼,如下所示:


在驗證碼輸入框內輸入任意6位數字,如下所示:

點擊下一步,攔截伺服器返回數據包,如下所示:


數據包內容解密結果如下:

將返回數據包改成如下形式{"code":200},加密後數據包發至客戶端,欺騙成功跳轉至設置密碼處如下所示:

設置任意密碼提交後即可成功修改密碼,如下所示:

利用修改完的密碼可成功登錄,從而實現任意用戶密碼修改。

3.2 SQL注入

在發現處搜索項目抓取相應的數據包,重放返回如下數據信息:

解密後為項目數據信息,如下所示:


修改POST參數值itemName為』,發現伺服器返回500錯誤如下所示:



由於服務端返回的數據項目名稱為例如某某公司,POST數據輸入搜索參數為該公司名稱有數據返回,輸入搜索關鍵詞為"公司「時無數據返回,故猜測sql語句邏輯為模糊查詢為如下所示:

'select * from table where clo like '+canshu+'%'

故構造payload首先猜測資料庫用戶名長度如下所示:

{"pageNum":1,"pageSize":10,"itemName":"%' and concat((case when length(user)>=3 then '1' else '0' end),'%')='1","bondName":""}

加密後在POST包中發送如下所示當長度大於等於3時返回正常,大於等於4時無數據返回,故判斷得到資料庫用戶名長度為3,如下所示:



同理構造如下payload猜測資料庫用戶名,如下所示:

{"pageNum":1,"pageSize":10,"itemName":"%' and concat((case when ascii(substr(user,3,1))>=67 then '1' else '0' end),'%')='1","bondName":""}

之後就不深入了,測完收工。


相關焦點

  • 解密混淆的PHP程序
    如果我們能夠得到eval函數的參數,即可獲得解密後的代碼。不過,一般來說PHP的混淆都會通過多次eval來還原並執行php代碼,所以我們可以通過hook PHP的eval函數來列印其參數來解密代碼。注意,由於我們後面要進行調試,所以要在編譯時加上-g參數,加調試符號。./configure CFLAGS="-g" CXXFLAGS="-g"make -j16接著我們使用gdb調試php程序。
  • Springcloud序之Springboot2x模塊化+rest assured+AES加解密實現
    本文主要使用Springboot進行多模塊項目的實現方式,並結合接口測試常用框架rest assured以及AES加解密來綜合講解多模塊項目的一些常用功能的實現。並作為後續Springcloud的序篇,後面我會以模塊化項目的方式來逐步實現Springcloud各個組件的講解與代碼演示,以期和大家一起對Springcloud常用功能有更深入的理解。
  • 記一次偶然發生的滲透測試
    0x00 信息搜集話還要從最近網上轉載的一篇文章說起—據說某家校通系統存在後臺萬能密碼登錄—於是點進去看了一下,然後從文章的某些特徵猜到了這個家校通系統,之後就某度一波,然後就發現一堆網站,隨便挑了一個,進行測試。找到測試目標,找到後臺入口,然後開始搞事情
  • 記一次搭建Appium自動化測試環境的完整過程
    Appium是一個開源的自動化測試框架,支持跨平臺,支持多種程式語言,可用於原生,混合和移動web應用程式,使用webdriver驅動ios,android
  • 抖音測試小程序是怎麼玩的?
    因為今年疫情,一直想找一個第三個增長點,我們思考了哪個盤子大與穩,我們這邊發現電商盤子的確來講是比較穩的,而且相對於其他的變現方式也是最高效的,所以我們把新的增長點就定位在短視頻+電商,所以最近也正在做各種各樣的測試,今天就把抖音測試小程序的測試路徑分享一下。
  • PLC程序加密解密方法詳解
    大家都知道,很多品牌PLC的程序都可以通過軟體解密,那麼一旦解密後程序就非常透明的顯示在了別人的眼中,而將設備賣給別人又將PLC程序整個鎖死的話又不切實際,甲方會無法維護;而保密和維權更是中國市場經久不衰的話題,其實德國的工程師從來不會給自己的程序整體加密,而是使用其他方式,既不影響發生故障時的診斷,又可以保護自己的核心機密。今天給大家介紹一下這些方式,供大家參考。
  • 西門子plc程序加密和程序塊加密及解密方法
    第一種情況是在硬體組態中,在CPU屬性中按照保護等級設置密碼,將CPU中程序鎖住,不影響CPU的正常運行。這種情況是往往是程序設計編程人員出於安全和智慧財產權的保護等目的而進行的設置。常見的加密方式有三種。1、程序可讀出,數據可修改,運行可監視,只是程序不可更改。
  • 一次逆向解密的解讀
    前提       本文為攻防世界的CTF題目web分項裡面的一道逆向解密題目
  • 記一次內衣滲透測試
    權限有點小低這步操作其實就是湊點字數 ,哈哈哈哈0x05 權限維持 這裡就拿本機測試了粘滯鍵後門 在windows上連續按5次「Shift」,就可以調出粘滯鍵,或者直接執行如下命令添加啟動項 REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v test /t REG_SZ /d "C:\shell.exe" 當管理員重新登錄系統時,就會執行後門程序
  • 職業性格測試小程序,你的性格最適合什麼職業?
    職業性格測試小程序職業性格測試、職業性格測試MBTI、職業性格測試免費版、職業測試分析
  • 淺談加解密
    對稱加密即加密密鑰和解密密鑰是同一個密鑰。非對稱加密則是使用不同的密鑰加解密。1、AES加密AES加密密鑰長度有:128、256、512,加密模式有:CBC、ECB、CTR、OCF、CFB。填充模式有:NoPadding、PKCS5Padding、PKCS7Padding、ISO10126Padding、ZerosPadding等。
  • 為「左右腦年齡測試」小程序正名
    寫這篇文章算是幫該小程序正個名吧,首先測試之後有兩個結論:1,該小程序左右腦年齡測試的結果並不是隨機給出的; 2,一些大v公眾號的文章應該是實習生寫的,應該是沒有進行測試就得出了「隨機給出測試結果」這個結論。
  • 為左右腦年齡測試小程序正名
    寫這篇文章算是幫該小程序正個名吧,首先測試之後有兩個結論:1,該小程序左右腦年齡測試的結果並不是隨機給出的; 2,一些大v公眾號的文章應該是實習生寫的,應該是沒有進行測試就得出了「隨機給出測試結果」這個結論。
  • API接口入門(二):API接口的籤名驗籤和加解密原理
    發送者和接收者都有2套加解密的方法,而且他們把其中一套加密方法a和解密方法b都公開(虛線標黑);這裡提到的加解密,因為密碼學過於深奧,無法解釋。大家需默認加密方法是不能反推出解密方法的,解密方法是不能反推出加密方法的。
  • 測試左右腦年齡的小程序結果不是隨機的!
    10月25日,雷鋒網宅客頻道曾發文《測試左右腦年齡的微信小程序,結果竟然是隨機的?》後臺有網友對此表示很不屑↓↓↓覺得這就是一場娛樂,實在沒必要搞得太認真~但,吾愛娛樂,吾更愛真理!▲我沒有說我是亞里斯多德,我只是說你像柏拉圖針對上篇文章中代碼不全的問題,有位更較真的人,通過Charles抓包獲取了小程序請求到的內容,然後分析代碼得出了分數計算的邏輯!技術分析來自簡書作者魏永。原文連結:http://www.jianshu.com/p/2e9d2be97c93小程序的分數到底是怎麼算出來的 ?
  • 共享屋:如何對PMC程序加密和解密(附破解軟體)
    為了更好的保護工具機廠家編寫的PMC梯形圖,FANUC LADDER III 軟體可以在編譯文件時增加程序顯示密碼和程序編輯密碼,在系統中需要查看PMC程序以及修改PMC程序時輸入密碼。對於該密碼需要通過解密軟體進行解密,獲取密碼。
  • 如何查看小程序的appid?
    有時候,我們需要知道一個小程序的appid,那麼我們怎麼查看一個小程序的appid呢,其實很簡單的,自己手機上就能看到哦,來看看吧。
  • 我愛記單詞小程序設計與實現
    項目介紹背單詞十分枯燥乏味,為了給廣大英語學習者提供一個比較好的背英語模式和應用,我愛記單詞應運而生。我愛記單詞是一款面向學生的背單詞小程序,提供了豐富的單詞詞庫以及好玩的背單詞模式。適合課間、地鐵上、旅途中,任何碎片化時間,隨時隨地記單詞。
  • 零基礎入門小程序 & 實戰經驗分享
    500毫秒以內的點擊都只會處理一次,時間長短自己可以調整。拿到 shareTickets 之後,可以調用 wx.getShareInfo,獲取解密 gid 會用到的向量和加密值,傳給服務端進行解密(小程序中所有的解密操作,都放在服務端進行)。
  • 小程序分享到朋友圈功能灰度測試!5 個小程序開發者這麼說
    小程序分享到朋友圈功能灰度測試!5 個小程序開發者這麼說 小程序的找回將變得更加容易。有用戶發現,微信小程序有了令人驚喜的新變化。