日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BugkuCTF-Reverse题mobile1(gctf)

發布時間:2024/9/27 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

import hashlib import string def encrypt_md5(str):md=hashlib.md5() #創建md5對象md.update(str.encode(encoding='utf-8')) #這里需用encode()函數對字符串進行編碼,#不然會報TypeError: Unicode-objects must be encoded before hashingreturn md.hexdigest()s="Tenshine" s=encrypt_md5(s) print(s) print(len(s))#方法一: for i in range(len(s)):if i%2==0:print(s[i],end='') #方法二: for i in range(0,len(s),2):print(s[i],end='')

總結下來:首先用戶名是固定的,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)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。