Welcome
Sanity Check
トップページに書いてあるので頂いておこう。dctf{welc0m3_t0_dCTF}
Misc
Encrypted the flag I have
フォントを解析して何が書いてあるかを抜き取れという問題。
フラグはdctf{から始まるんだよなぁ…と思いつつ見ると、ちょうど{がふたみたいな記号になっていて、末尾もふたみたいな記号なので、フォント解析という方向性は間違っていなさそう。
あと、先頭の文字はdであることもわかったので、先頭の文字だけ切り出して、適当に調べて出てきたwww.whatfontis.com - What Font Isで判定してみると、Aurebesh Font | dafont.comであることが分かる。
あとは、対応表を見ながら文字起こししていけば答え。
dctf{mastercodebreaker}
Dragon
かわいいドット絵のファイルが与えられる。それ以外にヒントもないので、とりあえず色々試す。
- strings ダメ
- binwalk ダメ
- exiftool ダメ
ふむ。青い空を見上げればいつもそこに白い猫使ってみるか…と思いながらポチポチやっているとフラグが出てくる。
dctf{N0w_Y0u_s3e_m3}
Don't let it run
pdfファイルが与えられる。pdfファイルの解析といえばpeepdfなので、解析してみよう。
$ python2 peepdf.py dragon.pdf -i Warning: PyV8 is not installed!! Warning: pylibemu is not installed!! Warning: Python Imaging Library (PIL) is not installed!! File: dragon.pdf MD5: a85c21b3e834fd47f8c09aa62017f8a9 SHA1: bee4c92dbe47325b96d8520c20e8b9f0b29cb7e8 SHA256: f2e9ba45ecac5a32df93a5ef6d38d95d15d5d7f5c2b219f18edb014afc953d79 Size: 295461 bytes Version: 1.7 Binary: True Linearized: False Encrypted: False Updates: 0 Objects: 10 Streams: 5 URIs: 0 Comments: 0 Errors: 0 Version 0: Catalog: 1 Info: 4 Objects (10): [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Streams (5): [6, 7, 8, 9, 10] Encoded (4): [6, 8, 9, 10] PPDF> object 3 << /Type /Action /S /JavaScript /JS var _0x4ac9=['663aCYhYK','9qwaGGO','log','1PtCftm','1068uRYmqT','dctf{pdf_1nj3ct3d}','768577jhhsbr','717342hAzOOQ','722513PAXCbh','833989PQKiti','1447863RVcnTo','125353VtkXUG'];(function(_0x3b1f6b,_0x1ad8b7){var _0x566ee2=_0x5347;while(!![]){try{var _0x2750a5=parseInt(_0x566ee2(0x16e))+-parseInt(_0x566ee2(0x16d))+parseInt(_0x566ee2(0x16c))+-parseInt(_0x566ee2(0x173))*-parseInt(_0x566ee2(0x171))+parseInt(_0x566ee2(0x172))*-parseInt(_0x566ee2(0x16a))+parseInt(_0x566ee2(0x16f))*parseInt(_0x566ee2(0x175))+-parseInt(_0x566ee2(0x170));if(_0x2750a5===_0x1ad8b7)break;else _0x3b1f6b['push'](_0x3b1f6b['shift']());}catch(_0x5764a4){_0x3b1f6b['push'](_0x3b1f6b['shift']());}}}(_0x4ac9,0x8d97f));function _0xa(){var _0x3c6d20=_0x5347;console[_0x3c6d20(0x174)](_0x3c6d20(0x16b));}var a='bkpodntjcopsymlxeiwhonstykxsrpzy',b='exrbspqqustnzqriulizpeeexwqsofmw';_0xb(a,b);function _0x5347(_0x37de35,_0x19ac26){_0x37de35=_0x37de35-0x16a;var _0x4ac9ea=_0x4ac9[_0x37de35];return _0x4ac9ea;}function _0xb(_0x39b3ee,_0xfae543){var _0x259923=_0x39b3ee+_0xfae543;_0xa();} >>
jsコードが抜き出せましたね。これを真面目に解析するか…と思いきやべた書きしてある。dctf{pdf_1nj3ct3d}
これはもしかして…
$ strings dragon.js | grep dctf var _0x4ac9 = ['663aCYhYK', '9qwaGGO', 'log', '1PtCftm', '1068uRYmqT', 'dctf{pdf_1nj3ct3d}', '768577jhhsbr', '717342hAzOOQ', '722513PAXCbh', '833989PQKiti', '1447863RVcnTo', '125353VtkXUG'];
これでもいいですね。
Hidden message
画像が与えられる。できることを一通り試すとフラグが回収できる。zstegで抜き出せる。
$ zsteg fri.png b1,rgb,lsb,xy .. text: "dctf{sTeg0noGr4Phy_101}" b3,g,lsb,xy .. text: "I@4I)$Xl" b3,abgr,msb,xy .. text: "v\rWv)WvM" b4,r,lsb,xy .. text: "\nfb@DHfBHH" b4,r,msb,xy .. text: "E`@Q'g3@D@tr" b4,g,msb,xy .. text: "ND@&B$rp" b4,b,lsb,xy .. text: "D\"$ \"\"\"$bN" b4,b,msb,xy .. text: "DDD$Fr0U3p@f" b4,rgb,lsb,xy .. text: "HDd(\"b(Dd\"" b4,rgb,msb,xy .. text: "GpD@FdD#" b4,bgr,lsb,xy .. text: "H$b(\"dH$`" b4,bgr,msb,xy .. text: "t@@DFd$#" b4,rgba,lsb,xy .. text: "`OP/S/b/b?" b4,abgr,msb,xy .. text: "O@OdOdO2/"
Web
Simple web
チェックを入れてSubmitしてもフラグはもらえなかった…
通信をみてみると、
POST /flag HTTP/1.1 flag=1&auth=0&Submit=Submit
こんな感じだったので、auth=1にしてみよう。
POST /flag HTTP/1.1 flag=1&auth=1&Submit=Submit HTTP/1.1 200 OK There you go: dctf{w3b_c4n_b3_fun_r1ght?}
Very secure website
ソースコードがもらえるので見てみよう。
<?php if (isset($_GET['username']) and isset($_GET['password'])) { if (hash("tiger128,4", $_GET['username']) != "51c3f5f5d8a8830bc5d8b7ebcb5717df") { echo "Invalid username"; } else if (hash("tiger128,4", $_GET['password']) == "0e132798983807237937411964085731") { $flag = fopen("flag.txt", "r") or die("Cannot open file"); echo fread($flag, filesize("flag.txt")); fclose($flag); } else { echo "Try harder"; } } else { echo "Invalid parameters"; } ?>
ユーザー名が分からないが、適当にadminとしてみたら、Try harderと帰ってきたので、adminでよさそう。
パスワード部分は比較相手が0eから始まっているのでmagic hashを使って比較をtrueにする。
hashes/tiger128,4.md at master · spaze/hashes · GitHub
ここから好きなものを持ってきてパスワードにすればmagic hashが得られてフラグが手に入る。
dctf{It's_magic._I_ain't_gotta_explain_shit.}
※ magic hash:phpでは0e数字だけ == 0e数字だけ
が数値比較と考慮されて0 == 0
となってtrueになることを利用したもの。