diff --git a/acronyms.tex b/acronyms.tex index 054ce33..458095d 100644 --- a/acronyms.tex +++ b/acronyms.tex @@ -7,4 +7,9 @@ short = {ASLR}, long = {Address Space Layout Randomization}, } + +\DeclareAcronym{ip}{ + short = {IP}, + long = {Instruction Pointer}, +} % vim: set filetype=tex ts=2 sw=2 tw=0 et : diff --git a/assets/logic.c b/assets/logic.c new file mode 100644 index 0000000..ba6bab4 --- /dev/null +++ b/assets/logic.c @@ -0,0 +1,17 @@ +#include +#include + +void foo(char *input) { + int is_logged_in = 0; + char buf[50]; + strcpy(buf, input); + if (is_logged_in) { + puts("logged in!!1!"); + } else { + puts("not logged in"); + } +} + +int main(int argc, char **argv) { + foo(argv[1]); +} diff --git a/assets/stack.png b/assets/stack.png new file mode 100644 index 0000000..d415944 Binary files /dev/null and b/assets/stack.png differ diff --git a/assets/stack_overflow.png b/assets/stack_overflow.png new file mode 100644 index 0000000..90690ea Binary files /dev/null and b/assets/stack_overflow.png differ diff --git a/presentation.pdf b/presentation.pdf index a13494a..3f99182 100644 Binary files a/presentation.pdf and b/presentation.pdf differ diff --git a/presentation.tex b/presentation.tex index 9b27f6a..fb10387 100644 --- a/presentation.tex +++ b/presentation.tex @@ -108,16 +108,32 @@ \section{Beispiel} \begin{frame} -\inputminted{c}{assets/vuln.c} + \inputminted[firstline=4,lastline=13]{c}{assets/logic.c} +\end{frame} + +\begin{frame} + \inputminted[firstline=3,lastline=7]{c}{assets/vuln.c} \end{frame} \section{Stack Layout, Execution Flow} \begin{frame} \frametitle{Stack Layout} +\includegraphics[width=.30\textwidth]{stack.png} +\end{frame} + +\begin{frame} +\frametitle{Stack Layout} +\includegraphics[width=.60\textwidth]{stack_overflow.png} \end{frame} \begin{frame} \frametitle{Execution Flow} +\begin{itemize} + \item Beim Aufruf einer Funktion, aktuelle Adresse auf Stack + \item \emph{\Ac{ip}} auf Adresse der aufgerufenen Funktion + \item Bei \mintinline{c}{return}, Stack Frame wiederherstellen, Adresse von Stack in \emph{\Ac{ip}} + \item Was wenn die Adresse auf dem Stack überschrieben wurde? +\end{itemize} \end{frame} \section{Exkurs: Shellcode} @@ -143,8 +159,8 @@ \begin{itemize} \item Shellcode im Speicher plazieren \item Buffer überschreiben - \item \emph{IP} überschreiben - \item \emph{IP} auf Shellcode zeigen lassen + \item \emph{\Ac{ip}} überschreiben + \item \emph{\Ac{ip}} auf Shellcode zeigen lassen \end{itemize} \end{frame}