CTF

picoCTF 2022-WriteUP

こんにちは、のみぞうです。
picoCTF2022に参加しました。

難しい問題は全然解けてないですし、インターネット上にはもっとつよつよの方の解説も上がってくると思うので、こういうとき私がWriteUP書く意味あるのか…?と疑問に思ったりもしますが自分用の備忘録ですと言い訳しながら書く。

Web Exploitation

Includes

jsファイルとcssファイルをインクルードしてきてることがわかるので、開発者ツールで開くとフラグの破片が得られる。組み合わせて回答。

Inspect HTML

ソースを見たら普通にコメントアウトで書いてあった、前問と同じでは…?

Local Authority

一瞬SQLインジェクションかと思ったけどjsファイルに直接IDとパスワードが書いてあった。

Search source

WEBサイトを閲覧したけどソースのパッと見ではどこを見たらいいかわからなかった。探すの面倒くさいときはこうしてこうじゃ。

# サイトごとローカルにダウンロード
wget -m http://saturn.picoctf.net 

# Grepで中身をまとめて検索
grep -r "picoCTF" *                                                                                        130 ⨯
css/style.css:/** banner_main picoCTF{1nsp3ti0n_0f_w3bpag3s_227d64bd} **/

Forbidden Paths

絶対パスがフィルタされているなら相対パスで書けばいいじゃないとマリー・アントワネットは言いました(言ってない)わかりやすくディレクトリトラバーサルの問題。

Power Cookie

CookieのisAdminカラムの値を1に書き換える

Roboto Sans

タイトルからrobots.txtだろうとアタリをつけて見に行く

なにやらbase64の値が出てきたのでデコードするとフラグのパスになる

Secrets

とりあえずソースを見るとsecretというディレクトリがあることがわかる

secret直下にダイレクトアクセス!(遊戯王風)するとその下にhiddenディレクトリがあることがわかる

hiddenディレクトリにいってみると次はsuperhiddenディレクトリがあることがわかる

superhiddenに行ってみた。一瞬見えなくて「えっ?」となったけどものすごい古典的な手法で隠してあるだけだった…

SQL Direct

Launch InstanceをクリックするとDBに接続できるようになる。

テーブル一覧を探す

select * from pg_tables;

flagsテーブルがある(見終わったらqキーで画面閉じる)

select * from flags;

SQLiLite

アクセスしてみるとよくあるログイン画面

基本のSQLインジェクションを試す

a' or 1=1 --

ログインできたみたいなのに???と一瞬わかんなかったけどソース見たら書いてありました。

Cryptgraphy

basic-mod1

問題文より、与えられた各数値のmod37を以下の文字セットにマッピングする問題。0-25はアルファベット(大文字)、26-35は10進数、36はアンダースコア。言われたとおりに愚直にPython書いた。スマートな書き方はよくわからない。

f = open('message.txt') #問題文読み込み
messages = f.read().split()
messages_i = [int(s) for s in messages]

print('picoCTF{',end="")
for i in messages_i:
    i = i % 37
    if i <= 25:
        i = i + 65
        chr_s = chr(i)
    if 26 <= i <= 35:
        i = i + 22
        chr_s = chr(i)
    if i == 36:
        chr_s = '_'
    print(chr_s,end="")

print('}',end="")
f.close()

# picoCTF{R0UND_N_R0UND_8C863EE7}