この大会は2020/3/14 9:00(JST)~2020/3/16 9:00(JST)に開催されました。
今回もチームで参戦。結果は 103点で660チーム中219位でした。
自分で解けた問題をWriteupとして書いておきます。
Welcome! (A WELCOME CHALLENGE 1)
問題にフラグが書いてあった。
pctf{all_ur_hack_are_belong_to_us}
Discord Flag (A WELCOME CHALLENGE 1)
Discordに入り、#announcementsチャネルのメッセージを見ると、フラグが書いてあった。
pctf{should_have_used_irc}
Harvesting Season (CRYPTO 100)
jpgが添付されている。EXIFを見てみる。
$ exiftool fr3sh_h4rv3st.jpg ExifTool Version Number : 10.80 File Name : fr3sh_h4rv3st.jpg Directory : . File Size : 2.1 MB File Modification Date/Time : 2020:03:13 04:13:02+09:00 File Access Date/Time : 2020:03:14 13:22:30+09:00 File Inode Change Date/Time : 2020:03:13 04:13:02+09:00 File Permissions : rwxrwxrwx File Type : JPEG File Type Extension : jpg MIME Type : image/jpeg JFIF Version : 1.01 Exif Byte Order : Big-endian (Motorola, MM) X Resolution : 1 Y Resolution : 1 Resolution Unit : None Artist : 1921754512366910363569105a73727c592c5e5701715e571b76304d3625317c1b72744d0d1d354d0d1d73131c2c655e Y Cb Cr Positioning : Centered Image Width : 3456 Image Height : 4608 Encoding Process : Baseline DCT, Huffman coding Bits Per Sample : 8 Color Components : 3 Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2) Image Size : 3456x4608 Megapixels : 15.9
Artistの値が暗号になっているようだ。キーの長さは4バイトとのことなので、pctfから始まることを前提にキーを求め、XORで復号する。
enc = '1921754512366910363569105a73727c592c5e5701715e571b76304d3625317c1b72744d0d1d354d0d1d73131c2c655e' enc = enc.decode('hex') pre_flag = 'pctf' key = [] for i in range(len(pre_flag)): code = ord(enc[i]) ^ ord(pre_flag[i]) key.append(code) flag = '' for i in range(len(enc)): code = ord(enc[i]) ^ key[i%len(key)] flag += chr(code) print flag
pctf{th3_wh331s_0n_th3_tr41n_g0_r0und_4nd_r0und}
Survey (A WELCOME CHALLENGE 1)
アンケートに答えたら、フラグが表示された。
pctf{s33_y0u_n3xT_Y34r_ch0o_chO0}