一個人東京

106金盾獎決賽聊聊

今年的金盾獎非常多複合型題目
有幾題解到一半就卡住了
加上環境如以往一般非常不人性
比賽前半段都在鬼打牆
後半段適應環境之後
才把最簡單的幾題解開

題目備份在這
https://github.com/DuckLL/106_shielda_backup

1. Snake

file發現Snake.exe是.NET程式
root@f51558b9cdc0:/ramdisk# file Snake.exe
Snake.exe: PE32 executable (GUI) Intel 80386 Mono/.Net assembly, for MS Windows
使用dnSpy進行反組譯

看到有Resources藏有一個zip跟pass
pass.txt內容為
emlwIHBhc3MgaXMgNTgxMTA1
base64decode之後得到
zip pass is 581105
(比賽前期鬼打牆 還直接為進去以為打不開...)
解開zip會看到snakev2.exe
root@f51558b9cdc0:/ramdisk# file snakev2.exe
snakev2.exe: PE32 executable (console) Intel 80386, for MS Windows
是一個x86的cli程式 直接進IDA
關鍵程式碼如下
strcpy(encrypt, "DCPPGTU/JCPI/HQTGXGT");
fputc(encrypt[k] - 2, fp);
用python稍微寫一下
In [1]: a="DCPPGTU/JCPI/HQTGXGT"

In [2]: ''.join(chr(ord(i)-2) for i in a)
Out[2]: 'BANNERS-HANG-FOREVER'
FLAG: BANNERS-HANG-FOREVER

4. PDF

PDF隱寫術 這題蠻奇耙的
很多工具都會解不開
我找到最好的工具是
PDF Stream Dumper
可以直接dump一個png出來
png裡面又藏了很多png
用binwalk一次解開(總算找到正確指令
root@f51558b9cdc0:/ramdisk# binwalk -D 'png image:png' ./hex2769.png

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 346 x 419, 8-bit/color RGBA, non-interlaced
91            0x5B            Zlib compressed data, compressed
191247        0x2EB0F         PNG image, 32 x 31, 8-bit colormap, non-interlaced
191729        0x2ECF1         PNG image, 33 x 31, 8-bit colormap, non-interlaced
192255        0x2EEFF         PNG image, 32 x 31, 1-bit grayscale, non-interlaced
192539        0x2F01B         PNG image, 32 x 31, 8-bit colormap, non-interlaced
193067        0x2F22B         PNG image, 33 x 31, 8-bit colormap, non-interlaced
193653        0x2F475         PNG image, 32 x 31, 8-bit colormap, non-interlaced
194138        0x2F65A         PNG image, 32 x 31, 8-bit colormap, non-interlaced
194671        0x2F86F         PNG image, 33 x 31, 8-bit colormap, non-interlaced
195095        0x2FA17         PNG image, 32 x 31, 4-bit colormap, non-interlaced
用powerpoint拼出來
FLAG: d0_Or_DoNot_7her3_I5_n0_7ry
賽前還說FLAG格式一定是The_flag_is_XXXX
這個題目也沒有特別交代格式不同
統一pattern很難嗎 真的是水準之下

5.testme

反組譯+簡單密碼學
可以看到是一個x86 linux程式再介紹Rail Fence cipher
root@f51558b9cdc0:/ramdisk# file ./testme
./testme: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.24, BuildID[sha1]=7203e0b476666ef8407b9176e1d14c9a0a7d2ede, not stripped
root@f51558b9cdc0:/ramdisk# ./testme
Please input the random number: 66212012
number: 66212012


Rearranging the letters in the plain text is an old encryption scheme.
Here is an example of message ABCDEFGHI encrypted.
First,we pick a depth number [for example:3],and write our message like this:
A---E---I
-B-D-F-H-
--C---G--
See how it goes up and down?
Just read along the lines, then we get the cipher AEIBDFHCG.
Now, you have to INPUT THE PASSWARD to show the cipher and then capture the flag.
Password :
這題真的是水到不行密碼也是給明碼
輸入之後就會噴出
Tirrhale_eeer_hits__fpsntfsei_iilincv_na_c_eygger
丟到線上工具嘗試到key=8就解開了
FLAG: rail_fence_cipher_is_very_interesting

心得

強烈建議主辦單位開放自備電腦連上網路
能上網的主機還不能安裝VM...
除了Windows工具安裝比較方便之外
brew apt pip gem這種套件管理都無法使用
缺工具就只能自己抓source code compile
而且有非常多時間都浪費在移轉資料

最後一次金盾獎 雖然沒有得到好表現
但至少比前年進步了一點
感謝隊友的donate 多了一題web
聽完題解 有點慶幸比賽當下沒有去動pwn
連libc都魔改過(雖然是改簡單) 真的是OPOP

看到許多神人不管環境多麻煩
還是能在比賽上大顯神威
由衷佩服他們的實力
平常還要在勤練功才能追趕上了

題外話
今年的食物感覺有點退步
中餐冷冷的 零食感覺也普普
晚餐有維持不錯的水準
紀念品是一個三頭OTG隨身碟
賺!

留言