選單

BUUCTF學習記錄-Reverse(五)新年快樂

正文共: 1205字 8圖

預計閱讀時間: 4分鐘

BUUCTF學習記錄-Reverse(五)

題目:新年快樂

平臺:buuctf

題目提示資訊:過年了要不做個逆向題慶祝一下新年?說不定會有驚喜哦!注意:flag並非是flag形式,就是一個字串,考驗眼力的時候到了!注意:得到的 flag 請包上 flag{} 提交

BUUCTF學習記錄-Reverse(五)新年快樂

解題思路

下載後得到附件,發現出題人使用UPX加了一個小殼子。

BUUCTF學習記錄-Reverse(五)新年快樂

放到UPXshell裡解密

BUUCTF學習記錄-Reverse(五)新年快樂

成功

拉到IDA32裡,進行分析

Shift+F12

BUUCTF學習記錄-Reverse(五)新年快樂

這裡應該有個判斷

BUUCTF學習記錄-Reverse(五)新年快樂

跟蹤到這裡,索性直接F5吧!

BUUCTF學習記錄-Reverse(五)新年快樂

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

BUUCTF學習記錄-Reverse(五)新年快樂

事實上,我們跟進了那麼多,還是回到了_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團隊也在持續招人,如果有意向的可以與我聯絡,公眾號內直接透過選單獲取資訊即可!