part 3 finished, format
This commit is contained in:
parent
d717aef0f7
commit
b6d4caaccc
7 changed files with 71 additions and 45 deletions
|
@ -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}
|
||||
|
|
Reference in a new issue