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パケットがめっちゃあります
チームの方がこれを抽出してくださいました
4.242410,2.97088 7.021890,1.98935 4.113620,2.99082 ・ ・ ・
これをインプットに、与えられたPythonコードを使えばフラグが出てきそうなんですが、予想以上の クソコード バクバグしたコードでうまく動いてくれません。
諦めて、Excelでプロットしてみました。
お、文字っぽいの見えるじゃーん
と小躍りしながら入力するも不正解。。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.
まさかのQRコードw
まず、Excelに書き写して、以下を見て補完できる所は補完します
WebTec kikineria QRcode > QRコードの作り方 > データの配置
https://sites.google.com/site/kikineria/qrcode/qr-kb/qr_recipe_4
そして、以下のデコーダーにかけます
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/