安恆CrackRTF題解

本題參考了足夠多的題解,並且嘗試弄懂

首先,下載附件之後,發現就是exe,打開之後讓輸入密碼之類的,然後就直接拉入ida中了(不會脫殼,也幸好沒有殼),然後拉入之後,在這裏插入圖片描述
主函數需要接着進入main0:
在這裏插入圖片描述
發現輸入的是pbdata,並且對於長度也有要求,也就是6個字符;在2處
然後對於(3)則是把ASCII碼轉爲數字,用法在:https://blog.csdn.net/zmx2473162621/article/details/103937585
而對於(5)strcat用法:https://blog.csdn.net/zmx2473162621/article/details/103937695

我們會發現,有把輸入的轉爲數字之後,必須大於100000,而這時,我們有理由相信,輸入的字符串,裏面都是數字,因爲如果不是,用atoi函數轉化過來之後就不滿足大於100000了!
接着就是把“@DBApp”附加到了輸入的後邊;
然後就是一個函數,我們進去之後再進去,發現:
在這裏插入圖片描述
這個東西我查了一下,是一個加密庫,他選擇了一個加密算法,那麼我們來看一下…加密後的結果就是:6E32D0943418C2C33385BC35A1470250DD8923A9,這個就是main函數裏面的,然後看一下長度40,就猜是sha1加密,加密之後長度爲40! 那麼就找一下py加密過程,就直接暴力

##import hashlib
##flag = "@DBApp"
##
##for i in range(100000,999999):
##    s=str(i)+flag
##    x=hashlib.sha1(s.encode())
##    if x.hexdigest()=="6e32d0943418c2c33385bc35a1470250dd8923a9":
##        print(str(i)+flag)

得出123321@DBApp,所以密碼是123321
第一層密碼破解出來了,然後看第二層:第二層大體差不太多,只是把123321@DBApp,追加到了輸入的後邊,然後發現:
在這裏插入圖片描述
也是一個加密,但是應該不是sha1加密了,看加密後的27019e688a4e62a649fd99cadaafdb4e,是32位的,那麼就有理由猜測是md5加密,查了一下,md5加密是不可能被暴力破解的,因爲有6+6+6個字符
所以就有一些不知所措,然後看別人的分析,發現裏面還有一層if,就進去
在這裏插入圖片描述
之後發現,這是個啥,就跟着大佬的思路去走,然後看見FindResourceA( )查找資源,(百度的),然後就是找到這個AAA文件,這時候也不知道改咋辦,就接着跟着大佬的思路走,發現要用在這裏插入圖片描述
這個軟件打開這個exe文件,所以打開一下,發現:
在這裏插入圖片描述
這個裏面有數據;先放這裏,然後繼續看,接下來就是加載資源什麼的,然後再看到CreateFileA,前有一個函數,進去:
在這裏插入圖片描述
就是AAA取出的數與輸入的數據(因爲%v5了,所以就6個)異或一下,然後就得出結果,接下來的地方我也沒看懂,大佬說的異或出來的結果應該是rtf文件的頭文件,我就直接用winhex打開一個頭文件,然後看一下格式:
在這裏插入圖片描述
取前六個就可以了,然後和AAA前六個異或一下,就可以得到輸入;
py代碼:

rtf=[0x7b,0x5c,0x72,0x74,0x66,0x31]

aaa=[0x05,0x7d,0x41,0x15,0x26,0x01]

flag=""
for i in range(6):
    tmp=rtf[i]^aaa[i]
    flag+=chr(tmp)

print(flag)

得到flag:~!3a@0
第二層密碼,然後輸入,會發現在本目錄下多了一個rtf文件,然後就得出來了flag:Flag{N0_M0re_Free_Bugs}

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