題目來源:2019XCTF MOBILE 第三題 題目:安裝包是11.ab,要求密碼驗證登陸。 知識點:Frida objection,SQLCipher加解密,Android備份和還原。 解題過程: 根據Android備份和還原知識,知道ab文件為backup文件,可以利用abe工具解壓,得到如下文件。
取出base.apk,拉入JADX分析,根據Android數據庫SQLCipher加解密知識,加密的數據庫密碼是getWritableDatabase函數參數決定的。
下面我們利用X86模擬器安裝apk和frida-servr-android-X86,然后利用Frida Objection打印出getWritableDatabase函數的入參來獲取數據庫密碼。 首先靜態分析,發現getWritableDatabase定義在net.sqlcipher.database.SQLiteOpenHelper類中,利用objection確認下getWritableDatabase原型。
然后我們hook這個getWritableDatabase函數,打印返回值、調用棧和參數信息。
根據源碼分析getWritableDatabase是在MainActivity類的a函數中調用的,而a函數在OnCreate中被調用,我們打開apk后,getWritableDatabase函數其實已經執行完畢了。所以我們采用堆上調用實例方法的方式。這里注意我們嘗試在啟動objection時添加參數-d或--startup-command=“android hooking watch…”是沒法hook到MainActivity類的a函數的。 第一,查看MainActvity類中所以方法列表,可以看到a函數。
第二,查看MainActvity實例的handle值。
第三,觸發實例方法a,如下所示,可以看到數據庫密碼是“ae56f99”。
拿到數據庫密碼后可以用工具查看數據庫信息,根據代碼知道SQLCipher版本是3.4.0。
所以下圖中選擇SQLCipher 3,如下所示
這樣得到flag值,如下光亮處所示,很明顯這是base64加密數據。
直接進行base64解碼,這樣我們就得到了flag為Tctf{H3ll0_Do_Y0u_Lov3_Tenc3nt!}
責任編輯:xj
原文標題:逆向基礎題十一:獲取Flag
文章出處:【微信公眾號:Linux逆向】歡迎添加關注!文章轉載請注明出處。
-
Flag
+關注
關注
0文章
12瀏覽量
8157 -
安裝包
+關注
關注
1文章
15瀏覽量
3494 -
apk
+關注
關注
0文章
24瀏覽量
4998
原文標題:逆向基礎題十一:獲取Flag
文章出處:【微信號:Reverse16,微信公眾號:Q哥學逆向】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
云電腦登陸,云電腦登陸的教程,云電腦搭建工具怎么連接
![云電腦<b class='flag-5'>登陸</b>,云電腦<b class='flag-5'>登陸</b>的教程,云電腦搭建工具怎么連接](https://file1.elecfans.com/web3/M00/06/80/wKgZO2eLOcqAYnf1AABTTCMlVdE525.png)
OpenAI ChatGPT高級語音模式登陸Windows和Mac平臺
蘋果Vision Pro將于11月15日登陸阿聯酋和韓國
windows10系統下,ESP32和PC的串口鏈接配置中,putty登陸遠程SSH時,賬戶名和密碼怎么選擇?
Win10 PRO的系統,下載了IDF的離線安裝包,安裝到最后總是報告錯誤怎么解決?
用labview生成的安裝包,在別的電腦上安裝時直接報錯,提示customresource2052.dll的錯誤
Win11使用的是離線安裝包 最后運行esp-idf 5.1 cmd報錯怎么解決?
防火墻登陸不上的問題排查
![防火墻<b class='flag-5'>登陸</b>不上的問題排查](https://file1.elecfans.com/web2/M00/D0/14/wKgaomYh06eAQnefAAASRaiAwEA836.png)
評論