cat: flag.txt: Permission denied
初心者向けヒント1
ncで接続すると、シェルが起動することがわかります。chal.shを読むと、シェルが起動する前にflag.txtが作成されています。- その後、
flag.txtのパーミッションが400に設定されます。 - これらのコマンドを実行するのは
rootユーザーです。 - そのため、
400はrootユーザーのみ読み取りができることを意味します。 - そして
runuser -u nobody -- shによってnobodyユーザーでシェルが起動します。 - しかし、
cat flag.txtを実行してもPermission deniedとなり、フラグを読むことができません。 - では、どうすればフラグを読み取れるでしょうか?
初心者向けヒント2
- メタ的な視点ですが、そもそも、なぜわざわざ
chal.shの中でflag.txtのパーミッションを設定しているのでしょうか? chal.shのパーミッションはDockerfileで指定されています。- 同じように、
flag.txtもDockerfile側でパーミッションを設定することは可能なはずです。 Dockerfileでパーミッションを指定したときと、chal.shのようにパーミッションを指定するときで、どのような挙動の差が生まれるかを考えてみましょう。