進行中の何か

主にIT系の調べたこと。やったことをまとめます。

SECCON BeginnersCTF 2018 Writeup 02

前回のエントリで書ききれなかったMISCのwriteup

MISC

[Warmup] plain mail

pcapが渡されるのでそこからフラグを探す。
タイトルどおり、SMTPのパケットが多い。 合計で3通メールが飛んでいる。

  • 1通目
    パス付きファイル送るよー2通目にパスかいてるよ!とのこと
220 67289bb1f069 ESMTP Exim 4.84_2 Fri, 27 Apr 2018 11:00:38 +0000
ehlo [172.19.0.3]
250-67289bb1f069 Hello client.4b [172.19.0.3]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250 HELP
mail FROM:<me@4b.local> size=103
250 OK
rcpt TO:<you@4b.local>
250 Accepted
data
354 Enter message, ending with "." on a line by itself
I will send secret information. First, I will send encrypted file. Second, I wll send you the password.
.
250 OK id=1fC17G-00005T-T0
421 67289bb1f069 lost input connection
  • 2通目
220 67289bb1f069 ESMTP Exim 4.84_2 Fri, 27 Apr 2018 11:00:40 +0000
ehlo [172.19.0.3]
250-67289bb1f069 Hello client.4b [172.19.0.3]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250 HELP
mail FROM:<me@4b.local> size=658
250 OK
rcpt TO:<you@4b.local>
250 Accepted
data
354 Enter message, ending with "." on a line by itself
Content-Type: multipart/mixed; boundary="===============0309142026791669022=="
MIME-Version: 1.0
Content-Disposition: attachment; filename="encrypted.zip"

--===============0309142026791669022==
Content-Type: application/octet-stream; Name="encrypted.zip"
MIME-Version: 1.0
Content-Transfer-Encoding: base64

UEsDBAoACQAAAOJVm0zEdBgeLQAAACEAAAAIABwAZmxhZy50eHRVVAkAA6f/4lqn/+JadXgLAAEE
AAAAAAQAAAAASsSD0p8jUFIaCtIY0yp4JcP9Nha32VYd2BSwNTG83tIdZyU4x2VJTGyLcFquUEsH
CMR0GB4tAAAAIQAAAFBLAQIeAwoACQAAAOJVm0zEdBgeLQAAACEAAAAIABgAAAAAAAEAAACkgQAA
AABmbGFnLnR4dFVUBQADp//iWnV4CwABBAAAAAAEAAAAAFBLBQYAAAAAAQABAE4AAAB/AAAAAAA=
--===============0309142026791669022==--
.
250 OK id=1fC17I-00005a-Fw
421 67289bb1f069 lost input connection

encrypted.zipをbase64エンコードして送ったよ!とのこと。
デコードしてzipファイルを取り出す。

# echo -n "UEsDBAoACQAAAOJVm0zEdBgeLQAAACEAAAAIABwAZmxhZy50eHRVVAkAA6f/4lqn/+JadXgLAAEEAAAAAAQAAAAASsSD0p8jUFIaCtIY0yp4JcP9Nha32VYd2BSwNTG83tIdZyU4x2VJTGyLcFquUEsHCMR0GB4tAAAAIQAAAFBLAQIeAwoACQAAAOJVm0zEdBgeLQAAACEAAAAIABgAAAAAAAEAAACkgQAAAABmbGFnLnR4dFVUBQADp//iWnV4CwABBAAAAAAEAAAAAFBLBQYAAAAAAQABAE4AAAB/AAAAAAA=" | base64 -d > encrypted.zip
  • 3通目
220 67289bb1f069 ESMTP Exim 4.84_2 Fri, 27 Apr 2018 11:00:42 +0000
ehlo [172.19.0.3]
250-67289bb1f069 Hello client.4b [172.19.0.3]
250-SIZE 52428800
250-8BITMIME
250-PIPELINING
250 HELP
mail FROM:<me@4b.local> size=13
250 OK
rcpt TO:<you@4b.local>
250 Accepted
data
354 Enter message, ending with "." on a line by itself
_you_are_pro_
.
250 OK id=1fC17K-00005h-AC
421 67289bb1f069 lost input connection

ファイルのパスワードは_you_are_pro_と判明 あとは展開してflag.txtを読めば終わり!

フラグは ctf4b{email_with_encrypted_file}

[Warmup] Welcome

フラグは公式IRCチャンネルのトピックにありますと書いてあるので ルールのところに記載があるIRCへアクセスしてフラグゲット

フラグは ctf4b{welcome_to_seccon_beginners_ctf}

てけいさんえくすとりーむず

アクセスすると300秒以内に計算を100問解くよう求められる。
適当に作ったpythonスクリプトで解く。ヘッダー部分の除去は力技

import socket 
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect(('tekeisan-ekusutoriim.chall.beginners.seccon.jp',8690)) 
 
print s.recv(303) 
 
for i in range(1, 102): 
    data = s.recv(256) 
    print data 
    q = data.split('\n') 
    ans = str(eval(q[1].replace("=",""))) 
    print ans 
    s.sendall(ans+'\n')

100問といてフラグは ctf4b{ekusutori-mu>tekeisann>bigina-zu>2018}

Find the messages

imgファイルからメッセージを探せ!とのこと

まずはimgファイルを調査。

# file disk.img 
disk.img: DOS/MBR boot sector; partition 1 : ID=0x83, start-CHS (0x0,32,33), end-CHS (0x8,40,32), startsector 2048, 129024 sectors

なんだかマウントできそうなのでマウント位置を確認。

# fdisk -l -u disk.img 
Disk disk.img: 64 MiB, 67108864 bytes, 131072 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xad4d4cf0

Device     Boot Start    End Sectors Size Id Type
disk.img1        2048 131071  129024  63M 83 Linux

Startが2048なのでoffsetは2048*512とわかったところでマウント

mount -o loop,offset=1048576 disk.img /mnt

ディレクトリ構造はこんな感じ

./
├── lost+found
├── message1
│   └── message_1_of_3.txt
├── message2
│   └── message_2_of_3.png
└── message3

さっそくmessage_1_of_3.txtにとりかかる。
内容をみてみるとbase64エンコードされてそうな文字列なのでデコードして1つ目ゲット!

# base64 -d message_1_of_3.txt 
ctf4b{y0u_t0uchedr

2つ目のファイルは拡張子がpngなのにfileコマンドで見るとdataになっている。

# file message_2_of_3.png 
message_2_of_3.png: data

hexdumpしてみるとpngフォーマットになっていない。

# hexdump message_2_of_3.png | head -n1
0000000 5858 5858 5858 5858 0000 0d00 4849 5244

なので89 50 4E 47 0D 0A 1A 0Aに書き換えて pngファイルを開くと2つ目_a_part_0f_をゲット!

3つ目はフォルダの中が空。
ファイルがない。

削除されているのかな?と思いFTK Imagerでimgファイルを読み込んでみるが
ファイルはなし。 けどなにやらmessage_3_of_3.pdfなる文字列を発見 f:id:pom_wip:20180529210730p:plain

# foremost -t pdf disk.img 
# ls ./output/pdf/
00018946.pdf

pdfファイルを開くと3つ目のキーワードdisk_image_for3nsics}をゲット!

あわせてフラグは ctf4b{y0u_t0uchedr_a_part_0f_disk_image_for3nsics}


これで今回解けた問題のwriteupは終了です。
1ヶ月程度サーバは生きているそうなのでその間に解けなかった問題にチャレンジしたいと思います!
特にPwn頑張ろう。。。