SEC-T CTF Writeup

この大会は2017/9/14 0:00(JST)~2017/9/16 0:00(JST)に開催されました。
今回もチームで参戦。結果は710点で552チーム中59位でした。
自分で解けた問題をWriteupとして書いておきます。

Handle (Misc 10)

freenodeで#sect-ctfチャネルに入る。

06:04 *topic : SEC-T CTF - FLAG:SECT{CRASH_OVERR1D3} - DOWNLOAD SERVER: - http://178.62.89.173/ - https://sect.ctf.rocks - https://ctftime.org/event/499 - Wednesday 13/9 15:00 UTC - Friday 15/9 14:30 UTC - Hackers of the world unite!
SECT{CRASH_OVERR1D3}

Report (Misc 200)

PDFStreamDumperで与えられたPDFを開き、最後の 0 HLen: 0xC3A の箇所を見る。

0000000000 65535 f 
0000013999 00000 n 
0000000019 00000 n 
0000001039 00000 n 
0000022799 00000 n 
0000014372 00000 n 
0000014507 0007d n 
0000014635 00000 n 
0000014772 00000 n 
0000014900 00059 n 
0000015028 00000 n 
0000015164 00000 n 
0000015293 00000 n 
0000015429 00000 n 
0000015558 00000 n 
0000015694 00000 n 
0000015823 00000 n 
0000015959 00000 n 
0000016088 00000 n 
0000016226 00043 n 
0000016355 00000 n 
0000016491 00000 n 
0000016620 00000 n 
0000016757 00000 n 
0000016886 00000 n 
0000017024 00000 n 
0000017155 00000 n 
0000017294 00055 n 
0000017425 00000 n 
0000017564 00000 n 
0000017695 00000 n 
0000017834 00000 n 
0000017965 00000 n 
0000018104 00000 n 
0000018235 00000 n 
0000018374 00000 n 
0000018513 00000 n 
0000018644 0004c n 
0000018783 00000 n 
0000018914 00000 n 
0000019053 00000 n 
0000019184 00000 n 
0000019323 00000 n 
0000019454 00000 n 
0000019593 00000 n 
0000019724 00000 n 
0000019863 00000 n 
0000019994 00000 n 
0000020133 00000 n 
0000020264 00000 n 
0000020403 00000 n 
0000020534 0005f n 
0000020673 0004b n 
0000014160 00041 n 
0000001059 00033 n 
0000001648 00000 n 
0000020804 00000 n 
0000020943 00000 n 
0000021075 00052 n 
0000021214 00000 n 
0000021346 00000 n 
0000021485 00000 n 
0000021617 00042 n 
0000021758 00000 n 
0000021890 00000 n 
0000022029 00000 n 
0000022168 0005f n 
0000022307 00000 n 
0000022439 00000 n 
0000022578 00030 n 
0000022710 00054 n 
0000023720 0005f n 
0000001669 00000 n 
0000012723 00000 n 
0000012746 00000 n 
0000012941 00033 n 
0000013505 00043 n 
0000013911 00000 n 
0000013944 00000 n 
0000023310 00000 n 
0000014323 00000 n 
0000014458 00031 n 
0000014586 0004e n 
0000014723 00000 n 
0000014851 00000 n 
0000014979 00000 n 
0000015115 00000 n 
0000015244 00000 n 
0000015380 00000 n 
0000015509 00000 n 
0000015645 00000 n 
0000015774 00000 n 
0000015910 0005f n 
0000016039 00000 n 
0000016177 00000 n 
0000016306 00000 n 
0000016442 00000 n 
0000016571 00000 n 
0000016708 00000 n 
0000016837 00000 n 
0000016974 00000 n 
0000017105 00000 n 
0000017244 00037 n 
0000017375 00000 n 
0000017514 00000 n 
0000017645 00000 n 
0000017784 00000 n 
0000017915 00000 n 
0000018054 00000 n 
0000018185 00000 n 
0000018324 00000 n 
0000018463 00000 n 
0000018594 00000 n 
0000018733 00000 n 
0000018864 00000 n 
0000019003 00000 n 
0000019134 00000 n 
0000019273 00000 n 
0000019404 00000 n 
0000019543 00000 n 
0000019674 00000 n 
0000019813 00000 n 
0000019944 00030 n 
0000020083 00000 n 
0000020214 0004e n 
0000020353 00000 n 
0000020484 00000 n 
0000020623 00000 n 
0000020754 00000 n 
0000020893 00000 n 
0000021025 00000 n 
0000021164 00000 n 
0000021296 00000 n 
0000021435 0007b n 
0000021567 00000 n 
0000021708 00000 n 
0000021840 00000 n 
0000021979 00054 n 
0000022118 00000 n 
0000022257 00000 n 
0000022389 00043 n 
0000022528 00045 n 
0000022660 00000 n 
0000023428 00000 n 
0000023827 00053 n 
0000023998 00000 n 

これを c3a.txtに保存する。2列目の16進数をASCIIコードとして、0以外の値を下から順に文字として読む。

with open('c3a.txt', 'r') as f:
    lines = f.readlines()

flag = ''
for line in lines:
    data = line.strip().split(' ')
    if data[2] == 'n':
        code = int(data[1], 16)
        if code != 0:
            flag += chr(code)

flag = flag[::-1]
print flag
SECT{N07_N1C3_T0_BR3AK_LUCY}

Acid burn (Misc 200)

https://convertio.co/ja/でwebpからpngに変換。Stegsolveで開き、Red plane 2でなんとなくフラグが見える。
f:id:satou-y:20170918203030p:plain
隠れて見えない部分は文章になるように推定しながらフラグを組み立てる。

SECT{I_LOVE_CRASH_OVERFLOW_BUT_I_CAN_NOT_TELL_HIM_HOW_I_FEEL_ABOUT_HIM}

Joeys screenshot (Misc 50)

TweakPNGで見ると、たくさんのiTXtチャンクが入っている。そのテキスト情報を並べると、以下のようになっている。

_36
327
C2
134
524
N22
H41
{4
_11
_33
_13
021
E1
530
342
H43
038
535
P26
U25
G37
415
39
B19
S0
U29
R28
R32
D14
212
_23
D5
D39
_40
G17
K8
Y10
344
!45
520
T3
331
118
46
}46
_16
_7

フラグの最初が"SECT{"となることから、[文字(1バイト)][順番]という構成になっていることに気づく。順番に並べてみる。

S 0
E 1
C 2
T 3
{ 4
D 5
4 6
_ 7
K 8
3 9
Y 10
_ 11
2 12
_ 13
D 14
4 15
_ 16
G 17
1 18
B 19
5 20
0 21
N 22
_ 23
5 24
U 25
P 26
3 27
R 28
U 29
5 30
3 31
R 32
_ 33
1 34
5 35
_ 36
G 37
0 38
D 39
_ 40
H 41
3 42
H 43
3 44
! 45
} 46
SECT{D4_K3Y_2_D4_G1B50N_5UP3RU53R_15_G0D_H3H3!}