MSC-2015移動安全挑戰賽 第一題

這是最簡單的題目,都在java層。

反編譯後看關鍵源代碼:

wKiom1THg9SiHqYKAAMRrmke49I045.jpg

由於對android程序不熟悉,完全忽略了android.util.Log.i函數。後來看了大牛的writeup,才知道onClick函數裏面的3個android.util.Log.i用輸出日誌信息的方式告訴了密碼本、密碼,以及猜測的結果。

我用的是標準的分析方法。跟進access$0函數。

密碼生成規則是

wKiom1THh6-wGNE1AACaxFAi590290.jpg

這個代碼的意思就是將用戶的輸入轉成字節數組p4,以p4的每一個字節爲索引,在密碼本p3中找出對應的字符。這裏需要注意的是p3是utf8編碼,中文對應3個字節(一個字符),而ascii對應1個字節。

密碼本和題目設置的密碼(winhex提取):

wKioL1THiUaRxkWQAALpgZRqwAY497.jpg逆推用戶的輸入就是找passwd的每一個字在密碼本中的索引,輸出索引對應的ascii值就可以了。

由於本人的python處理中文編碼不過關,所以老老實實在winhex裏面3個字節3個字節的搜索,手工計算了。

wKioL1THijLAhcbSAAAXqMR44pA653.jpg

因爲utf8中文字符3個字節,所以winhex裏面的偏移要除以3.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章