【write-up】RiceTeaCatPandaCTF
前置き
It's only the tip of mine だけ米CTFやる
— Кодаира(コダイラ)(.🐧|.🐴💀) (@kodaira9723) 2020年1月20日
この週の土曜日に歩くサイバー兵器になるための試験が控えていたのですぐに解ける問題しかやってません。評判の方は散々だったようですが、個人的には実行ファイルを解析する問題が解けたので良かったです。
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を書き換えることでタイマーを適当なところまで進めることができた。
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以下に記載されているディレクトリにはクローラがアクセスすることができないため、基本的には検索エンジンの結果に反映されません。(理解が正しければそのはず。)そして、怪しい名前のディレクトリには多分それなりのものが置かれてるんだと思います。(これ以上はいけない気がするので今日はこれで終わり。)