CTF Writeup TMCTF2018

Trend Micro CTF 2018 - Raimund Genes Cup

IoT、制御システム、標的型サイバー攻撃など、サイバーセキュリティに関する知識と技術を競い合う、トレンドマイクロが主催する技術者向けの競技大会です。サイバーセキュリティのプロフェッショナルは、毎年、標的型攻撃、IoT(Internet of Things)、産業用制御システム(ICS)などの知識を向上させるために切磋琢磨しています。

結果&感想

Trend Micro CTF 2018 に、某チームで参加しました。
今年もチームは善戦しましたよ!(国内10位以内)。しかし、、私が解いたのは100点1問だけでした。
途中までやったやつが二問ありますが、どちらも(私は)解けずでした。

という訳で、解ってる部分のwriteupです。

Trend Micro CTF 2018 オンライン予選 ランキングページ
https://ctf.trendmicro.com/ranking.html

Misc 100

問題

Brave Challenger, welcome!

I will hand you the flag, just not on a silver platter. Closely analyze the file, peel it back layer by layer, examine it byte by byte and the flag will reveal itself.

Follow the rabbit hole, the flag is hiding at the end of the tunnel!

Get your hands dirty! Whip out all your tools! Use your hex editor! But also be careful my brave challenger, for it might blow up in your face.

Good Luck!

それで、binwalkかけるじゃろ?

$ binwalk -eM EATME.pdf

Scan Time:     2018-09-09 21:02:01
Target File:   /home/ctf/20180915_TMCTF/Misc_100/EATME.pdf
MD5 Checksum:  e579c3844a68e6f0f007dc34ea2a9ed1
Signatures:    386

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PDF document, version: "1.7"
353           0x161           JPEG image data, JFIF standard 1.01
383           0x17F           TIFF image data, big-endian, offset of first image directory: 8
749016        0xB6DD8         Zip archive data, at least v2.0 to extract, compressed size: 41, uncompressed size: 200, name: flag.txt
749123        0xB6E43         Zip archive data, at least v2.0 to extract, compressed size: 4168158, uncompressed size: -1, name: galf.txt
4969997       0x4BD60D        End of Zip archive, footer length: 31, comment: "Boooooom!"
4970099       0x4BD673        Zlib compressed data, default compression

Signature Exception: Extractor.dd failed to extract data from '/home/ctf/20180915_TMCTF/Misc_100/EATME.pdf' to '4BDACE.zlib': [Errno 28] No space left on device
----------------------------------------------------------------------------------------------------

※途中でエラーになってますが、ディスク容量が無くなったからですw

それで、中身見るじゃろ?

$ cd _EATME.pdf.extracted
$ ls
4BD673  4BD673.zlib  4BDACE.zlib  B6DD8.zip  flag.txt  galf.txt

フラグあるじゃろ?

$ cat flag.txt
TMCTF{QWxpY2UgaW4gV29uZGVybGFuZA==}

はい

Misc 200

問題(pcapファイルとpythonのソースが渡されます)

*************************** If you look at that Constellation the sky will open *****************

Traffic Traffic Traffic...

this is really strange ...

hour 1...

hour 2...

hour 3...

where is the data!!!!!? AAAAAAAAAAA ...
lets take a look to the night and see if we can plot something....

pcapはWiresharkで見ると、pingに何か数値が入っているのが見えます
こういうpingパケットがめっちゃあります

Misc_200_1.jpg

チームの方がこれを抽出してくださいました

4.242410,2.97088
7.021890,1.98935
4.113620,2.99082
       ・
       ・
       ・

これをインプットに、与えられたPythonコードを使えばフラグが出てきそうなんですが、予想以上の クソコード バクバグしたコードでうまく動いてくれません。

諦めて、Excelでプロットしてみました。

Misc_200_2.jpg

お、文字っぽいの見えるじゃーん
と小躍りしながら入力するも不正解。。1:aAAじゃないんだろうなと思って、いろいろ試すもincorrect…

与えられたPythonコードもクラスタリングしてグラフにプロットするだけだから、同じものが見えてると思うんだけどなぁ。。

と、うーん(時間切れ)

正解は TMCTF{flag:1} あぁ。。。これは。。。読めないわwww 言われたらわかるけど

Forensics-Crypto1 100

問題

Here is the full flag, unfortunately it burnt a bit. I know you can handle it with all the things you know.

qrcode.png

まさかのQRコードw

まず、Excelに書き写して、以下を見て補完できる所は補完します

WebTec kikineria QRcode‎ > ‎QRコードの作り方‎ > ‎データの配置
https://sites.google.com/site/kikineria/qrcode/qr-kb/qr_recipe_4

Forensics-Crypto1_100.jpg

そして、以下のデコーダーにかけます

strong-qr-decoder - 強力なQRコード解析ツール(ただし、テキスト化が必要)
https://github.com/waidotto/strong-qr-decoder

が…ダメっ
データ部が全部無いこのパターンは、デコーダーではデコードできないようです

よくよく調べると、そっくりな問題がSECCON2014でありました

その時は高難易度の400点問題だったのに。。

どうやらQRコードの残りの部分がリード・ソロモン符号で、そこから消失した分を復元できるようです

リード・ソロモン符号を抽出してよしなにやってくれる素敵なソフトないかな~と探しましたらありました

QRazyBox
https://merricx.github.io/qrazybox/

QR version : 2 (25x25)
Error correction level : Q
Mask pattern : 7
Number of missing bytes (erasures) : 0 bytes (0.00%)
Data blocks :
["10001001","11011000","10011101","10001001","01000110","11100100","01101110","01000110","10111101","01000010","11110101","10001001","11010011","00110010","11010100","11100011","00010111","01100110","10100011","01000111","11010000","11101100","11011010","10011101","00101101","01111111","01000101","01100001","10001110","01011100","10101000","11111101","10011100","11111111","01101100","10101011","10110100","10111010","01011001","10111100","00100110","00011001","00100001","11101000"]
----------------Block 1----------------
Reed-Solomon Block : [137,216,157,137,70,228,110,70,189,66,245,137,211,50,212,227,23,102,163,71,208,236,218,157,45,127,69,97,142,92,168,253,156,255,108,171,180,186,89,188,38,25,33,232]
Syndrome : [60,113,92,240,55,140,2,200,61,78,80,150,119,91,66,54,203,180,164,235,152,99]
Number of Errors : 10
Coefficient of the error location polynomial : [144,88,205,226,152,69,193,116,235,88]
Error Position : []
Error Magnitude :
Final data bits :
10001001110110001001110110001001010001101110010001101110010001101011110101000010111101011000100111010011001100101101010011100011000101110110011010100011010001111101000011101100
Final Decoded string :

ここまでやって、寝て起きたらチームのQRソムリエさんがサクッと解いてたw

やり方は間違ってなかったっぽいけど、エクセルにQRコード書き写すのを間違えたかなぁ。。

参考(writeup集)

CTFtime.org / Trend Micro CTF 2018 - Raimund Genes Cup - Online Qualifier tasks and writeups
https://ctftime.org/event/659/tasks/

Misc_200_2.jpg (172.993 KB) kanata, 2018/09/16 17:06

Misc_200_1.jpg (185.275 KB) kanata, 2018/09/16 17:06

qrcode.png (99.581 KB) kanata, 2018/09/16 17:28

Forensics-Crypto1_100.jpg (78.343 KB) kanata, 2018/09/16 17:42

クリップボードから画像を追加 (サイズの上限: 100 MB)