HITCON2013 解題 - Roulette5

前面HackStuff的其他成員已經幫我把Dark.rar裡面的東西解完了,真的好黑暗的壓縮檔,最好在ram disk下弄,不然很傷 QAQ
當你解完100層之後會看到一張嘲諷臉,告訴你還沒完,接下來的壓縮檔名很關鍵,4D.rar 5A.rar 90.rar 00.rar,
好熟悉阿,這不是WindowsPE的header嗎?

果不其然是個exe,一打開出現了個可愛的南瓜,
還順便跟你要密碼…拿出PEiD或是EXE Info之類的東西看一下,UPX,秒脫不解釋
(還是解釋一下:OllyDbg打開,Ctrl + F找popad,往下幾行就跳到OEP了,個人是直接用OD Plugin直接存完就能用了,不然用UPX自帶的unpack也行),
先用IDA觀察一下,直接F5下去:
會看到前面有討厭的南瓜,後面scanf之後再用atoi轉成integer,然後丟到一個function內,再看看這個sub_4010D0吧:
int __cdecl sub_4010D0(unsigned int a1, char a2) {
return (a1 << a2) | (a1 >> (32 - a2));
}
仔細看一下這個function的意義,其實是把輸入值拆開再重組,a2為定值17,a1是你輸入的密碼,
先給一下其中幾個數值
*(DWORD*)0x0040B804 => 0x9A391B58
*(DWORD*) (*(DWORD*)0x0040B800) => *(DWORD*)0x0040BE5C => 0x795E5F5E
兩層Pointer就是要把你弄暈,新手大概就茫了 整理一下整串就會變成了:
0x9A391B58 ^ ((pwd << 17) | (pwd >> 32 - 17)) == 0x795E5F5E
(pwd << 17) | (pwd >> 32 - 17) == 0x795E5F5E ^ 0x9A391B58 == 0xE3674406
0xE3674406 => 11100011011001110100010000000110(2)
111000110110011 10100010000000110
10100010000000110 111000110110011
轉回hex得到:pwd == 0xA20371B3 == 2718134707
前面看IDA的時候就看到了fopen(“food.bin”, “rb”),所以連同最後解出來的food.bin一起給他,Key就出來了
這題其實不難,只是如果你只看OllyDbg不看IDA逆出來的C Code,大概會分析到瘋掉吧。

沒有留言:

張貼留言