$ :(){ :|:& };:

読者です 読者をやめる 読者になる 読者になる

$ :(){ :|:& };:

なめこうどん

ABCTF 2016 Write-up

ABCTF(http://abctf.xyz/)に適当に参加してきた。

忙しくて実質3時間ちょいぐらいしか解く時間とれなかったので

とりあえずなんも考えなくても解けるような問題しか解けてないのだが

Write-upが何となく書いてみたい…という衝動に駆られたので見よう見まねで書いてみようと思います。

ぼっちが寂しいので誰か来てと言ったところ、@sei06k14 がログインはしてくれたのだが、問題の回答形式間違えてた挙句放置かまされたため、実質ぼっちだった。

Caesar Salad - 10 (Cryptography)

$ echo 'xyzqc{t3_qelrdeq_t3_k33a3a_lk3_lc_qe3p3}' | tr 'a-z' 'd-za-c'
abctf{w3_thought_w3_n33d3d_on3_of_th3s3}

FLAG:abctf{w3_thought_w3_n33d3d_on3_of_th3s3}

Elemental - 10 (Web Exploitation)

HTML眺めてたら

...
<!-- 7xfsnj65gsklsjsdkj -->
...

っていうのがあったのでそのままpassword欄に突っ込んだら降ってきた

FLAG:ABCTF{insp3ct3d_dat_3l3m3nt}

Virtual Box 1 - 10 (Virtual Series)

配布されたWin98のイメージをVirtualBoxで開いたら、デスクトップにflag 1.docというファイルがあった。

f:id:taiyoslime:20160724095050p:plain

開いたら旗取れた

FLAG:ABCTF{FREE_P0INTS}

Just open it - 15 (Forensics)

$ strings 676F6F645F6A6F625F6275745F746869735F69736E745F7468655F666C6167.jpg | ag ABCTF
P ABCTF{forensics_1_tooo_easy?}

FLAG:ABCTF{forensics_1_tooo_easy?}

Virtual Box 2 - 15 (Virtual Series)

Darn, I found this flag so I put it in flag 1.doc but I can’t seem to be able to see it anymore.

Virtual Box 1 - 10 (Virtual Series)で使ったflag 1.docに他に文字列無いかと思って調べたら後ろのほうにあった

FLAG:ABCTF{H1DDEN_AWAY}

GZ - 30 (Forensics)

調べたらgzipだったのでgzip -dするだけ

$ file flag
flag: gzip compressed data, was "flag", from Unix, last modified: Mon Jun 27 02:22:38 2016

$ cat flag | gzip -d
ABCTF{broken_zipper}

FLAG:ABCTF{broken_zipper}

gunzipっていうのがあるのを後で知った

Virtual Box 3 - 35 (Virtual Series)

This mysterious file was left here, but I have no idea how to open it. Do you? I left it in a folder named 2016 just for you.

問題文にある通り、2016というフォルダを探したところ中にflagfour.xlsxというのがあったので

適当にzipで展開して中探したら旗あった

FLAG:ABCTF{FR0M_THE_FUTURE}

The Flash - 35 (Web Exploitation)

Elemental - 10 (Web Exploitation)とおんなじ感じで

...
<!-- c3RvcHRoYXRqcw== -->
...

とあったので

$ echo "c3RvcHRoYXRqcw==" | base64 -D
stopthatjs

なのでこれを適当にpassword欄に突っ込む

レスポンスの一部がJavaScriptで書き換えられてるぽかったので元のHTMLソースをみたら旗あった

FLAG:ABCTF{no(d3)_js_is_s3cur3_dasjkhadbkjfbjfdjbfsdajfasdl}

Drive Home - 50 (Reconaissance)

We found this link scribbled on a piece of paper: document/1_TxYCrk5vIMlUjiB1OioXmR7b-Uq_a9aPIh9JyYlPNs/edit?usp=sharing. It is broken but we need you to fix it!

問題文のURLの断片っぽいのの中のusp=sharingがとてもGoogleの某サービスっぽいので

https://drive.google.com/file/d/1_TxYCrk5vIMlUjiB1OioXmR7b-Uq_a9aPIh9JyYlPNs/edit?usp=sharing

にアクセスしたところ旗書いてあった

FLAG:abctf{g00gle_driv3_1s_my_f4v0r1t3}

Chocolate - 50 (Web Exploitation)

Cookieみたらcoookieという値がe2FkbWluOmZhbHNlfQ%3D%3Dになっていたので

$ echo e2FkbWluOmZhbHNlfQ%3D%3D | nkf -w --url-input | base64 -D
{admin:false}

これを書き換えればよいので

$ echo -n '{admin:true}' | base64
e2FkbWluOnRydWV9

あとは

$ curl -c cookie http://yrmyzscnvh.abctf.xyz/web3/ ; cat cookie | ag yrmyzscnvh.abctf.xyz
...
yrmyzscnvh.abctf.xyz    FALSE   /web3/  FALSE   0   coookie e2FkbWluOmZhbHNlfQ%3D%3D

なのでこれのe2FkbWluOmZhbHNlfQ%3D%3De2FkbWluOnRydWV9に書き換えて保存し

$ curl -b cookie http://yrmyzscnvh.abctf.xyz/web3/
...
Wow! You're an admin, maybe. Well anyway, here is your flag, ABCTF{don't_trust_th3_coooki3}
...

FLAG:ABCTF{don't_trust_th3_coooki3}

Java Madness - 50 (Reverse Engineering)

コード読むだけ

FLAG:ABCTF{ftctseloocehtsiftcba}

Virtual Box 4 - 60 (Virtual Series)

What is this?

とりあえず問題文っぽい名前のファイルを探したところwhats thisというのが見つかった

f:id:taiyoslime:20160724092248p:plain

Where I am?と言われたので保存場所確認したら旗だった

FLAG:ABCTF{Y0U_F0UND_ME}

どうでもいいのだが、Y0UをYOUって打ち込んでてしばらく気づかなかった

MoonWalk - 60 (Forensics)

とりあえずbinwalkしてみる

$ binwalk PurpleThing.png

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             PNG image, 3200 x 2953, 8-bit/color RGBA, non-interlaced
85            0x55            Zlib compressed data, best compression
2757          0xAC5           Zlib compressed data, best compression
765455        0xBAE0F         JPEG image data, JFIF standard 1.01
765485        0xBAE2D         TIFF image data, big-endian, offset of first image directory: 8
1809691       0x1B9D1B        StuffIt Deluxe Segment (data): f

JPEGが埋め込まれてるっぽいのでforemostで取り出してあげた

FLAG:ABCTF{PNG_S0_C00l}

L33t H4xx0r - 70 (Web Exploitation)

コメントにsource.txtを見ろと書いてあるのでhttp://yrmyzscnvh.abctf.xyz/web6/source.txtを見に行くと

PHPコードで

...
if(strcmp($PASSWORD, $_GET['password']) == 0){
        $success = true;
    }
    else {
...

みたいな部分がある。

PHPのstrcmpは例えば配列を比較しようとした場合、例外を投げるのではなくNULLを返すのだがPHPではNULL == 0なので

http://yrmyzscnvh.abctf.xyz/web6/?password[]=hogehoge

みたいなのを投げたら旗とれた

FLAG:abctf{always_know_whats_going_on}

AES Mess - 75 (Cryptography)

We encrypted a flag with AES-ECB encryption using a secret key, and got the hash: e220eb994c8fc16388dbd60a969d4953f042fc0bce25dbef573cf522636a1ba3fafa1a7c21ff824a5824c5dc4a376e75 However, we lost our plaintext flag and also lost our key and we can’t seem to decrypt the hash back :(. Luckily we encrypted a bunch of other flags with the same key. Can you recover the lost flag using this(https://gist.github.com/bobacadodl/a3c11057d81d81b4b7c941c6adbf36d5)?

AESはブロック暗号、かつECBモードは独立して暗号化されるので、32bitずつに区切ってリンク先と照合しながらやる

e220eb994c8fc16388dbd60a969d4953 => abctf{looks_like

f042fc0bce25dbef573cf522636a1ba3 => _you_can_break_a

fafa1a7c21ff824a5824c5dc4a376e75 => es}

FLAG:abctf{looks_like_you_can_break_aes}

Get ‘Em All - 80 (Web Exploitation)

' OR '1'='1みたいなのを入れたところSQLi成功して全レコードが表示された

FLAG:ABCTF{th4t_is_why_you_n33d_to_sanitiz3_inputs}

Always So Itchy - 100(Reconaissance)

Dialga1234 - Johnny Boy

問題文をとりあえずググったところ、https://scratch.mit.edu/projects/108998724/ が見つかった Scratchのアプリを動かしたら旗取れた

FLAG:ABCTF{DoYouThinkISpentTooMuchTimeOnThis}


以下、挑戦したが解けなかったもの

JS Pls - 80 (Reverse Engineering)

eval(new Buffer('****************','base64').toString());

という形式だったので、とりあえず中をbase64decodeすると

部分的にかのJSFuck(http://www.jsfuck.com/)で難読化されたJavaScriptコードが出てきた。

f:id:taiyoslime:20160724092540p:plain

デコーダー書くのが非常に面倒だったのでソース(https://github.com/aemkei/jsfuck)みながら30分ほど人力でやったところ、最終的にどこかでミスをしたらしく盛大に事故った。

急がば回れという教訓の実体験。


感想とか

全然解いた気がしないので今後何かしらの大会には積極的に参加していきたい。