Rows:
| CHALLENGE | AUTHORS | SOLVES (CURRENT) | SOLVE RATE (AT CONTEST TIME) |
|---|---|---|---|
1719 solves | - | ||
1559 solves | - | ||
911 solves | - | ||
620 solves | Top 28% = 84/300 users | ||
611 solves | - | ||
590 solves | - | ||
525 solves | Top 73% = 683/928 teams | ||
402 solves | - | ||
399 solves | - | ||
367 solves | - | ||
361 solves | Top 32% = 56/174 users | ||
360 solves | - | ||
344 solves | - | ||
335 solves | - | ||
329 solves | - | ||
326 solves | - | ||
325 solves | - | ||
320 solves | - | ||
310 solves | - | ||
303 solves | - |
Rows:
cat: flag.txt: Permission denied
nc で接続すると、シェルが起動することがわかります。chal.sh を読むと、シェルが起動する前に flag.txt が作成されています。flag.txt のパーミッションが 400 に設定されます。root ユーザーです。400 は root ユーザーのみ読み取りができることを意味します。runuser -u nobody -- sh によって nobody ユーザーでシェルが起動します。cat flag.txt を実行しても Permission denied となり、フラグを読むことができません。chal.sh の中で flag.txt のパーミッションを設定しているのでしょうか?chal.sh のパーミッションは Dockerfile で指定されています。flag.txt も Dockerfile 側でパーミッションを設定することは可能なはずです。Dockerfile でパーミッションを指定したときと、chal.sh のようにパーミッションを指定するときで、どのような挙動の差が生まれるかを考えてみましょう。