引言
題目給了小明的機器碼:1653643685031597
使用者user_id:xiaoming
可以看到題目採用了SIMD指令集
該指令格式在CTF和攻防對抗中經常出現,可以提高執行效率的同時也可以增加逆向的難度。
對於此類指令和題目,我們分析的方法是:遇到查意思,查的多了就跟看正常程式碼一樣,採用動態分析。
機器碼修改
將內建的機器碼改為題目給的:1653643685031597
修改成功:
得到flag的時候跟machine這個有很大關係。
【----幫助網安學習,以下所有學習資料免費領!加vx:dctintin,備註 “部落格園” 獲取!】
① 網安學習成長路徑思維導圖
② 60+網安經典常用工具包
③ 100+SRC漏洞分析報告
④ 150+網安攻防實戰技術電子書
⑤ 最權威CISSP 認證考試指南+題庫
⑥ 超1800頁CTF實戰技巧手冊
⑦ 最新網安大廠面試題合集(含答案)
⑧ APP客戶端安全檢測指南(安卓+IOS)
動態分析
machine_id處理
在這個加密函式中
發現了MD5特徵
經過動調拿到函式加密後的結果
與我們的猜測是相符的
可以發現最終md5(機器碼)變成
user_id處理
和除錯machine加密一樣,最終MD5(user_id)變成:
最終處理
經過之前相同的加密
變成這個數字:1228240365737281
然而這還沒完,居然進行兩次相同加密
再次加密後的結果:0502036271810858
可以發現此題出的很好,利用了密碼比較的漏洞,沒有將密文給出,而是將生成的密文在中間給出,從而造成了資料洩露。
得到flag
回顧加密流程,可以發現
f(key) = f( f( f(md5(machine)) + f(md5(user_id)) ) )
那麼題目給了得到flag的machine和user_id,可以得出
Key =f( f(md5(machine)) + f(md5(user_id)) )
所以最終flag:
flag{1228240365737281}
更多網安技能的線上實操練習,請點選這裡>>