2022年3月15日~3月29日に開催された中高生向けのCTF大会、picoCTFの[Web Exploitation]分野のwriteupです。 その他のジャンルについてはこちらを参照。
Inspect HTML
Can you get the flag?
Go to this website and see what you can discover.
htmlソースに直接flagが書いてありました。
Chromeだと、表示
> 開発/管理
> ソースを表示
で見ることが出来ます。
Includes
Can you get the flag?
Go to this website and see what you can discover.
このサイトのソースを見てみると
<html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="style.css"> <title>On Includes</title> </head> <body> <script src="script.js"></script> ...(omit)...
2つリンクがあったので、style.css
とscript.js
を覗いてみるとflagが半分ずつ書かれていました。
Local Authority
Can you get the flag?
Go to this website and see what you can discover.
適当なusernameとpasswordでログインしたあとのページのソースを見てみると
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="style.css"> <title>Login Page</title> </head> <body> <script src="secure.js"></script> ...(omit)...
いかにも怪しいsecure.js
をクリックしてみてみると、有効なusernameとpasswordが書いてあったので、それを使ってログインするとflagが出てきました。
Search source
he developer of this website mistakenly left an important artifact in the website source, can you find it?
The website is here
ちょっとオシャレなページ。タイトルから、ソースを探しまくればflagが出てきそうなので探しまくります。
topページのソースからリンクが貼ってあった/css/style.css
にflagが書かれていました。
Forbidden Paths
Can you get the flag?
Here's the website.
We know that the website files live in
/usr/share/nginx/html/
and the flag is at/flag.txt
but the website is filtering absolute file paths. Can you get past the filter to read the flag?
パストラバーサル練習問題。
このフォームにファイル名を入れると中身を表示してくれます。問題文の情報より、
../../../../flag.txt
を入れるとflagが表示されました。
Power Cookie
Can you get the flag?
Go to this website and see what you can discover.
cookie練習問題。
Continue as guest
のポチッとボタンを押た後にcookieを確認すると、isAdmin = 0
のvalueが入っています。この値を1
に変更し、/check.php
画面を表示するとflagが出てきました。
Roboto Sans
The flag is somewhere on this web application not necessarily on the website. Find it.
Check this out.
robots.txt
練習問題。
またこのおしゃれヨガページ。/robots.txt
を表示してみると
User-agent * Disallow: /cgi-bin/ Think you have seen your flag or want to keep looking. ZmxhZzEudHh0;anMvbXlmaW anMvbXlmaWxlLnR4dA== svssshjweuiwl;oiho.bsvdaslejg Disallow: /wp-admin/
base64でencodeされたなにかがあるのでdecodeしてみます。
flag1.txtjs/myfi js/myfile.txt
flag1.txt
は見つからなかったので、/js/myfile.txt
を開いてみるとflagが表示されました。
Secrets
We have several pages hidden. Can you find the one with the flag?
The website is running here.
ちょっとうるさ目のtopページ。このページのソースを見てみると、/secret/assets/DX1KYM.jpg
というリンクが。怪しいので /secret/index.html
を見てみると
はらたつ感じのgif。このページのソースに /hidden/file.css
というのがあったので、こっちも覗いてみます。
/secret/hidden/
にアクセスすると、ログインページ。こちらもソースを見てみると、/superhidden/login.css
というリンクを発見。まだ続くのか。
finallyらしいのでここで再度ソースを見てみるとflagがありました。
SQL Direct
Connect to this PostgreSQL server and find the flag!
ポチッとボタンを押してマシンをローンチしてみると、問題文が増えました。
psql -h saturn.picoctf.net -p 51244 -U postgres pico
Password is
postgres
PostgresSQL問題。言われたとおり接続してみます。
$ psql -h saturn.picoctf.net -p 51244 -U postgres pico Password for user postgres: psql (14.1 (Debian 14.1-1), server 14.2 (Debian 14.2-1.pgdg110+1)) Type "help" for help. pico=#
接続できました。あとはこちらのページなどを参考にDBを見ていきます。
pico=# \dt List of relations Schema | Name | Type | Owner --------+-------+-------+---------- public | flags | table | postgres (1 row) pico=# SELECT * FROM flags; id | firstname | lastname | address ----+-----------+-----------+---------------------------------------- 1 | Luke | Skywalker | picoCTF{L3arN_S0m3_5qL_t0d4Y_73b0678f} 2 | Leia | Organa | Alderaan 3 | Han | Solo | Corellia (3 rows)
出た。PostgresSQLのクエリが使えればOKな問題。
SQLiLite
Can you login to this website?
SQLite問題。先程と同様、ポチッとボタンを押してinstanceをローンチしてみると問題文が増えました。
Try to login here
指定されたサイトにWebブラウザでアクセスしてみます。
見慣れたログイン画面。SQLiteとのことなので
'or 1=1; --
をusrenameに入れてログインしてみます。
username: 'or 1=1; --
password:
SQL query: SELECT * FROM users WHERE name=''or 1=1; -- ' AND password=''
Logged in! But can you see the flag, it is in plainsight.
どういうクエリになったかちゃんと教えてくれて親切。flagが表示されていないのは、何か他に条件があるのかな?と思ったらこのページのソースコードにflag書いてありました。