Hints for capturing server 5.

Q1 is a quiz regarding how to raise an exception by passing invalid UTF-8 bytes.

  "Do you know that, in Python 3, trying to print invalid UTF-8 character causes
   an exception?"
  "Do you know that, in Linux, we can use all bytes except '/' (which is a
   directory separator) and '\0' (which is the terminator) ?"
  "Do you know how to create pathnames containing such characters?"

Q2 is a quiz regarding how to hijack the Python interpreter.

  "Do you know that the Python interpreter passes its control to the user
   if specific environment variable is passed?"

Q3 is a quiz regarding how to indirectly execute a program without read/execute
permission.

  "Do you know how to execute an executable file without using execve() system
   call?"
  "Do you know that programs with setuid and/or setgid permissions are given
   its user and/or group's permissions respectively?"
  "Do you know how to find programs with setuid and/or setgid?"

Q4 is a quiz regarding how to get specific value using integer overflow problem.

  "Do you know how values are stored in the Perl interpreter?"
  "Do you know what testcases you need to test in order to figure out this
   behavior?"
  "Do you know how to create sparse file in order to pass intended values?"

Q5 is a quiz regarding how to return an intended error code from a system call
using a limitation as of CentOS 7's kernel.

  "Do you know how to use sendfile() system call?"
  "Do you know what testcases you need to try in order to obtain that error
   code."
  "Do you know what keywords to specify when searching on the Web?"

Q6 is a quiz regarding how to trigger division by 0 error.

  "Do you know values range which "unsigned short" in C language can handle?"

Q7 is a quiz regarding how to win the stone-scissors-paper game for 8
consecutive times.

  "Do you know that rand() function in C language is a reproducible random?"
  "Do you know how to predict a reproducible random?"

But server 5 is a bit different from normal CentOS 7 environment.
In the kernel side, a few access restrictions shown below are enabled.

  Operations which need ptrace() permission are not permitted. Therefore,
  you cannot use e.g. strace, ltrace for dumping the answers.

  Opening /proc/$pid/mem is not permitted. Therefore, you cannot use
  e.g. debuggers for dumping the answers.

  XFS filesystem has quota of 100MB for each user. Therefore, you cannot
  occupy all disk space in order to disturb other users.

  CaitSith security module is restricting execution of setuid/setgid programs,
  environment variables which can be passed to execve() system call, and
  reading other user's information via /proc interface.
