上周參加了國外的比賽,名稱叫:ApoorvCTF
看一下老外的比賽跟我們有什么不同,然后我根據國內比賽對比發現,他們考點還是很有意思的,反正都是逆向,哈哈哈
Rusty Vault
題目描述:
In the heart of an abandoned shrine, there’s an old, rusted vault said
to guard an unspeakable secret. Many have tried to unlock it, but the
door’s demands are strange and no key seems to fit.
進入main函數,開始分析
這個命名方式,大概率是Rust語言
對于rust語言逆向,一般采用動態調試分析的方法
主要還是看匯編,因為F5根本看不出來啥東西。。。
從if比較處,可以看到成功和失敗兩個結果
那么這個比較絕對很關鍵
進入后發現,啥也沒啊?
壞了,得看匯編,為代碼估計又出問題了
發現了check2,果然為代碼啥也看不到
對比check1-2
發現是在檢測輸入的字符串的字符類型,還是沖突的,不管了繼續分析
下面可以看到失敗
往下滑動可以看到成功
什么意思?
我猜測這題是改條件,然后動態輸出flag?還有這好事
后面都是正常輸出flag了
那么我們現在去解密的地方回溯,估計我要改一些判斷,改變流程,讓程序正常走到解密的地方,然后輸出flag
幫助網安學習,全套資料S信免費領取:
① 網安學習成長路徑思維導圖
② 60+網安經典常用工具包
③ 100+SRC分析報告
④ 150+網安攻防實戰技術電子書
⑤ 最權威CISSP 認證考試指南+題庫
⑥ 超1800頁CTF實戰技巧手冊
⑦ 最新網安大廠面試題合集(含答案)
⑧ APP客戶端安全檢測指南(安卓+IOS)
教大家一個回溯方法
對標簽瘋狂X鍵,交叉引用定位回溯
最終定位到密文,發現是aes_128_cbc模式
需要:key+IV+密文=明文
這是一種思路,大家可以嘗試
本文修改流程,讓他自動輸出明文
現在的思路就是:
x鍵回溯定位關鍵標簽,修改關鍵判斷
讓程序自動走向解密
nop掉check1 和 check2
讓他們走向自動解密的方向
最終運行程序得到flag,靜態patch流程,繞過check1-chekc2
apoorvctf{P4tch_1t_L1k3_1t's_HOt}
這在我們國內比賽還是很少見到的,國內大概率要寫腳本解密,或許國內認為加密才是CTF的重點。國外側重逆向本身,如果可以patch修改流程得到flag,為什么要去寫解密腳本呢?
鍛煉了我們通過匯編分析程序流程的能力,而不是為代碼一鍵分析。