Browse files

changes to day2

  • Loading branch information...
1 parent 5f948ad commit dbad111746bff345b40ae962a16c5f4baed7969b @thorlund thorlund committed Apr 18, 2012
View
BIN handout/day2/legetime1
Binary file not shown.
View
BIN handout/day2/legetime2
Binary file not shown.
View
BIN handout/day2/legetime3
Binary file not shown.
View
BIN handout/day2/legetime4
Binary file not shown.
View
BIN handout/day2/oldlegetime2
Binary file not shown.
View
4 private/day2/Makefile
@@ -5,8 +5,8 @@ all:
$(GCC) -o legetime1 legetime1.c
$(GCC) -o legetime2 legetime2.c
$(GCC) -o legetime3 legetime3.c
- $(GCC) -o legetime4 legetime4.c
+ #$(GCC) -o legetime4 legetime4.c
nasm e-penis.asm
clean:
- rm -f legetime1 legetime2 legetime3 legetime4 e-penis
+ rm -f legetime1 legetime2 legetime3 legetime4 e-penis
View
10 private/day2/legetime1.c
@@ -1,14 +1,14 @@
#include <stdio.h>
-int fact_helper(int n, int acc) {
+int helper(int n, int acc) {
if(n <= 1)
return acc;
- return fact_helper(n-1, acc*n);
+ return helper(n-1, acc*n);
}
-int fact(int n) {
- return fact_helper(n, 1);
+int anon(int n) {
+ return helper(n, 1);
}
int main(int argc, char **argv) {
@@ -19,7 +19,7 @@ int main(int argc, char **argv) {
int n = atoi(argv[1]);
printf("Calculating %d!\n", n);
- printf("%d! = %d\n", n, fact(n));
+ printf("%d! = %d\n", n, anon(n));
return 0;
}
View
33 private/day2/legetime2.c
@@ -1,28 +1,27 @@
#include <stdio.h>
#include <string.h>
-char* my_strncpy(char *dst, char *src, int n) {
- int k;
+#define BUFFERSIZE 128
- for(k = 0; k < n && src[k]; k++) {
- dst[k] = src[k];
- }
-
- if(k<n)
- dst[k] = '\0';
-
- return dst;
+void execute_bin_sh() {
+ execve("/bin/sh", NULL, NULL);
}
+void log_string(int debug, char *str) {
+ char localbuffer[BUFFERSIZE];
-int main() {
- char buffer1[20];
- char *buffer2 = "testtest";
+ strcpy(localbuffer, str);
- memset(buffer1, 'A', 20);
- buffer1[19] = '\0';
+ if(debug)
+ printf("%s\n", localbuffer);
+}
- my_strncpy(buffer1, buffer2, 8);
+int main(int argc, char **argv) {
+ if(argc != 2) {
+ printf("Usage: %s [string]\n", argv[0]);
+ return -1;
+ }
- printf("%s\n", buffer1);
+ log_string(0, argv[1]);
}
+
View
19 private/day2/legetime3.c
@@ -3,25 +3,30 @@
#define BUFFERSIZE 128
-void execute_bin_sh() {
- execve("/bin/sh", NULL, NULL);
-}
+char hostname[BUFFERSIZE];
+
void log_string(int debug, char *str) {
char localbuffer[BUFFERSIZE];
strcpy(localbuffer, str);
if(debug)
- printf("%s\n", localbuffer);
+ printf("%s: %s\n", hostname, localbuffer);
+}
+
+void save_hostname(char *host) {
+ memset(hostname, 0, BUFFERSIZE);
+ strncpy(hostname, host, BUFFERSIZE-1);
}
int main(int argc, char **argv) {
- if(argc != 2) {
- printf("Usage: %s [string]\n", argv[0]);
+ if(argc != 3) {
+ printf("Usage: %s [hostname] [string]\n", argv[0]);
return -1;
}
- log_string(0, argv[1]);
+ save_hostname(argv[1]);
+ log_string(0, argv[2]);
}
View
32 private/day2/legetime4.c
@@ -1,32 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-
-#define BUFFERSIZE 128
-
-char hostname[BUFFERSIZE];
-
-
-void log_string(int debug, char *str) {
- char localbuffer[BUFFERSIZE];
-
- strcpy(localbuffer, str);
-
- if(debug)
- printf("%s: %s\n", hostname, localbuffer);
-}
-
-void save_hostname(char *host) {
- memset(hostname, 0, BUFFERSIZE);
- strncpy(hostname, host, BUFFERSIZE-1);
-}
-
-int main(int argc, char **argv) {
- if(argc != 3) {
- printf("Usage: %s [hostname] [string]\n", argv[0]);
- return -1;
- }
-
- save_hostname(argv[1]);
- log_string(0, argv[2]);
-}
-
View
28 private/day2/oldlegetime2.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <string.h>
+
+char* my_strncpy(char *dst, char *src, int n) {
+ int k;
+
+ for(k = 0; k < n && src[k]; k++) {
+ dst[k] = src[k];
+ }
+
+ if(k<n)
+ dst[k] = '\0';
+
+ return dst;
+}
+
+
+int main() {
+ char buffer1[20];
+ char *buffer2 = "testtest";
+
+ memset(buffer1, 'A', 20);
+ buffer1[19] = '\0';
+
+ my_strncpy(buffer1, buffer2, 8);
+
+ printf("%s\n", buffer1);
+}
View
36 slides/day2/slides.tex
@@ -187,31 +187,39 @@
\end{frame}
\begin{frame}[c]
- \frametitle{Stackoverflow}
+ \frametitle{Legetime1}
+
\pause
- \lstinputlisting{foo2.c}
+ {\footnotesize
+ Legetime 1:
+ Disasemble legetime1:
+ \begin{itemize}
+ \item Undersøg hvor mange argumenter programmet tager
+ \item Find og print argumenterne til main
+ \item Hvilke argumenter bliver givet til de forskellige funktioner
+ \item Hvad gør de forskellige funktioner.\\
+ Hint: man printf
+ \item Hvad gør programmet
+ \end{itemize}
\end{frame}
\begin{frame}[c]
- \frametitle{Legetime resten af aftenen}
-
+ \frametitle{Stackoverflow}
\pause
- {\footnotesize
- \begin{itemize}
- \item Legetime 1: Læs og forstå funktionen \texttt{fact} og
- \texttt{fact\_helper} - meget gerne ved at steppe igennem dem.
+ \lstinputlisting{foo2.c}
+\end{frame}
- \item Legetime 2: Læs og forstå funktionen \texttt{my\_strncpy}, som gør
- det samme som \texttt{strncpy(3)}.
- \item Legetime 3: Find et stack overflow i funktionen \texttt{log\_string}
+\begin{frame}[c]
+
+ \item Legetime 2: Find et stack overflow i funktionen \texttt{log\_string}
og udnyt det. Det vil være en klar fordel at læse og forstå hvad
funktionen gør. Der findes en smart funktion som du gerne vil overskrive
returadressen med - du finder den funktion ved at køre kommandoen
- \texttt{readelf -s legetime3 | grep FUNC}.
+ \texttt{readelf -s legetime2 | grep FUNC}.
- \item Legetime 4: \texttt{legetime4} er næsten identisk med
- \texttt{legetime3}. Den smarte funktion fra før er fjernet, til gengæld
+ \item Legetime 3: \texttt{legetime4} er næsten identisk med
+ \texttt{legetime2}. Den smarte funktion fra før er fjernet, til gengæld
får du mulighed for at finde din shellcode frem.
\item Ekstraopgaver: Løs så mange baner af IO på Smash the stack som

0 comments on commit dbad111

Please sign in to comment.