part 3 finished, format

This commit is contained in:
Florian Hoss 2022-05-02 11:32:46 +02:00
parent d717aef0f7
commit b6d4caaccc
7 changed files with 71 additions and 45 deletions

View file

@ -43,7 +43,7 @@ Die anschließende Funktion
gibt eine 0 zurück wenn man gewonnen hat.
Aber in der Funktion wird ein Buffer Overflow stattfinden, da \verb|argv[1]| mit \verb|strcpy()| ohne Begrenzung in ein limitiertes 16 Byte großes char array kopiert wird. Dabei werden im Stack Werte überschrieben. Da können wir angreifen.
Aber in der Funktion kann ein Buffer Overflow stattfinden, da \verb|argv[1]| mit \verb|strcpy()| ohne Begrenzung in ein limitiertes 16 Byte großes char array kopiert wird. Dabei werden im Stack Werte überschrieben. Genau dort kann der Angriff stattfinden.
\subsection{Versuchen zu gewinnen}
@ -57,25 +57,26 @@ Das kompilierte Programm mit \verb|gdb bufferOverflow| starten. Einen Breakpoint
Getätigte Eingaben im Programm:
\verb|Username: Florian, Input1: 1, Input2: 1, Input3: 1|
Username: \verb|Florian|, Input1: \verb|1|, Input2: \verb|1|, Input3: \verb|1|
\begin{figure}[H]
\begin{center}
\begin{subfigure}[b]{0.48\textwidth}
\includegraphics[width=\textwidth]{bufferOverflow/01-input}
\caption{Erste Eingabe}
\label{fig:Erste Eingabe}
\end{subfigure}
\begin{subfigure}[b]{0.48\textwidth}
\includegraphics[width=\textwidth]{bufferOverflow/02-breakpoint}
\caption{Breakpoint}
\label{fig:Breakpoint}
\end{subfigure}
\includegraphics[width=0.8\textwidth]{bufferOverflow/01-input}
\caption{Erste Eingabe}
\label{fig:Erste Eingabe}
\end{center}
\caption{Erste Eingaben und Breakpoint}
\label{fig:Erste Eingaben und Breakpoint}
\end{figure}
\begin{figure}[H]
\begin{center}
\includegraphics[width=0.9\textwidth]{bufferOverflow/02-breakpoint}
\caption{Breakpoint}
\label{fig:Breakpoint}
\end{center}
\end{figure}
\newpage
Die analyse des Stackpointers sieht folgendermaßen aus:
\begin{figure}[H]
@ -103,22 +104,21 @@ Damit werden 28x'A' und die Adresse der Win-Funktion als argument der Software m
\begin{figure}[H]
\begin{center}
\begin{subfigure}[b]{0.48\textwidth}
\includegraphics[width=\textwidth]{bufferOverflow/04-newrun}
\caption{Zweite Eingabe}
\label{fig:Zweite Eingabe}
\end{subfigure}
\begin{subfigure}[b]{0.48\textwidth}
\includegraphics[width=\textwidth]{bufferOverflow/05-stackpointer}
\caption{Zweiter Stackpointer}
\label{fig:Zweiter Stackpointer}
\end{subfigure}
\includegraphics[width=0.8\textwidth]{bufferOverflow/04-newrun}
\caption{Zweite Eingabe}
\label{fig:Zweite Eingabe}
\end{center}
\caption{Zweite Eingaben und Stackpointer}
\label{fig:Zweite Eingaben und Stackpointer}
\end{figure}
Die erneute Ausgabe der wichtigen Adressen zeigt uns nun, dass der EIP mit \verb|\x41\x41\x41\x41| überschrieben wurde (Abbildung \ref{fig:Zweiter Stackpointer}) und deshalt korrekt gesetzt werden sollte. Das weitere Ausführen, endet nach einer erfolgreichen Runde in einem segmentation fault (Abbildung \ref{fig:Segmentation Fault}).
\begin{figure}[H]
\begin{center}
\includegraphics[width=0.8\textwidth]{bufferOverflow/05-stackpointer}
\caption{Zweiter Stackpointer}
\label{fig:Zweiter Stackpointer}
\end{center}
\end{figure}
Die erneute Ausgabe der wichtigen Adressen zeigt uns nun, dass der EIP mit \verb|\x41\x41\x41\x41| überschrieben wurde (Abbildung \ref{fig:Zweiter Stackpointer}) und deshalt korrekt gesetzt werden sollte. Deswegen endet das weitere Ausführen, nach einer erfolgreichen Runde in einem segmentation fault (Abbildung \ref{fig:Segmentation Fault}).
\begin{figure}[H]
\begin{center}
@ -128,9 +128,7 @@ Die erneute Ausgabe der wichtigen Adressen zeigt uns nun, dass der EIP mit \verb
\end{center}
\end{figure}
Dazu kann einfach die normal gesetzte Speicheradresse genutzt werden. Es sollte die vorher gesetzte Adresse wieder genutzt werden. Diese lautete wie in Abbildung \ref{fig:Erster Stackpointer} zu sehen \verb|0xbffff2f8| welches in \verb|\xe8\xf2\xff\xbf| umgewandelt wird.
\newpage
Dazu kann einfach die normal gesetzte Speicheradresse genutzt werden. Diese lautete wie in Abbildung \ref{fig:Erster Stackpointer} zu sehen \verb|0xbffff2f8| welches in \verb|\xe8\xf2\xff\xbf| umgewandelt wird.
Damit wird das Programm noch einmal gestartet:
@ -140,19 +138,18 @@ Und es wird 5 mal in Folge gewonnen:
\begin{figure}[H]
\begin{center}
\begin{subfigure}[b]{0.48\textwidth}
\includegraphics[width=\textwidth]{bufferOverflow/07-win-1}
\caption{Gewinn-1}
\label{fig:Gewinn-1}
\end{subfigure}
\begin{subfigure}[b]{0.48\textwidth}
\includegraphics[width=\textwidth]{bufferOverflow/08-win-2}
\caption{Gewinn-2}
\label{fig:Gewinn-2}
\end{subfigure}
\includegraphics[width=0.8\textwidth]{bufferOverflow/07-win-1}
\caption{Gewinn - Teil 1}
\label{fig:Gewinn - Teil 1}
\end{center}
\end{figure}
\begin{figure}[H]
\begin{center}
\includegraphics[width=0.8\textwidth]{bufferOverflow/08-win-2}
\caption{Gewinn - Teil 2}
\label{fig:Gewinn - Teil 2}
\end{center}
\caption{Gewinn}
\label{fig:Gewinn}
\end{figure}
\subsection{Stack}