tried the hints, no success
This commit is contained in:
parent
03eb300db4
commit
de446b3243
1 changed files with 24 additions and 2 deletions
|
@ -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.
|
||||||
|
|
||||||
|
|
Reference in a new issue