れぷすたぶろぐ

思ったことを適当に書く

TUCTF2018 Writeup

こんにちは。Repsterです。

久しぶりに(初めて?)しっかり取り組めたCTFだったので、よわよわながらWriteupを書くことにした。

Welcome

ちゃんとDiscord登録してるかなー?って問題。IRCはよく見かけて毎回IRCわからない…になっているので、Discordなのはちょっとうれしみある。

Mrs. White's Messy Maids(25)

2000年ぐらいを感じる怪しいサイトを探索するやつその1。このシリーズはClueという作品が元ネタらしい?(よく知らない)

ソースを見ると、"Mr. /Boddy"といういかにもURLに書けという感じの文字列があるので、それを加えるといい感じにFlag。

Mr. Green's Weird Website(79)

2000年ぐらいを感じる怪しいサイトを探索するやつその2。

突然username/password入力画面に飛ばされてうーんみあるが、適当にadmin/adminってすればいいんじゃね?ってやったらFlag。

Colonel Mustard's Simple Signin(172)

2000年ぐらいを感じる怪しいサイトを探索するやつその3。

まーた突然username/password入力画面に飛ばされてうーんみある。

また同じパターンか…?と思っていくつか試したけど無理よりの無理だったので、悩んだが、Simple Signinなので、SQLiやろ!って言って「' or 'a' == 'a」 でFlag。シンプル。

Literal(50)

アクセスするとWikipediaにリダイレクトされてしまうので、いい感じにリダイレクト前のページを読む問題。

つよい人のWriteupを見るとwgetを使ってページのソースを取得してて、なるほどなあと思った。

えっ僕?リダイレクトするまでの短い時間にChromeのソース表示で表示できないかな〜と思ったら5回目ぐらいで成功しちゃって、それで見たので技術的に何も面白くはない。

Danger Zone(112)

pythonバイトコードであるpycファイルが与えられるので、とりあえずpythonで実行すると、以下の文字列が出てくる。

Something Something Danger Zone
=YR2XYRGQJ6KWZENQZXGTQFGZ3XCXZUM33UOEIBJ 

Base64を逆に書いたっぽいなあという感じだし、逆にしてBase64のデコードしたら

$9M�1FW }�TvP4FV+�P�

は?……うーん、詰み。

適当にstringsでもかけるか、と思ってかけたら、reverseとかb32decodeとかrot13とか、ほーんみたいな単語がいくつか。なるほどBase32か…確かに小文字出てこないな…

デコードしたらこう。

HPGS{e3q_y1a3_0i3ey04q}G

なんか確実にずれてるけど、デコーダが悪いのかわからないけど、とりあえずrot13すると

UCTF{r3d_l1n3_0v3rl04d}T

ずれてるの直してFlag。

Writeup見たら、pycからpythonコードを復元しててずるですがというお気持ちになった。

yeahright(149)

よくわからないELFが渡されるので、とりあえず実行。Password聞かれるけど適当に打ち込んでも当たらない、それはそう。

伝家の宝刀stringsで見たらいかにも怪しい文字列があるので、コピペしたらFlag。いや、Danger Zoneのほうが難しいが…

RSAyyyy(358)

唯一の高得点帯。RSAの暗号化・復号を実践的に学べるから詳しくない人にゆずってあげてね!って書いてた。詳しくないので学びみを得た。

pとqからnを計算しよう!というゆるふわなところから始まったので、python片手に計算すれば楽勝やんけ!と思ったのもつかの間、次の問題が文字列を数値にしてね!で早速pythonの文字列の扱い方に困惑。各文字のASCIIコードを16進でつなげて10進に戻して事なきをゲット。

あとはRSAの基礎的なやり方さえわかっていればそんなに難しくはなかったと思うが、オイラーのφ関数が(p-1)(q-1)に等しくなることに気づかずにかなしみになった。ちゃんとWikipediaを読め。

XORient Yours(409)

解けなかったけど実質解けたようなものなので書いちゃう。

XORの性質(a ^ b ^ b = a)を使った問題で面白かった。

pythonコードが与えられるので読むと、Flagに対してkeyとなる文字列を順にXORをかけて、その結果のASCII文字が与えられた暗号になってるらしい。

じゃあXORの性質から、その暗号に同じkeyを同じパターンでかけてやればFlagが得られるやんとなるので、適当に探索。

……しようとするとkeyの文字列長が9なので、全探索は不可能。うーん。

Flagに"TUCTF{"が含まれるはずなので、その文字列が含まれるようなkeyを考えればよい。性質から、"TUCTF{"を暗号にかけてやればkeyになるので、暗号の各6文字分にかけてすべて英数字になるものを選ぶと、13個ぐらいみつかる。うーん。"XORISC"とかいう怪しいのがある…

ということで、"XORISC"から始まる6文字がわかったので、あと3文字をブルートフォースすると、"XORISCOOL"がkeyだとわかる。これを暗号にかけてFlag。(Discordに「keyは全部大文字やでw」って書かれててマジか〜ってなった)

感想

たのしかった。過去のWriteupから解きやすそうな感じがしていたが、思ったより解きやすかったのでもうちょっと解きたかった。Pwnが一切解けなかったのがかなしい。精進しようと思った。Web問はエスパーだと思った。

結果は946pointsで423rd。初心者にしては健闘したのでは…?