本題有三種解題方式,下文會一一枚舉:
常規逆向分析,apk拖進jadx尋找入口點。
進入入口分析,可以看到呼叫了check.checkpassword方法,且只有返回值為true的時候才能繼續。
進入check類分析看下:
這裡我們主要關注兩個資訊點:
1、pass的長度必須為12
2、且想要讓該方法返回true,這必須滿足以下條件:在12次迴圈中的pass[len] = (char) (((255 - len) - 100) - pass[len]);表示式計算之後每一位的pass[len]的值必須等於字元『0』的char值。(0的ascii碼十進位制為48,明白這個條件後,口算即知,key為kjihgfedcba`)
寫個指令碼解一下:
key = list('000000000000')
for i in range(12):
value = 255 - 100 - i - ord(key[i])
key[i] = chr(value)
print("".join(str(i) for i in key))
輸入key進入下一步,可以看到這裡發了乙個廣播。
進一步檢視manifest.xml,我們知道觸發該廣播需要輸入"android.is.very.fun",而getandchange為廣播的接收器。
在接收器中,接收到廣播後,會intent到nextcontent。
進nextcontent分析看下,可以看到change方法中對assets中zip檔案做了處理,最後轉化為乙個jpg檔案並set到介面上了。
至此全部邏輯分析完畢,手機上層層輸入密碼,進入最後一步,看到flag。
無需破解第一層密碼,記得上文提過廣播允許進行外部呼叫,我們使用adb工具構造廣播直接喚出flag。
看懂解密最後一步直接解壓出apk中assets目錄中的timg.zip檔案。
(注意不要解壓該檔案,而是修改該檔案字尾名,隨意更改為jpg等,得到flag)
第39天 攻防世界 Mobile 黑客精神
吐槽!為什麼那麼多人做了這道題,沒人出writeup。我就佛系解題法了。前邊一頓無腦操作,直接來到native方法。這幾個方法名,發現在so檔案裡找不見,第一次遇到這種情況。搜尋字串試試。看到了希望,進去看看吧。最後 發現四個函式,n1,n2,n3,callwork.n2是建立reg.dat檔案,並...
攻防世界Mobile6 app1 XCTF詳解
先安裝看看 點選芝麻開門之後會彈出 年輕人不要耍小聰明噢 這大概就能看懂是點選之後進行判斷,那就直接去看jeb,看看判斷條件是什麼 所以我們逆向要的就是輸入的flag 版本名與版本號的異或 cmd cd到aapt所在路徑,使用aapt dump badging apk路徑 命令就可以獲取相關資訊了 ...
攻防世界mfw 攻防世界 Web mfw
題目資訊 image.png 工具 githack,dirsearch 知識點 git漏洞 審計 開啟題目場景,檢查 發現這樣乙個頁面 image.png 訪問.git目錄,疑似存在git原始碼洩露 image.png 再用dirsearch掃瞄,發現git原始碼洩露 使用 githack獲取原始碼...