17 lines
886 B
TeX
17 lines
886 B
TeX
\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.
|