Lecture
Lecture Challenges (VO)
During the lecture, we will present small “Lecture Challenges” as a bonus. These challenges are optional, but solving them results in bonus points for the lecture exam.
The aim of the challenges is to dig deeper into a certain topic of the respective lecture. Thus, it is advisable to try to complete the challenge soon after the lecture.
Exam hacklets (VO)
Exam hacklets are small challenges which are used as exam questions (20%=10 points of your exam).
The hacklets can be solved during the semester and handed in an online test system until the third exam date (TBA).
If you have solved the exam hacklets before the 3rd exam and entered the flags in the CTFd, just tick that you solved it during the exam and you will get the points.
At the 4th and 5th exam date you will have to answer questions regarding the exam hacklets.
There are 12 hacklets the first 2 very easy one worth 0.5 points, 2 easy ones worth 0.7 points, 3 medium ones worth 0.8, 3 advanced ones worth 0.9 and 1 of hard hacklet and one very hard one dificulty worth 1.4 points.
In total you can get 10 points which equal 20% of your exam.
You are encouraged to work in groups and discuss the hacklets.
However, be aware that you should be able to understand the hacklets and how to solve them, mitigate the problems and exploit similar tasks.
The lecture challenges and hacklets can be found here: https://sasectf.student.iaik.tugraz.at/
The upstream repository can be found here:
https://extgit.iaik.tugraz.at/sase/lecture/lecture-challenges-upstream
Docker image:
We use Docker to run the challenges and test your exploits.
The image is based on Ubuntu and contains tools you might need when working on the challenges.
The Docker image can be used via the ./docker.sh
script, which is included in the upstream repository.
- Use
./docker.sh update
to pull the latest image (do this when you are using the script for the first time). - Use
./docker.sh run
to get a root shell inside the container. - Use
./docker.sh run
to automatically execute the challenge and test your exploit (e.g../docker run router
).
Inside the container the directory /tmp/app
is volatile.
This means that any changes you make there will not persist once you exit the container (they will be lost).
The directory /app
is mounted and any changes you make there will persist.
When using ./docker run
the script will execute the execute_permissions.sh
script of the corresponding challenge inside the Docker container.
This will then run your exploit with appropriate permissions.
Rules
- Challenges have to be solved on your own
- All challenges have to be submitted to our test system
- The bonus points are only valid for the first two exam dates
- To get the bonus points, you have to write your username on the exam sheet
- You cannot get positive with bonus points, i.e., bonus points only count if you are already positive
Lecture Exam
Exams are done in writing. The dates for the exams will be set in TUGOnline; please register there.
Exams consist of both theoretic questions and practical questions. Theoretic questions are basically the theoretic parts of the slides and possibly additional content presented in the lecture which are not part of the slides. Practical questions are, in principle, similar to the tasks given in the lecture challenges as well as in the practicals. However, the complexity of the questions is scaled to make them adequate for the time available during an exam.
All questions of the exam are in English. Answers can be given either in English or in German, at the student’s discretion.
No lecture notes, or any other materials are allowed during an exam. All materials required to solve the practical questions are provided at the exam. E.g., the provided materials include an ASCII table, a C function reference for required functions, and a table containing the required syscall parameters.
Sample Exams
We also provide old exams to help you prepare for the exam: