BugkuCTF-Reverse题mobile1(gctf)
知識點
java.security.MessageDigest類
功能:用于為應用程序提供信息摘要算法的功能,如md5和SHA。換句話說,就是生成md5或者是SHA密碼。
相關:
getinstance:靜態函數,用來實例操作和初始操作。
update:處理數據
reset:重置摘要
digest:明文變為密文
解題流程
根據題目下載了一個壓縮包
首先下載文件,看到是apk文件,那就是安卓逆向。拿模擬器來運行看看
jeb打開文件,找到關鍵函數
分析代碼,計算v1的md5,形成的md5密文的字符串取偶數就是flag
在onCreate里面調用了checkSN函數,傳進去的值是edit_username和edit_sn,edit_username就是v1
用python寫md5的算法,求解flag
總結下來:首先用戶名是固定的,Tenshine經過MD5加密之后就是
b9c77224ff234f27ac6badf83b855c76這一串,根據源碼分析,每隔1位進行拼接就是flag,所以就是flag{bc72f242a6af3857}
方法二:
某大佬有另外的解法,我直接拷過來了,不過我沒有成功實現此方法,有興趣的可以了解一下。
首先我們通過Android killer反編譯這個apk找到checkSN函數
這里呢可以看到當調用此函數的時候會傳遞兩個string類型的參數,這里我們轉Java代碼看一下
這里呢可以看到當調用此函數的時候會傳遞兩個string類型的參數,這里我們轉Java代碼看一下
這里呢 前面那幾個判斷 我們直接無視,下面這一塊我圈起來的代碼 我們可以看到 他是判斷 參數2的長度有沒有22個 有的話 則開始算flang的然后跟參數2進行比較,注意看 這里是突破點
通過這幾串代碼 我們可以看到他是判斷參數2長度有沒有22個 有的話就算出flag的值 跟參數2進行比較
這里我們返回Android killer 找到文本比較這個位置的代碼 然后直接輸出log 打印出代碼算出的flag的內容
然后編譯回去 再在模擬器里面安裝 然后打開ddms 這里我們在輸入框里面隨便輸入22位內容 然后點擊按鈕
再看ddms可以看到flag已經輸出出來了
這樣就找出flag的值了
總結
以上是生活随笔為你收集整理的BugkuCTF-Reverse题mobile1(gctf)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PWN题[强网先锋]no_output
- 下一篇: 彩色BMP转换成灰度图的原理