\section{Part 1: Buffer Overflow} \subsection{Kompilieren} Zum kompilieren des C-Programmes wird GCC verwendet. Folgender Befehl wird ausgeführt: \begin{lstlisting}[breaklines] gcc -g --no-pie -z execstack -fno-stack-protector -D_FORTIFY_SOURCE=0 bufferOverflow.c -o bufferOverflow \end{lstlisting} Danach kann das Programm mit \verb|.\bufferOverlow| gestartet werden. \subsection{Analyse} Das Programm ``bufferOverflow.c'' beginnt mit der Eingabe des Namens mit Hilfe der Funktion ``fgets''\footnote{\href{https://www.tutorialspoint.com/c_standard_library/c_function_fgets.htm}{tutorialspoint - fgets}}. Dabei wird die Länge des eingegebenen Benutzernamens in einem char Array der Länge 16 gespeichert. Hier wird es schon zum ersten overflow kommen. Wenn ein Nutzer einen Benutzernamen größer als 15 Charakter eingibt, wird in einen nicht reservierten Bereich geschrieben.