This repository has been archived on 2024-10-30. You can view files and clone it, but cannot push or open issues or pull requests.
swb6-it-sec/Lab02/documentation/bufferOverflow/bufferOverflow.tex

40 lines
1.6 KiB
TeX
Raw Normal View History

2022-04-25 09:21:13 +02:00
\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}
2022-04-25 13:16:33 +02:00
Danach kann das Programm mit \verb|./bufferOverlow| gestartet werden.
\subsection{Hints}
Es wurden verschlüsselte Tipps beigesteuert. Zum verschlüsseln wurde folgender Befehl ausgeführt:
\begin{lstlisting}[breaklines]
echo "This is your first hint" | openssl des -nosalt -e -k 12345678 -a
\end{lstlisting}
Zum entschlüsseln muss lediglich der verschlüsselte String mit dem angegebenen secret an openssl übergeben werden.
\begin{lstlisting}[breaklines]
echo "ilEbsYAeS8Prp7xXI5MPqSEyOOKoyXbCotRFSskidgs=" | openssl des -nosalt -d -k 12345678 -a
\end{lstlisting}
Leider konnten die angegebenen Tipps nicht entschlüsselt werden. Das obige Beispiel funktioniert ohne Probleme, kann aber nicht auf die in der PDF angegebenen Tipps angewandt werden.
Fehlermeldung:
\begin{lstlisting}[breaklines]
bad decrypt
\end{lstlisting}
2022-04-25 09:21:13 +02:00
\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.
2022-04-25 13:16:33 +02:00
Ein Buffer Overflow wird hier abgefangen, da nur so viele Zeichen eingegeben werden können, wie \verb|sizeof()| zurück gibt.