From de446b324398cb975ac52f3512b15ab38a3382ce Mon Sep 17 00:00:00 2001 From: Florian Hoss Date: Mon, 25 Apr 2022 13:16:33 +0200 Subject: [PATCH] tried the hints, no success --- .../bufferOverflow/bufferOverflow.tex | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/Lab02/documentation/bufferOverflow/bufferOverflow.tex b/Lab02/documentation/bufferOverflow/bufferOverflow.tex index 82c7a2d..d3666ee 100644 --- a/Lab02/documentation/bufferOverflow/bufferOverflow.tex +++ b/Lab02/documentation/bufferOverflow/bufferOverflow.tex @@ -8,10 +8,32 @@ Zum kompilieren des C-Programmes wird GCC verwendet. Folgender Befehl wird ausge 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. +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} \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. +Ein Buffer Overflow wird hier abgefangen, da nur so viele Zeichen eingegeben werden können, wie \verb|sizeof()| zurück gibt. +