調べて、学ぶ

検索したり実験したことを覚えとくブログ

taskctfに参加してきた(writeupのようなもの)

what's taskCTF?

  • task4233さんが自分の誕生日に開催しているctf(こちらが祝わなければならないはずなのに...)
  • 概要はこちら
  • taskさんはhardening2020で一緒のチームになったご縁。 seccon for begginersで札幌来た時に会いたかったけど、こちらの都合が合わず参加できず...

やったこと

1.submit_flag

  • こうやるんですよ ということで、問題文にあるフラグをコピペ。

2.just_google_it

  • 添付ファイルにあるフラグを読む問題。
  • ファイル名が「base64_encoded.txt」なので、デコードすればいいんだな と、お世話になっているdencodeでテキストを貼り付けたところ、「hello! hello! helleo!...」の連続。
  • 最後までスクロールしていると途中から文字の並びが崩れていることに気づき、もう一度ゆっくりスクロールするとflagが二箇所に分かれて置かれているのを見つけて、コピペ。
  • 他の人のwriteupをみて、テイストエディタに貼り付けて「hello! 」(最後にスペースつける)を消せば簡単にわかることに気づく

try_python

  • Pythonを使って配布ファイルに書かれた数字を全て足してみましょう! Flagは taskctf{ファイルに書かれた数の合計} です。」
  • ファイルは"1 3 5 7 ... 999"の羅列
  • わたくし、pythonは未学です... ということで、ブラウザのF12でwebコンソールを開き、以下のソースを書いて対応
let txt= '(テキストの中身)';
let sum = 0; 
let i;
for(i of txt.split(' ')){sum+= Number(i)}

ごめんなさい。python使いませんでした。

build_docker_environment

  • 「配布ファイルに含まれるapp/app.pyのコメントを外してDockerコンテナを起動し、Flagを取得してみましょう!」
  • docker、苦手意識でまだ触ってないのです。
  • ctfの案内ページにdockerの場合はこのコマンド叩いて という説明があることを思い出し実行(この場で初めてdockerDesktop入れましたよ)
  • app.pyのコメント欄を探してコメント削除・再実行してフラグゲット

welcome

  • 「2019年のtaskctfのwelcome問題のFlagは何でしたっけ?」
  • ”taskctf 2019”でググったら[st98]さんのページがトップに現れたので一読。フラグゲット

ramen

  • 「このラーメン屋の名前は何でしょう?」(写真添付)
  • google lensに投げたらかなりそれっぽいのが出てきたので回答。フラグゲット

robot(解けなかった)

  • 「Flagが漏洩してるって聞いたけど、本当ですか???」と、URLの記載
  • 開いたらかわいい手描きのロボットのjpg
  • ロボット...robots.txtのことか? と思い、URLの最後に「/robots.txt」を付けてブラウザを開くと、「User-Agent: * Disallow: /admin/flag」の表示。
  • URLの最後に「/admin/flag」をつけてブラウザを開くと、
    「401 Unauthorized
    (CTFサーバではないIP) is not internal IP address :(」
  • 上記のIP、自分のグローバルと思われるので、これを変えれば良い?
  • 「http 接続元 ip 変更」でググったらここで”X-Forwarded-For”のことを知り、これの使い方を考えているところで「そういえばburpってあったな」と思い、なんとなくでインストール&スタート
  • エラーメッセージがX-Forwarded-Forで指定したIPになったので、「インターナル...サーバのIPになればよい?」と考えたものの、サーバのグルーバルIPを指定してエラーになり頓挫。(ここで諦めた)
  • あとで他の人のwriteupみて気づいたけど、internalならloopbackアドレスやん...

first(解けなかった)

  • 「メンテ明けの12/6に100番目ちょうどの登録をしたユーザをトップページで掲載したいので、ユーザ名を taskctf{ユーザ名} で教えてください!」(docker再び)
  • dockerを起動してアクセスすると掲示板のような画面にユーザ名とコメントが出る
  • pythonソースがある。sqliteのファイルにSQLで抽出している(...インジェクションしろってこと?)
  • 「';」して条件なしのSQLを付与してみたけど、「複数行のSQLは処理しません」と怒られる。
  • まさかね...と思いながらURLの後ろにsqliteのファイルを記載したけどダウンロードされず <当たり前か
    ここで頓挫。
  • 他の人のwriteup参照。union句かぁぁぁぁ!忘れてた!!

kofun(解けなかった)

  • 「作問者が訪れてSNSにもアップロードしたはずの古墳の名前を思い出せなくなってしまいました.」(写真添付)
  • 写真には洞窟の入り口のようなもの(石室ということを知った)
  • google lensでも全く分からずでヒント使用。「twitterみろ」と。
  • twitterには、いろいろな古墳を歩いて見たことと、問題の写真ともうひとつ、埴輪が配置された古墳の写真。
  • 「古墳 埴輪」でググると、かなりそれっぽい写真を発見。龍角寺101号古墳らしい。 ...が、フラグゲットならず。
  • しばらく考えて、「歩き回ったなら、龍角寺近辺では?」となり、龍角寺の住所(千葉県印旛郡)の古墳を探すが、それらしき写真が見当たらず。頓挫。
  • 他の人のwriteup参照。古墳を列挙しているサイトから見つけたとのこと。地図で見たらまぁまぁ離れた場所。縮尺で大体900mほど。
  • 住所違うやん!(千葉県成田市) そりゃ見つからんわ!

douro(解けなかった)

  • 「この写真が撮られた場所の緯度と経度を教えてください!」(写真添付)
  • 交差点らしき風景。植物的には外国くさい。(よく見たら看板も英語だ)
  • はじっこに「culver」という文字が見えたのでググると、ロサンジェルスに「culver hotel」というホテルが出る。(お?)
  • culver hotel近辺の交差点を探しても、ストリートビューでは風景が違う
  • 道路の看板に書かれた文字(matheis withers)をググってもそれらしきものを見つけられず。頓挫。
  • 他の人のwriteup参照。どうも道路の看板までは当たりらしいけど、うーん...これはちょっとわからん。多分解けない。

振り返り

  • 231点取って、ヒントを2問(−100点)使ったので、131点で105位。むぅ...
  • 他にも、暗号解読やバイナリ解析があるけど全くできると思えなかったのでパス。
  • 相変わらずめっさ楽しい
  • こういうので色々調べると、初めて触る技術やアプリがあって知識の幅が広がる
  • なんとなくでもburpは使えるということがわかった
  • なんとなくでもdocker起動くらいならなんとかなることがわかった。相変わらずGoogleさんすごい。
  • 後半の三個(robots,first,kofun)は粘りが足りなかった(と思う)
  • 分からないととにかくwriteupが待ち遠しい。なるほど、このために他の人はwriteupを書いてくれているのか!(本当か?)
  • taskさん、誕生日おめでとうございます!

taskCTF2022


先日初めてctfに参加した時と、今回のtaskctf、両方ともctfdというアプリケーションとのこと。これは...クイズで使えるかも。_φ(・ _ ・