【write-up】RiceTeaCatPandaCTF

前置き

この週の土曜日に歩くサイバー兵器になるための試験が控えていたのですぐに解ける問題しかやってません。評判の方は散々だったようですが、個人的には実行ファイルを解析する問題が解けたので良かったです。 f:id:yamanobori_programing:20200126002816p:plain

Misc

Strong Password

flagの形式を確認する問題(正直これが一番わからなかった...) rtcp{rice_tea_cat_panda}

Web

Robots. Yeah, I know, pretty obvious.

明らかにrobots.txtを見たくなる問題。以下、robots.txtの内容

User-agent: *
Disallow: 
/robot-nurses
/flag

/robot-nursesを参照するとflagが書いてあった。 rtcp{r0b0t5_4r3_g01ng_t0_t4k3_0v3r_4nd_w3_4r3_s0_scr3w3d}

No Sleep

ヒントのURLを踏むとタイマーが表示されるページに飛んだ。cookieを見てみたら任意の時間が指定されていたのでcookieを書き換えることでタイマーを適当なところまで進めることができた。

chrome.google.com

rtcp{w0w_d1d_u_st4y_up?}

Phishing for Flags

与えられたメールに貼られてるリンクを片っ端から踏んでいったらflagにたどりつた。一体何がしたかったのだろう? rtcp{r34d_b3f0rE_yOU_C1iCk}

Forensics

BTS-Crazed

mp3のファイルが渡されるので、stringsをかけたらflagがあった。 rtcp{j^cks0n_3ats_r1c3}

Allergic College Application

文字化けしてるtxtファイルが渡される。問題文に中国語を書いていたらhugahugaと書いてあったので、エンコード方式をGB18030に変更したらなんとなく意味が分かりそうな中国語になった。

rtcp{我_只_修改_了_两_次}

Reverse Engineering

ELFが渡されたのでIDAで逆アセンブルしてみると、入力された文字列の一文字ずつを.data領域に格納されているbyteデータをデコードした値と比較している。デコード方式自体は、byteデータを0x32でxorした後に0x1を加算し、さらに0x32でxorするという単純なものだった。以下pythonのソルバー。

#vim:fileencoding=utf-8

#.data領域から抽出してきたbyteデータ
key = [0x3a,0x31,0x52,0x30,0x34,0x36,0x52,0x30,0x33,0x5c,0x3a,0x51,0x73,0x30,0x35,0x45,0x5c,0x31,0x5a,0x34]
flag="rtcp{"

for i in range(len(key)):
    key[i] ^= 0x32
    key[i] -= 0x1
    key[i] ^= 0x32
    flag=flag+chr(key[i])

flag=flag+"}"
print(flag)

rtcp{50m371m32_5Pr34D_0U7}

番外編「そもそもrobots.txtってなんだ?」

いろんな所で見かけるrobots.txt、いまいちよく分かってないので調べてみました。

robots.txtは、Googlebotを始めとしたクローラーに対して、特定のディレクトリやページへのクロールを制御するテキストファイルです。

robots.txt自体はルートディレクトリに置かれているので、URLの最初のスラッシュの後ろにrobots.txtを指定してあげると、robots.txtの内容を確認することができます。(以下、某サイトのrobots.txt

User-Agent: *

# sitemap
Sitemap: https://www.sankei.com/sitemap.xml
Sitemap: https://www.sankei.com/sitemap_static.xml

# not contents
Disallow: /_test/
Disallow: /smp/_test/

# not crawl target
Disallow: /module/sys/ironna/relate/
Disallow: /module/design/alliance/
Disallow: */print/*-c.htm*
Disallow: /denshi/

# old contents
Disallow: /enak/
Disallow: /seiji/
Disallow: /wave/
Disallow: /kokusai/
Disallow: /shakai/
Disallow: /kyouiku/
Disallow: /keizai/
Disallow: /seikatsu/
Disallow: /tvnavi
Disallow: /seiron/

Disallow: /news/
Disallow: /6974/
Disallow: /databox/
Disallow: /edit/anke/
Disallow: /sports/fight/

Disallow以下に記載されているディレクトリにはクローラがアクセスすることができないため、基本的には検索エンジンの結果に反映されません。(理解が正しければそのはず。)そして、怪しい名前のディレクトリには多分それなりのものが置かれてるんだと思います。(これ以上はいけない気がするので今日はこれで終わり。)