URL: https://umdctf.io/challenges

直感的に解けそうと思ったやつだけやりました。

3問だけ解いて750points、147thでした。

umdctf_2020_Solved.png



[Steganography]: Crash Confusion (200 points)


Challenge

There’s something weird about this crash screen…

Attachment:

  • crash.jpg


Solution

「青い空を見上げればいつもそこに白い猫」でテキトーに見てたらBASE64エンコードされた文字列が出てきました。

umdctf_2020_crash.png


$ echo VU1BQ1RGLXt0aHIzc2gwbGRfZXJyMHJ6fQ | base64 -d
UMACTF-{thr3sh0ld_err0rz}


どこか読み間違えているのか、UMACTFになってしまったので、UMDCTFに直してSubmitしました。

Flag: UMDCTF-{thr3sh0ld_err0rz}





[Forensics]: Sensitive (150)


Challenge

Not sure what to make of this…

Attachment:

  • sensitive


Solution

まず、どんなファイルなのかを調べます。

$ file sensitive 
sensitive: data


判別できなかったので、実際に中身を見てみると、元はPDFファイルで1バイト毎に空白文字が入っているようでした。

% P D F - 1 . 5
:


以下のコードで余分な空白文字を取り除きました。

(元々のファイルサイズが187836バイトなので、その半分の93918をb2のサイズとしています。)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#!/usr/bin/env python3
# -*- coding:utf-8 -*-

b1 = bytearray(open("sensitive","rb").read())
b2 = bytearray(93918)

i = 0
for x in b1:
    if (i % 2) == 0:
        b2[i//2] = x
    i += 1
    
open("output.pdf", "wb").write(bytearray(b2))


PDFをLibreで開くと、中央に薄っすらQRコードが見えます。

umdctf_2020_libre_qr.png


この画像をファイルとして保存し、「青い空を見上げればいつもそこに白い猫」でテキトーに見てたら白黒がハッキリできました。

umdctf_2020_sensitive_qr.png


Flag: UMDCTF-{l0v3-me_s0me_h3x}





[Forensics]: Nefarious Bits (400)


Challenge

After being exposed to some solar radiation, it looks like some bits have turned bad. It is your job to figure out what they are trying to say.

Note: do not attempt to communicate with or contact any of the IP addresses mentioned in the challenge. The challenge can and should be solved statically.

Attachment:

  • attack.pcap


Solution

WireSharkで各パケットを見ていくと、IPヘッダ内のフラグの値が0や1に変化しているのがわかります。

$ tshark -r attack.pcap -Tfields -e ip.flags.rb | tr -d "\n" ; echo
01010101010011010100010001000011010101000100011000101101011110110011001101110110011010010110110001011111011000100011000101110100011100110101111101000000011100100011001101011111001101000110110001110111001101000111100101110011010111110011001101110110011010010011000101111101

2進数を文字列に変換すると、フラグが得られます。

Flag: UMDCTF-{3vil_b1ts_@r3_4lw4ys_3vi1}