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