こんにちは、のみぞうです。
picoCTF2022に参加しました。
難しい問題は全然解けてないですし、インターネット上にはもっとつよつよの方の解説も上がってくると思うので、こういうとき私がWriteUP書く意味あるのか…?と疑問に思ったりもしますが自分用の備忘録ですと言い訳しながら書く。
Web Exploitation
Includes
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-8.png)
jsファイルとcssファイルをインクルードしてきてることがわかるので、開発者ツールで開くとフラグの破片が得られる。組み合わせて回答。
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-2-1024x457.png)
Inspect HTML
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-1.png)
ソースを見たら普通にコメントアウトで書いてあった、前問と同じでは…?
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-7.png)
Local Authority
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-4.png)
一瞬SQLインジェクションかと思ったけどjsファイルに直接IDとパスワードが書いてあった。
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-5-1024x268.png)
Search source
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-6.png)
WEBサイトを閲覧したけどソースのパッと見ではどこを見たらいいかわからなかった。探すの面倒くさいときはこうしてこうじゃ。
# サイトごとローカルにダウンロード
wget -m http://saturn.picoctf.net
# Grepで中身をまとめて検索
grep -r "picoCTF" * 130 ⨯
css/style.css:/** banner_main picoCTF{1nsp3ti0n_0f_w3bpag3s_227d64bd} **/
Forbidden Paths
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-10.png)
絶対パスがフィルタされているなら相対パスで書けばいいじゃないとマリー・アントワネットは言いました(言ってない)わかりやすくディレクトリトラバーサルの問題。
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-11.png)
Power Cookie
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-12.png)
CookieのisAdminカラムの値を1に書き換える
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-13-1024x433.png)
Roboto Sans
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-14.png)
タイトルからrobots.txtだろうとアタリをつけて見に行く
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-15.png)
なにやらbase64の値が出てきたのでデコードするとフラグのパスになる
Secrets
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-16.png)
とりあえずソースを見るとsecretというディレクトリがあることがわかる
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-17.png)
secret直下にダイレクトアクセス!(遊戯王風)するとその下にhiddenディレクトリがあることがわかる
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-18-1024x960.png)
hiddenディレクトリにいってみると次はsuperhiddenディレクトリがあることがわかる
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-19-1024x423.png)
superhiddenに行ってみた。一瞬見えなくて「えっ?」となったけどものすごい古典的な手法で隠してあるだけだった…
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-20-1024x280.png)
SQL Direct
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-21.png)
Launch InstanceをクリックするとDBに接続できるようになる。
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-22.png)
テーブル一覧を探す
select * from pg_tables;
flagsテーブルがある(見終わったらqキーで画面閉じる)
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-24.png)
select * from flags;
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-25.png)
SQLiLite
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-27.png)
アクセスしてみるとよくあるログイン画面
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-30.png)
基本のSQLインジェクションを試す
a' or 1=1 --
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-28.png)
ログインできたみたいなのに???と一瞬わかんなかったけどソース見たら書いてありました。
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-29-1024x118.png)
Cryptgraphy
basic-mod1
![](https://yawaraka-sec.com/wp-content/uploads/2022/03/image-32.png)
問題文より、与えられた各数値の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}