tried the hints, no success

This commit is contained in:
Florian Hoss 2022-04-25 13:16:33 +02:00
parent 03eb300db4
commit de446b3243

View file

@ -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 gcc -g --no-pie -z execstack -fno-stack-protector -D_FORTIFY_SOURCE=0 bufferOverflow.c -o bufferOverflow
\end{lstlisting} \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} \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. 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.