2020網鼎杯玄武組移動安全wp

ps:題目是別人發給我的,本人太菜沒資格參加這個比賽

vulcrack

首先jadx打開,發現是一個殼程序
在這裏插入圖片描述

libjiabu.so和包名這些很容易看出是一個360殼,這裏採用最近各大論壇比較流行的frida-dexDump進行脫殼

講道理這題挺噁心人的,我用安卓模擬器打開的時候無法運行,感覺可能是該360殼存在模擬器檢測,那麼沒辦法只有使用真機進行操作,然鵝我的真機的比較辣雞,啓動frida經常報錯,其中甚至考慮過手動脫殼,最後折騰半天終於完成脫殼。

脫殼過程

啓動frida_server:

cd /data/local/tmp
./frida_server

端口轉發:

adb forward tcp:27042 tcp:27042

然後運行apk,運行main.py

python main.py

分析dex

拿到dex之後,查看發現主要加密地址
在這裏插入圖片描述

脫殼完成後的邏輯就非常簡單了

(1)將keyFirst和keySecond進行base64解碼,

(2)傳入到comm方法中進行一些處理

python腳本解密:

import base64

keyFirst = "Zm1jan85NztBN0c0NjJIOzJGLzc8STk0OTZFSDE="
keySecond = "QTpISTlFNEkxRTY8fQ=="
flag = []
First=base64.b64decode(keyFirst)
Second=base64.b64decode(keySecond)
for i in range(len(First)):
    flag.append(First[i] - (i % 8))
for i in range(len(Second)):
    flag.append(Second[i] - (i % 4))
print(bytes(flag))

在這裏插入圖片描述

解密得出flag爲:
flag{414A6E12-B42E-48D3-95CE-A9FF9D2F1D49}

總結

本題的難點主要在脫殼上,使用工具脫殼極大簡化了這一步,以後研究一些脫殼過程寫一份手動脫殼方案。

java

首先打開jadx分析,題如其名,所有的代碼都在java層

在這裏插入圖片描述

分析

主要的加密邏輯存放在a方法中:

(1)首先初始化數組bArr

(2)將字符串a,b進行AES加密操作

在這裏插入圖片描述

(3)調用a方法,先將aes加密後的字符串和按位異或22後,在和c類中的c數組按位異或操作

在這裏插入圖片描述

(4)將異或完成後的字符串進行base64編碼後和字符串b進行比較

這裏有一個小坑,就是程序代碼中有一個地方將字符串c.a中的一個字符進行了替換

在這裏插入圖片描述

我起初寫腳本時始終報錯
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 3: invalid continuation byte,最後通過動態調試查看具體邏輯才發現了這個替換的地方

python腳本

import base64
from Crypto.Cipher import AES

b = "VsBDJCvuhD65/+sL+Hlf587nWuIa2MPcqZaq7GMVWI0Vx8l9R42PXWbhCRftoFB3"

c = [214, 144, 233, 254, 204, 225, 61, 183, 22, 182, 43, 103, 20, 194, 40, 251, 44, 5, 43, 103, 154, 118, 42, 190, 4,195, 43, 103, 170, 68, 19, 38, 73, 134, 43, 103, 153, 156, 66, 80, 244, 145, 80, 103, 239, 152, 122, 98, 50, 214]

x = base64.b64decode(b)

y = []
for i in range(len(x)):
    y.append(x[i] ^ 22 ^ c[i])
y = bytes(y)

aeskey = "aes_check_key!@#".replace('e','o').encode("utf-8")
cipher = AES.new(aeskey, AES.MODE_ECB)
z = cipher.decrypt(y)
flag=str(z,encoding="utf-8")
print(flag)

輸出結果爲:
flag{67587AAF-C20A-4B6D-991B-A40FD3C2098E},測試結果通過。

在這裏插入圖片描述

總結

這個題目還是比較簡單了,我也是後來纔得到這個題目,此題都是java邏輯,唯一坑人的地方就是那個替換,我是藉助動態調試的方式解決的

歡迎個人關注公衆號瞭解更多資料:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章