Einführung in die Programmiersprache C

Save this PDF as:
 WORD  PNG  TXT  JPG

Größe: px
Ab Seite anzeigen:

Download "Einführung in die Programmiersprache C"

Transkript

1 Einführung in die Programmiersprache C 10 Sicheres Programmieren Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät

2 Literatur Klein, Buffer Overflows und Format-String-Schwachstellen. dpunkt.verlag, Aleph1, Smashing The Stack For Fun And Profit. Phrack Magazine, Issue 49, (http://www.phrack.org/issues.html?id=14&issue=49) scut/team teso, Exploiting Format String Vulnerabilities. Version 1.2, (http://inst.eecs.berkeley.edu/~cs161/sp08/notes/ formatstring-1.2.pdf)

3 Motivation Typische Konsequenzen von unsicherem Code: Programmabsturz (Denial of service DOS) Umgehung von Zugriffsbeschränkungen Ausführung von fremden Code

4 Buffer Overflows Eine Zeile ist bestimmt niemals länger als 1024 Zeichen!!elf! Definition (Buffer Overflow) Schreiben über die Grenzen eines allokierten Speicherblocks hinaus in einen benachbarten Speicherbereich. Verschiedene Arten von Buffer Overflows: Stack-basiert Heap-, BSS-basiert

5 Beispiel Beispiel 1 FILE o p e n _ f i l e ( char d i r, char base ) 2 { 3 char b u f f e r [ ] ; 4 s t r c p y ( b u f f e r, d i r ) ; 5 s t r c a t ( b u f f e r, " / " ) ; 6 s t r c a t ( b u f f e r, base ) ; 7 s t r c a t ( b u f f e r, ". mp3" ) ; 8 FILE f = fopen ( b u f f e r, " r " ) ; 9 // F e h l e r b e h a n d l u n g return f ; 11 } Rücksprungsprungadresse kann beliebig manipuliert werden

6 Häufige Fehler Falsche Verwendung von APIs Falsche oder fehlende Index-/Größenberechnung Nicht-Lesen von man-pages

7 Übung Übung Lade die Datei pl_main.c von der Übungsseite und suche nach dem dort versteckten Buffer Overflow!

8 Weniger offensichtliche Stack Overflows off-by-one auch ausnutzbar um fremden Code einzuschleusen Beispiel 1 char b u f f e r [ 2 3 ] ; 2 s c a n f (%23 s ", b u f f e r ) ; Beispiel 1 void e x t r a c t _ t o k e n ( char s r c ) { 2 char b u f f e r [MS ] ; 3 char base = s t r c h r ( src, $ ) + 1 ; 4 i n t i ; 5 f o r ( i =0; i <= MS && base [ i ]! = $ ; i ++) 6 b u f f e r [ i ] = base [ i ] ; 7 }

9 Übung Übung Lade die Datei common.c von der Übungsseite. Fang mit der Funktion child_service() an und suche von dort nach einem off-by-n Buffer Overflow! 1 Wie groß ist n? 2 Welche zusätzlichen Probleme hat der Code?

10 Shellcode Linux/i386: Wie sieht eingeschleuster Code überhaupt aus? char shellcode[] = "\xeb\x19\x5e\x31\xc0\x31\xdb\x31\xd2\x89" "\xf1\x80\xc3\x01\xb0\x04\xb2\x0b\xcd\x80" "\x31\xc0\x31\xdb\x40\xcd\x80\xe8\xe2\xff" "\xff\xff\x49\x27\x6d\x20\x48\x65\x72\x65" "\x21\x21\x21"; Demo 0x jmp 0x804957b 0x pop esi ; Pointer auf String 0x xor eax,eax 0x xor ebx,ebx 0x xor edx,edx 0x mov ecx,esi 0x b add bl,0x1 0x e mov al,0x4 0x mov dl,0xb 0x int 0x80 ; System call: write() 0x xor eax,eax 0x xor ebx,ebx 0x inc eax 0x int 0x80 ; System call: exit(0) 0x b call 0x In einem fertigen Exploit ist sowas Teil der Benutzereingabe und wird z.b. durch die Manipulation von Rücksprungadressen angesprungen.

11 Format-String-Probleme Format-Strings wie bei printf(), sprintf(), snprintf(), syslog() usw. klassische Overflows mit sprintf() möglich, da die Berechnung der Länge eines expandierten Format-Strings schwierig ist andere Problemklasse: Format-Strings werden vom Benutzer untergeschoben

12 sprintf() Prototyp 1 i n t s p r i n t f ( char s t r, 2 const char format,... ) ; Beispiel 1 char d e s t [ 2 2 ] ; 2 s p r i n t f ( dest, "%d %d", x, y ) ; Nichts Neues! Bessere API z.b. snprintf().

13 %n zur Erinnerung: Format-String wird dynamisch zur Laufzeit ge parse t printf(buffer); ist legal, aber gefährlich, wenn buffer vom Benutzer kommt jedes % Spezifikationssymbol wird interpretiert und durch ein Argument ersetzt %n schreibt die Anzahl der bisher geschriebenen Bytes in das dazugehörige Argument Achtung Wenn der Format-String vom Benutzer gesetzt werden kann, können im Prinzip beliebige Speicherbereiche manipuliert werden (beispielsweise Sprungadressen auf dem Stack).

14 Input Validation niemals Benutzereingaben vertrauen! auch wenn alle Eingaben im Buffer landen, können Programmierfehler ausgenutzt werden keine C-spezifische Problematik! Beispiele SQL-Injection Solaris 10 Telnet Bug...

15 SQL-Injection Anti-Pattern: Ungeprüfte Benutzereingaben sind Teil von SQL-Statements Manipulation, Ausspähung von Datenbankinhalten Ausführung von Programmen Beispiel 1 "SELECT id, t i t l e FROM foo " 2 + "WHERE kat=" + input + " ; " 3 4 B e n u t z e r e i n g a b e n : 5 input = " kat1 " 6 input = " kat1 ; UPDATE... ; " 7 input = " kat1 UNION SELECT nam, pw FROM... "

16 Solaris 10 Telnet Bug Telnet Trivia telnet(1) hat eine -l remote-username Option telnetd(1) läuft als root, fork t, und execve t login(1) per Verbindung login(1) hat eine -f Option... Der Bug telnetd: keine Überprüfung des Username-Inhalt Injection von -fuser möglich Solaris Besonderheit: -fbin statt -froot, da per default root login nur lokal möglich... Gleiches Problem auch schon 1994 in AIX aufgetreten.

17 Gegenmaßnahmen andere Programmiersprache verwenden?!? je nach Anwendungsfall, aber... viele Script-Sprachen-Interpreter in C geschrieben (z.b. auch JVM) oft existieren Bindings zu C-Code bzw. C-Libs Performance... sicher Programmieren Code-Review technische Maßnahmen Tools

18 Techniken Kanarienvögel auf dem Stack (siehe auch StackProtector beim gcc): Canaries nichtausführbare Stacks randomisierte Offsets... Aber: keine silver bullet Heap/BSS-basierte Exploit-Techniken existieren manche Programme benötigen ausführbare Stacks Library-Code kann immer noch angesprungen werden...

19 Tools Kein Ersatz für verantwortungsvolles Programmieren, aber hilfreich: gcc (StackProtector, -fstack-protector, häufig ein default, -fmudflap,... ) valgrind splint (unmaintained) lint grep...

20 Links Google Codesearch Beispieleingaben: memset\([^),]*,[^,]*,\ *0\ *\); sprintf\ *\([^,)]*,\ *"%s"\ *,[^)]\)

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 10 Sicheres Programmieren Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Literatur Klein, Buffer Overflows und Format-String-Schwachstellen.

Mehr

Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung)

Buffer Overflow 1c) Angriffsstring: TTTTTTTTTTTTTTTT (16x) Beachte: Padding GCC-Compiler Zusatz: gcc O2 verhindert hier den Angriff (Code Optimierung) Buffer Overflow 1c) 1 char passok='f'; 2 char password[8]; 3 printf( Passwort: ); 4 gets(password); 5 if(!strcmp(password, daspassw )){passok = 'T';} 6 if(passok=='t'){printf( %s, Willkommen! );} 7 else

Mehr

7.11.2006. int ConcatBuffers(char *buf1, char *buf2, size_t len1, size_t len2) {

7.11.2006. int ConcatBuffers(char *buf1, char *buf2, size_t len1, size_t len2) { Universität Mannheim Lehrstuhl für Praktische Informatik 1 Prof. Dr. Felix C. Freiling Dipl.-Inform. Martin Mink Dipl.-Inform. Thorsten Holz Vorlesung Angewandte IT-Sicherheit Herbstsemester 2006 Übung

Mehr

U23 - Shellcode. Twix Chaos Computer Club Cologne. Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides

U23 - Shellcode. Twix Chaos Computer Club Cologne.  Motivation Einstieg Der erste Shellcode Nullbytes, NOP Slides Twix e.v. http://koeln.ccc.de 2016-11-28 Überblick 1 Motivation Was ist Shellcode? Beispiel 2 Einstieg Erzeugen, Testen von Shellcode 3 Der erste Shellcode Strings in Shellcode 4 Nullbytes, NOP Slides

Mehr

Sicherheit in Software

Sicherheit in Software Sicherheit in Software Fabian Cordt und Friedrich Eder 3. Juni 2011 Allgemeines Begriffserklärung Woher Die 19 Todsünden 1 - Teil 2 - Teil 3 - Teil Was kann passieren Probleme beim Porgramm Durch Lücken

Mehr

Hausarbeit. Thema: Computersicherheit. Friedrich-Schiller-Universität Jena Informatik B.Sc. Wintersemester 2009 / 2010

Hausarbeit. Thema: Computersicherheit. Friedrich-Schiller-Universität Jena Informatik B.Sc. Wintersemester 2009 / 2010 1 Friedrich-Schiller-Universität Jena Informatik B.Sc. Wintersemester 2009 / 2010 Hausarbeit Thema: Computersicherheit Seminar: Datenschutz und Datenpannen Verfasser: Dmitrij Miller Abgabetermin: 5.3.2010

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 11 Was bisher verschwiegen wurde Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Type qualifier Typen können mit folgenden

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 11 Was bisher verschwiegen wurde Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Type qualifier Typen können mit folgenden

Mehr

Tafelübung zu BS 6. Sicherheit

Tafelübung zu BS 6. Sicherheit Tafelübung zu BS 6. Sicherheit Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2010/bs/

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 2 Arrays und Pointer Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät statische Arrays Deklaration (eindimensional): /* 40

Mehr

Tafelübung zu BSRvS 1 6. Sicherheit

Tafelübung zu BSRvS 1 6. Sicherheit Tafelübung zu BSRvS 1 6. Sicherheit Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/~os/ http://ess.cs.tu-dortmund.de/de/teaching/ss2009/bsrvs1/

Mehr

18 Softwaresicherheit

18 Softwaresicherheit 18 Softwaresicherheit Beispiel: Heartbleed Verö entlicht am 7.4.14: responsible disclosure. TLS heartbeat: Verbindung o en halten, ohne Daten auf Applikationsschicht zu senden. Definiert in RFC 6520 Kann

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 4 Storage classes Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Compilation units Compilierung eines mehrteiligen Programms:

Mehr

Testing for and fixing common security issues

Testing for and fixing common security issues Testing for and fixing common security issues Fatih Kilic, Thomas Kittel [kilic kittel]@sec.in.tum.de Lehrstuhl für Sicherheit in der Informatik / I20 Prof. Dr. Claudia Eckert Technische Universtität München

Mehr

PS Kryptographie und IT-Sicherheit. Thema: Software-Sicherheit. Thomas Loch, Michael Streif 2012

PS Kryptographie und IT-Sicherheit. Thema: Software-Sicherheit. Thomas Loch, Michael Streif 2012 PS Kryptographie und IT-Sicherheit Thema: Software-Sicherheit Thomas Loch, Michael Streif 2012 Malicious / Invalid Input Exploits nutzen Nebeneffekte von ungültigen Benutzereingaben aus, die vom Programmierer

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm

Übungen zu Softwaresysteme I Jürgen Kleinöder Universität Erlangen-Nürnberg Informatik 4, 2004 K-Uebung9.fm K 9. Übung K 9. Übung K-1 Überblick Besprechung 7. Aufgabe (jbuffer) Unix, C und Sicherheit K.1 Mögliche Programmsequenz für eine Passwortabfrage in einem Server- Programm: int main (int argc, char *argv[])

Mehr

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0

GCC 3.x Stack Layout. Auswirkungen auf Stack-basierte Exploit-Techniken. Tobias Klein, 2003 tk@trapkit.de Version 1.0 1 GCC 3.x Stack Layout Auswirkungen auf Stack-basierte Exploit-Techniken Tobias Klein, 2003 tk@trapkit.de Version 1.0 2 Abstract Eine spezielle Eigenschaft des GNU C Compilers (GCC) der Version 3.x wirkt

Mehr

Exploits & Rootkits. Betriebssystemdienste & -administration Seminar. Betriebssysteme und Middleware. Sebastian.Roschke@hpi.uni-potsdam.

Exploits & Rootkits. Betriebssystemdienste & -administration Seminar. Betriebssysteme und Middleware. Sebastian.Roschke@hpi.uni-potsdam. Exploits & Rootkits Betriebssystemdienste & -administration Seminar Betriebssysteme und Middleware Sebastian.Roschke@hpi.uni-potsdam.de Steffen.Ryll@hpi.uni-potsdam.de Steffen Ryll & Sebastian Roschke

Mehr

Angewandte IT-Sicherheit

Angewandte IT-Sicherheit Angewandte IT-Sicherheit Johannes Stüttgen Lehrstuhl für praktische Informatik I 30.11.2010 Lehrstuhl für praktische Informatik I Angewandte IT-Sicherheit 1 / 28 Aufgabe 1 Betrachten sie folgendes Programm:

Mehr

Hacking. InfoPoint 07.12.2005. Jörg Wüthrich

Hacking. InfoPoint 07.12.2005. Jörg Wüthrich Hacking InfoPoint 07.12.2005 Jörg Wüthrich Inhalte Rund um das Thema Hacking Angriffs-Techniken Session Handling Cross Site Scripting (XSS) SQL-Injection Buffer Overflow 07.12.2005 Infopoint - Hacking

Mehr

Übersicht. Race Conditions Buffer Overflows Heap Overflows Exkurs: Stackaufbau bei Intel x86 Exkurs: Shellcode Stack Overflows

Übersicht. Race Conditions Buffer Overflows Heap Overflows Exkurs: Stackaufbau bei Intel x86 Exkurs: Shellcode Stack Overflows Übersicht Race Conditions Buffer Overflows Heap Overflows Exkurs: Stackaufbau bei Intel x86 Exkurs: Shellcode Stack Overflows Integer Overflows Format-String-Angriffe (SQL) Injection Cross Site Scripting

Mehr

IT-Sicherheit Angriffsziele und -methoden Teil 2

IT-Sicherheit Angriffsziele und -methoden Teil 2 Karl Martin Kern IT-Sicherheit Angriffsziele und -methoden Teil 2 http://www.xkcd.com/424/ Buffer Overflows 2 Buffer Overflows Ausnutzen unzureichender Eingabevalidierung Begrenzter Speicherbereich wird

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 6 Cache-freundliche Programmierung (1) Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Quadratische Matrizen Musterlösung

Mehr

Software Security. Andreas Kostecka Alexander Miller Patrick Rappensberger

Software Security. Andreas Kostecka Alexander Miller Patrick Rappensberger Software Security Andreas Kostecka Alexander Miller Patrick Rappensberger Inhalt Buffer Overrruns Integer Overflows Heap-Overflow Attack Format String Attack SQL Injection Buffer Overrruns Was ist 'Buffer

Mehr

Exploits Wie kann das sein?

Exploits Wie kann das sein? Exploits Durch eine Schwachstelle im Programm xyz kann ein Angreifer Schadcode einschleusen. Manchmal reicht es schon irgendwo im Internet auf ein präpariertes Jpg-Bildchen zu klicken und schon holt man

Mehr

Hacking in C (Windows) Reinhard Oertel

Hacking in C (Windows) Reinhard Oertel Hacking in C (Windows) Reinhard Oertel Agenda Einleitung Techniken Hintergrundwissen Buffer-Overflow Zusammenfassung 03.06.11 Hacking in C 2/36 Meldungen 2011 Quelle: Spiegel.de 03.06.11 Hacking in C 3/36

Mehr

Gefahrenreduzierung nach stackbasierten BufferOverflows

Gefahrenreduzierung nach stackbasierten BufferOverflows Gefahrenreduzierung nach stackbasierten s Lars Knösel 22. Dezember 2005 Wichtiger Hinweis Dieses Dokument und die Live-nstration liefern Informationen, mit deren Hilfe es möglich wird, stackbasierte Pufferüberläufe

Mehr

Gliederung Programmiersprachen. Programmiersprachen Einführung in C. Buffer overflows. Basic stack exploit. What are buffer overflows?

Gliederung Programmiersprachen. Programmiersprachen Einführung in C. Buffer overflows. Basic stack exploit. What are buffer overflows? Programmiersprachen Einführung in C Buffer Overflow- und Formatstring-Angriffe Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Buffer Overflow- und Formatstring-Angriffe Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und

Mehr

Anatomie eines Webserver Hacks

Anatomie eines Webserver Hacks Anatomie eines Webserver Hacks Alexander Inführ alex.infuehr@gmx.at René Freingruber r.freingruber@sec-consult.com Agenda Einführung und Zielsetzung Angriff 1: Cross Site Scripting Angriff 2: SQL Injection

Mehr

Software- Schwachstellen

Software- Schwachstellen 2003 Software- Schwachstellen Tobias Klein (tk@cirosec.de) Software-Schwachstellen - Überblick Verschiedene Klassen: Buffer Overflows, Format- String-Schwachstellen, Integer Overflows, XSS,... Schwachstellen

Mehr

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen FAEL-Seminar Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen Prof. Dr. Marc Rennhard Institut für angewandte Informationstechnologie InIT ZHAW Zürcher Hochschule für Angewandte

Mehr

12.5 Sicherer Programmcode

12.5 Sicherer Programmcode 12.5 Sicherer Programmcode Typische Beispiele für unsicheren Code: Pufferüberlauf ungeschützte kritische Abschnitte (im Englischen: software vulnerabilities) SS-12 1 12.5.1 Pufferüberlauf ausschließen!

Mehr

Übungen zur Vorlesung Systemsicherheit

Übungen zur Vorlesung Systemsicherheit Übungen zur Vorlesung Systemsicherheit Address Space Layout Randomization Tilo Müller, Reinhard Tartler, Michael Gernoth Lehrstuhl Informatik 1 + 4 19. Januar 2011 c (Lehrstuhl Informatik 1 + 4) Übungen

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

Mehr

vii Inhalt 0x100 Einführung 1 0x200 Programmierung 7

vii Inhalt 0x100 Einführung 1 0x200 Programmierung 7 vii 0x100 Einführung 1 0x200 Programmierung 7 0x210 Was ist Programmierung?..................................... 8 0x220 Pseudocode................................................ 9 0x230 Kontrollstrukturen.........................................

Mehr

Hello world. Sebastian Dyroff. 21. September 2009

Hello world. Sebastian Dyroff. 21. September 2009 Hello world Sebastian Dyroff 21. September 2009 1 / 35 Inhaltsverzeichnis Organisatorisches Hello World Typen und Operatoren Programmfluss Weitere Konstrukte Nützliche Tipps 2 / 35 Inhalte dieser Veranstaltung

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Advanced Exploiting. tk, tk@trapkit.de IT-DEFENSE 2005

Advanced Exploiting. tk, tk@trapkit.de IT-DEFENSE 2005 Advanced Exploiting tk, tk@trapkit.de IT-DEFENSE 2005 Stand der Dinge Schutzmechanismen werden ausgereifter (Netz/Host) Trend zu mehr Komplexität ( ( CP AI/WI, Parser, ) Logische Konsequenzen für Angreifer:

Mehr

Übungen zu Systemprogrammierung 1 (SP1)

Übungen zu Systemprogrammierung 1 (SP1) Übungen zu Systemprogrammierung 1 (SP1) Ü1-2 Speicherverwaltung Andreas Ziegler, Stefan Reif, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität

Mehr

Teil I Debuggen mit gdb

Teil I Debuggen mit gdb Teil I Debuggen mit gdb Wer kennt das nicht? $./a.out Segmentation fault Was tun dagegen? printf()s in den Code einfügen? Besser (und professioneller): Einen Debugger verwenden Wer kennt das nicht? $./a.out

Mehr

IT-Sicherheit. Sichere Softwareentwicklung

IT-Sicherheit. Sichere Softwareentwicklung IT-Sicherheit Sichere Softwareentwicklung alois.schuette@h-da.de Version: WS2014(967c57d) Alois Schütte 10. Dezember 2014 1 / 69 Inhaltsverzeichnis Sichere Softwareentwicklung ist ein weites Feld. Hier

Mehr

Übungen zu Systemprogrammierung 1 (SP1)

Übungen zu Systemprogrammierung 1 (SP1) Übungen zu Systemprogrammierung 1 (SP1) Ü1-2 Speicherverwaltung Christian Eichler, Andreas Ziegler, Jürgen Kleinöder Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität

Mehr

Web Applications Vulnerabilities

Web Applications Vulnerabilities Bull AG Wien Web Applications Vulnerabilities Philipp Schaumann Dipl. Physiker Bull AG, Wien www.bull.at/security Die Problematik Folie 2 Der Webserver ist das Tor zum Internet auch ein Firewall schützt

Mehr

Hier sollen solche Schwachstellen diskutiert werden und Techniken zu ihrer Vermeidung aufgezeigt

Hier sollen solche Schwachstellen diskutiert werden und Techniken zu ihrer Vermeidung aufgezeigt Buffer Overflows Pufferüberläufe (buffer overflows, buffer overruns) treten auf, wenn an Puffer mit statischen Anzahl von Elementen Werte übergeben werden, ohne dass eine Längenüberprüfung statt findet.

Mehr

Buffer Overflows. Daniel Hepper Irina Krivochtchekova Elyasin Shaladi

Buffer Overflows. Daniel Hepper Irina Krivochtchekova Elyasin Shaladi Buffer Overflows Daniel Hepper Irina Krivochtchekova Elyasin Shaladi 1 Übersicht Was ist ein Buffer Overflow? Wie können Buffer Overflows entstehen? Wie kann man Buffer Overflows ausnutzen? Gegenmaßnahmen:

Mehr

Praktikum Internet-Sicherheit: Aufgabe zu Buffer-Overflow Attacken

Praktikum Internet-Sicherheit: Aufgabe zu Buffer-Overflow Attacken Zürcher Hochschule Winterthur (ZHW) Bericht Projektarbeit 2 Praktikum Internet-Sicherheit: Aufgabe zu Buffer-Overflow Attacken Studiengang Informationstechnologie Studenten: D. Bischoff, P. Gossweiler,

Mehr

Buffer Overflow. Denis Graf, Tim Krämer, Konstantin Schlese. Universität Hamburg Fachbereich Informatik. 6. Januar 2013

Buffer Overflow. Denis Graf, Tim Krämer, Konstantin Schlese. Universität Hamburg Fachbereich Informatik. 6. Januar 2013 Buffer Overflow Denis Graf, Tim Krämer, Konstantin Schlese Universität Hamburg Fachbereich Informatik 6. Januar 2013 Agenda 1. Einführung Allgemeines über Buffer Overflows Historische Angriffe Definition

Mehr

Profiling und Coverage mit GNU und Bare Embedded Systems

Profiling und Coverage mit GNU und Bare Embedded Systems Profiling und Coverage mit GNU und Bare Embedded Systems Life is too short for bad tools! Prof. Erich Styger erich.styger@hslu.ch +41 41 349 33 01 Coverage und Profiling Coverage: Analyse der Testabdeckung

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

Matthias Hanreich - TheGreyKnight

Matthias Hanreich - TheGreyKnight Matthias Hanreich - TheGreyKnight Grundlagen Code Injection Beispiel: Buffer Overflow Gegenmaßnahmen Code Injection Return Oriented Programming (ROP) Gegenmaßnahmen ROP Demonstration CVE-2012-4969 Hands

Mehr

Sicherheit in Rich Internet Applications

Sicherheit in Rich Internet Applications Sicherheit in Rich Internet Applications Florian Kelbert 14.02.2008 Seite 2 Sicherheit in Rich Internet Applications Florian Kelbert 14.02.2008 Inhaltsverzeichnis Grundlagen Ajax und Mashups Adobe Flash-Player

Mehr

Assembler (NASM) Crashkurs von Sönke Schmidt

Assembler (NASM) Crashkurs von Sönke Schmidt Sönke Schmidt (NASM) Crashkurs von Sönke Schmidt Berlin, 4.11.2015 Meine Webseite: http://www.soenke-berlin.de NASM Was ist das? nach Wikipedia: Ein ist ein Programmierwerkzeug, das ein in maschinennaher

Mehr

Einführung zum MS Visual Studio

Einführung zum MS Visual Studio 0 Visual Studio Verzeichnispfade einstellen Stellen Sie nach dem Start von Visual Studio zunächst Ihr Home-Laufwerk, d.h. den Pfad für Ihre Projektverzeichnisse und Dateien ein. Beenden Sie Visual Studio

Mehr

Informatik II Übung 05. Benjamin Hepp 3 April 2017

Informatik II Übung 05. Benjamin Hepp 3 April 2017 Informatik II Übung 05 Benjamin Hepp benjamin.hepp@inf.ethz.ch 3 April 2017 Java package Hierarchie import.. nur noetig um Klassen aus anderen Packeten zu importieren Es kann auch immer der vollstaendige

Mehr

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Grundlagen. Die Komponenten eines C Programms. Das erste Programm Grundlagen 1. Die Komponenten eines C Programms 2. Ein Programm erzeugen und übersetzen 3. Variablen Deklarieren und Werte zuweisen 4. Zahlen eingeben mit der Tastatur 5. Arithmetische Ausdrücke und Berechnungen

Mehr

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen Dr. Marc Rennhard Institut für angewandte Informationstechnologie Zürcher Hochschule Winterthur marc.rennhard@zhwin.ch Angriffspunkt

Mehr

E-/A-Funktionalität nicht Teil der Programmiersprache

E-/A-Funktionalität nicht Teil der Programmiersprache C Ein-/Ausgabe C Ein-/Ausgabe C.1 Überblick E-/A-Funktionalität nicht Teil der Programmiersprache Realisisierung durch "normale" Funktionen Bestandteil der Standard-Funktionsbibliothek einfache Programmierschnittstelle

Mehr

Effizientes Memory Debugging in C/C++

Effizientes Memory Debugging in C/C++ Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

SQL-Injection. Seite 1 / 16

SQL-Injection. Seite 1 / 16 SQL-Injection Seite 1 / 16 Allgemein: SQL (Structured Query Language) Datenbanksprache zur Definition von Datenstrukturen in Datenbanken Bearbeiten und Abfragen von Datensätzen Definition: SQL-Injection

Mehr

Sichere Programmierung in C

Sichere Programmierung in C Sichere Programmierung in C Systemnahe Software ist in vielen Fällen in Besitz von Privilegien und gleichzeitig im Kontakt mit potentiell gefährlichen Nutzern, denen diese Privilegien nicht zustehen. Daher

Mehr

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache 2 Eine einfache Programmiersprache Eine Programmiersprache soll Datenstrukturen anbieten Operationen auf Daten erlauben Kontrollstrukturen zur Ablaufsteuerung bereitstellen Als Beispiel betrachten wir

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

Design and Implementation of a Forensic Documentation Tool for Interactive Command-line Sessions

Design and Implementation of a Forensic Documentation Tool for Interactive Command-line Sessions Design and Implementation of a Forensic Documentation Tool for Interactive Command-line Sessions Abschlussvortrag 15. März 2010 Einsatzgebiet Protokollierung von Terminalsitzungen Im Zuge forensischer

Mehr

Sicheres C Programmieren in Embedded Systemen ARM I (ARM7TMDI [1] ) Wintersemester 2010-2011

Sicheres C Programmieren in Embedded Systemen ARM I (ARM7TMDI [1] ) Wintersemester 2010-2011 Sicheres C in Embedded Systemen ARM I (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies AG

Mehr

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Debugging

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Debugging Grundkurs C++ Debugging Berühmte Software-Bugs 1947: Fehlfunktion des Mark II Relay Calculator aufgrund einer Motte. Grundkurs C++ 6 Berühmte Software-Fehler 1996: Ariane 5 muss 40 Sekunden nach dem Start

Mehr

Hinweise C-Programmierung

Hinweise C-Programmierung Hinweise C-Programmierung Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2016/2017 V. Sieh Hinweise C-Programmierung

Mehr

Sichere Programmierung in C 296

Sichere Programmierung in C 296 Sichere Programmierung in C 296 Systemnahe Software ist in vielen Fällen in Besitz von Privilegien und gleichzeitig im Kontakt mit potentiell gefährlichen Nutzern, denen diese Privilegien nicht zustehen.

Mehr

File I/O. Persistieren von Daten. Gastvorlesung Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de

File I/O. Persistieren von Daten. Gastvorlesung Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de File I/O, Ralph Erdt, erdt (bei) informatik.fh-wiesbaden.de Seite 1 File I/O Persistieren von Daten Gastvorlesung - 18.01.10 Ralph Erdt erdt (bei) informatik.fh-wiesbaden.de File I/O, Ralph Erdt, erdt

Mehr

U23 Assembler Workshop

U23 Assembler Workshop Ike e.v. http://koeln.ccc.de 2016-11-05 Überblick 1 CPU, Assembler Überblick x86 x86 Assembler 2 RAM, Stack, Calling Conventions Stack Calling Conventions Stackframes 3 Branches Jumps 4 Speicher, C-Interface

Mehr

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Sicheres C in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies

Mehr

Material zum Praktikumsversuch Buffer Overflows

Material zum Praktikumsversuch Buffer Overflows Material zum Praktikumsversuch Buffer Overflows Betreut von: Dipl. Ing. Sebastian Gajek und Tim Werthmann Stand: 22. April 2008 Lehrstuhl für Netz- und Datensicherheit Ruhr-Universität Bochum Inhaltsverzeichnis

Mehr

Fachhochschule Frankfurt am Main Fachbereich 2: Informatik WS 2008/2009. IT-Security. Teil 10: Hacking Dr. Erwin Hoffmann

Fachhochschule Frankfurt am Main Fachbereich 2: Informatik WS 2008/2009. IT-Security. Teil 10: Hacking Dr. Erwin Hoffmann Fachhochschule Frankfurt am Main Fachbereich 2: Informatik WS 2008/2009 IT-Security Teil 10: Hacking Dr. Erwin Hoffmann E-Mail: it-security@fehcom.de https://www.fehcom.net/itsec/ Was ist Hacking? Hacking

Mehr

Vorkurs Informatik WiSe 17/18

Vorkurs Informatik WiSe 17/18 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Nicole Naczk, 10.10.2017 Technische Universität Braunschweig, IPS Überblick Einleitung Türme von Hanoi Rekursion Beispiele 10.10.2017 Dr. Werner Struckmann

Mehr

Heute schon gehackt (worden)?

Heute schon gehackt (worden)? Spiq: Heute schon gehackt (worden)? 1. März 2012 Dr. Steffen NORBERT, CISA, OSCP & OSCE (steffen.norbert@iseconsult.de) 2 von 30 Die unvermeidliche Folie über den Vortragenden Ich bin die Firma Iseconsult,

Mehr

JMangler. Frithjof Kurtz. Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1

JMangler. Frithjof Kurtz. Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1 JMangler Frithjof Kurtz Universität Bonn, Seminar Softw aretechnologie WS 03/04, Jmangler Frithjof Kurtz 1 JMangler Vortragsgliederung Motivation Java Grundlagen JMangler Grundlagen Transformationen Algorithmen

Mehr

Vorkurs Informatik WiSe 16/17

Vorkurs Informatik WiSe 16/17 Java Rekursion Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 11.10.2016 Technische Universität Braunschweig, IPS Überblick Einleitung Beispiele 11.10.2016 Dr. Werner Struckmann / Stephan Mielke,

Mehr

Datum. esp. Systemnahe Aspekte der Softwaresicherheit [MM-104] Zertifikatsprogramm. pop ecx pop edx ret. mov [edx], ecx ret. pop edx ret.

Datum. esp. Systemnahe Aspekte der Softwaresicherheit [MM-104] Zertifikatsprogramm. pop ecx pop edx ret. mov [edx], ecx ret. pop edx ret. pop ecx pop edx add eax,[edx] push edi mov [edx], ecx pop edi pop edx Datum esp Zertifikatsprogramm Systemnahe Aspekte der Softwaresicherheit [MM-104] Autoren: Dr. rer. nat. Werner Massonne Prof. Dr.-Ing.

Mehr

Programmiersprachen Einführung in C

Programmiersprachen Einführung in C Programmiersprachen Einführung in C Teil 10: Arbeiten mit Prof. Dr. Gliederung Programmiersprachen 1. Von der Maschinensprache zu C 2. Die Struktur von C-Programmen 3. Variable und Datentypen in C 4. Bildschirm

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009 Einführung Übungen zur Vorlesung Virtuelle Maschinen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SoSe 2009 Übungsaufgaben 1 Entwickeln

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Informationstechnik & System-Management SQL INJECTION. Selbstgemachte Sicherheitslücken. SQL-Injection ITSB2006 Michael Donabaum

Informationstechnik & System-Management SQL INJECTION. Selbstgemachte Sicherheitslücken. SQL-Injection ITSB2006 Michael Donabaum SQL INJECTION Selbstgemachte Sicherheitslücken Beschreibung SQL-Injection SQL-Einschleusung Ausnutzen von Sicherheitslücken in Zusammenspiel mit SQL-Datenbanken Mangelnde Maskierung von Metazeichen \ ;

Mehr

Abstrakte C-Maschine und Stack

Abstrakte C-Maschine und Stack Abstrakte C-Maschine und Stack Julian Tobergte Proseminar C- Grundlagen und Konzepte, 2013 2013-06-21 1 / 25 Gliederung 1 Abstrakte Maschine 2 Stack 3 in C 4 Optional 5 Zusammenfassung 6 Quellen 2 / 25

Mehr

Switching. Übung 2 System Management. 2.1 Szenario

Switching. Übung 2 System Management. 2.1 Szenario Übung 2 System Management 2.1 Szenario In der folgenden Übung werden Sie Ihre Konfiguration sichern, löschen und wieder herstellen. Den Switch werden Sie auf die neueste Firmware updaten und die Funktion

Mehr

Arrays (Felder/Vektoren)

Arrays (Felder/Vektoren) Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff

Mehr

Aktuelle Sicherheitsprobleme im Internet

Aktuelle Sicherheitsprobleme im Internet Herbst 2014 Aktuelle Sicherheitsprobleme im Internet Wirtschaftsinformatik: 5. Semester Dozenten: Rainer Telesko / Martin Hüsler Fachhochschule Nordwestschweiz FHNW / Rainer Telesko - Martin Hüsler 1 Inhalt

Mehr

Grundpraktikum Netz- und Datensicherheit. Thema: Buffer Overflow Angriffe, Teil 2

Grundpraktikum Netz- und Datensicherheit. Thema: Buffer Overflow Angriffe, Teil 2 Grundpraktikum Netz- und Datensicherheit Thema: Buffer Overflow Angriffe, Teil 2 Lehrstuhl für Netz- und Datensicherheit Ruhr-Universität Bochum Versuchdurchführung: Raum ID 2/168 Betreuung: Florian Feldmann

Mehr

Maschinencode Dateiformat und Stackframes

Maschinencode Dateiformat und Stackframes Maschinencode Dateiformat und Stackframes Proseminar C-Programmierung - Grundlagen und Konzepte Julian M. Kunkel julian.martin.kunkel@informatik.uni-hamburg.de Wissenschaftliches Rechnen Fachbereich Informatik

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

XSS for fun and profit

XSS for fun and profit 5. Chemnitzer Linux-Tag 1.-2.- März 2003 XSS for fun and profit Theorie und Praxis von Cross Site Scripting (XSS) Sicherheitslücken, Diebstahl von Cookies, Ausführen von Scripten auf fremden Webservern,

Mehr

1.4. Funktionen. Objektorientierte Programmierung mit C++

1.4. Funktionen. Objektorientierte Programmierung mit C++ mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -

Mehr

Ferienakademie 2009. Programmierkonzepte für Multi-Core Rechner. Tools: Profiler

Ferienakademie 2009. Programmierkonzepte für Multi-Core Rechner. Tools: Profiler Ferienakademie 2009 Programmierkonzepte für Multi-Core Rechner Tools: Profiler Gliederung Einführung Aufgaben eines Profilers Techniken von Profilern Code Instrumentation Instruction Simulation Hardware

Mehr

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013

x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 x86 Assembler Praktische Einführung Sebastian Lackner Michael Müller 3. Juni 2013 1 / 53 Inhaltsverzeichnis 1 Einführung 2 Assembler Syntax, Register und Flags 3 Hauptspeicher 4 Stack 5 Assemblerbefehle

Mehr

Eine Mini-Shell als Literate Program

Eine Mini-Shell als Literate Program Eine Mini-Shell als Literate Program Hans-Georg Eßer 16.10.2013 Inhaltsverzeichnis 1 Eine Mini-Shell 1 1.1 Einen Befehl parsen......................... 2 1.2 Was tun mit dem Kommando?...................

Mehr

Hacking Linux Proseminar Network Hacking und Abwehr

Hacking Linux Proseminar Network Hacking und Abwehr Lehrstuhl Netzarchitekturen und Netzdienste Institut für Informatik Technische Universität München Hacking Linux Proseminar Network Hacking und Abwehr Vortragender: Marek Kubica Betreuer: Holger Kinkelin

Mehr