正文共: 1205字 8圖
預計閱讀時間: 4分鐘
BUUCTF學習記錄-Reverse(五)
題目:新年快樂
平臺:buuctf
題目提示資訊:過年了要不做個逆向題慶祝一下新年?說不定會有驚喜哦!注意:flag並非是flag形式,就是一個字串,考驗眼力的時候到了!注意:得到的 flag 請包上 flag{} 提交
解題思路
下載後得到附件,發現出題人使用UPX加了一個小殼子。
放到UPXshell裡解密
成功
拉到IDA32裡,進行分析
Shift+F12
這裡應該有個判斷
跟蹤到這裡,索性直接F5吧!
int __cdecl main(int argc, const char **argv, const char **envp)
{
int result; // eax
char v4; // [esp+12h] [ebp-3Ah]
__int16 v5; // [esp+20h] [ebp-2Ch]
__int16 v6; // [esp+22h] [ebp-2Ah]
__main();
strcpy(&v4, “HappyNewYear!”);
v5 = 0;
memset(&v6, 0, 0x1Eu);
printf(“please input the true flag:”);
scanf(“%s”, &v5);
if ( !strncmp((const char *)&v5, &v4, strlen(&v4)) )
result = puts(“this is true flag!”);
else
result = puts(“wrong!”);
return result;
}
注意第九行,strcpy,也就是複製字串。也就是將後面的內容複製給了v4,那麼下面的判斷,也就是判斷v5的內容是否等於v4,所以flag也很好發現,就是HappyNewYear!
最終,我們得到flag:flag
事實上,我們跟進了那麼多,還是回到了_main函式,畢竟是Vc++的編譯器。
各種顏色,也表示了很多東西:
黃色:未定義資料型別
黑色:程式碼
灰色:資料
跳轉表示:
虛線:條件跳轉
實線:無條件跳轉
顏色須知:
在IDA自動把識別的API標為紅色
在病毒分析時候我們會看到呼叫各種API
windows API查詢網址:
https://docs。microsoft。com/zh-cn/windows/win32/apiindex/windows-api-list?redirectedfrom=MSDN
題感
這道題是一道比較簡單的revers題目,我們所需要的東西有下:
1。IDA工具使用經驗
2。逆向思路
3。C語言基礎
4。ASCII編碼表
5。系統常識
6。UPX脫殼加殼
7。程式碼理解能力
8。能認識一些組合語言
寫到後面
大家可以關注一下我們的公眾號,如果覺得這個文章有用的話,可以推薦給你的朋友或者轉發到朋友圈分享一下。你的分享、你的點贊、你的每一次瀏覽,都將是我持續更新的動力。非常感謝看到文章的每一個人!
另外,CTF團隊也在持續招人,如果有意向的可以與我聯絡,公眾號內直接透過選單獲取資訊即可!