\section{Part 3: Format String Exploitation}

\subsection{Exploit}

Der erste Versuch ist, viele Format-Strings als Vorname und Nachname einzugeben und das Ergebnis zu beobachten. Mit einem Debugger kann die Speicheraddresse der 3 Wichtigen Variablen ausgelesen werden.

\begin{figure}[H]
    \begin{center}
        \includegraphics[width=0.9\textwidth]{format-string/stack}
        \caption{Vorname, Nachname und Key im Stack}
        \label{fig:Vorname, Nachname und Key im Stack}
    \end{center}
\end{figure}

Der Key ist im Speicher unter der Adresse 0xbffff2ec abgespeichert und kann mit dem Format String \verb|%19$i| erreicht und dezimal ausgegeben werden.

\begin{figure}[H]
    \begin{center}
        \includegraphics[width=0.8\textwidth]{format-string/done}
        \caption{Zahl richtig geraten}
        \label{fig:Zahl richtig geraten}
    \end{center}
\end{figure}

\subsection{Warum so gefährlich \& was getan werden muss}

Durch einen Format String Exploit kann jede Stelle im Speicher ausgelesen werden. Damit ist die Vertraulichkeit, ein Teil der ``CIA'', gebrochen.

Gegenmaßnahmen:

Format Strings sollten immer als Teil des Programms angegeben werden, nicht als Teil der Eingabe. Außerdem könnten die Formatzeichenfolgen als konstanten deklariert werden.
