TU Wien:Introduction to Security VU (Maffei)/Prüfung 2018-01-11

Aus VoWi
Zur Navigation springen Zur Suche springen

Multiple Choice (24Pkt)[Bearbeiten | Quelltext bearbeiten]

Welche Mechanismen gewährleisten Integrity?

  • MAC
  • Digitale Signatur
  • Public Key Crypto
  • Symmetrische Verschlüsselung


Es sind zwei Cookies mit secure gegeben und dann wird gefragt welche Website das Cookie lesen kann.


Wann gilt der Prozess als sicher(und ist möglich), bei sicherem Passwort (p) und sicherer Hashfunktion (h()) beim Leak der Datenbank (vorausgesetzt der Hash steht nicht in einer Hashtabelle)

  • h(p) wird übermittelt und h(p) wird in der Datenbank gespeichert
  • p wird übermittelt und h(p) wird gespeichert
  • h(p) wird übermittelt und p gespeichert
  • p wird übermittelt und p wird gespeichert


Was sind Maßnahmen gegen CSRF?

  • CSRF-Token in Forms
  • Refferer Header validieren
  • Custom HTTP-Header setzen
  • klassische Cookie Authentifizierung

Welche Attacken verhindert ein Stack Canary der zwischen lokalen Variablen und Return Address Pointer (?) liegt?

Was/Welche Attacken verhindert DEP (Data Execution Prevention)?

Was sind wirkungsvolle Maßnahmen um SQL Injections zu verhindern?

  • Erkennen ob ein <script>-Tag verwendet wird reicht
  • Whitelisten von erlaubten Zeichen
  • Prepared Statements
  • Input validieren(?)

Ein JS-Code auf der Seite a.com/index.html kann folgendes tun: (was erlaubt Same Origin Policy)

  • Die Seite a.com/irgendwas.html in einem anderen Tab öffnen
  • Die Seite a.com/irgendwas.html in einem andrenTab öffnen und das DOM bearbeiten
  • Die Seite b.com/irgendwas.html in einem anderen Tab öffnen
  • Die Seite b.com/irgendwas.html in einem andrenTab öffnen und das DOM bearbeiten

One-Time-Pad (18Pkt)[Bearbeiten | Quelltext bearbeiten]

  1. Die Nachrichten m und m’ werden mit einem OTP verschlüsselt. Beide Nachrichten werden mit dem gleichen Key k verschlüsselt. Was kann ein Angreifer der die verschlüsselten Nachrichten liest und weiss, dass sie mit dem gleichen Schlüssel verschlüsselt wurden über die Nachrichten m und m’ erfahren?
  2. Eine Nachricht m wird mit einem Key k verschlüsselt. Der Angreifer kennt die verschlüsselte Nachricht c und die unverschlüsselte Nachricht m. Was kann der Angreifer über den Key k erfahren?
  3. Eine Nachricht m soll mit dem Key k verschlüsselt werden. Die Nachricht ist jedoch zwei Bits zu kurz für den Key. Daher wird folgendermaßen Verschlüsselt: c = OTP(01 || m, k). || steht in diesem Fall für bitweises Zusammenfügen.

Cross-Site-Scripting[Bearbeiten | Quelltext bearbeiten]

Es ist eine Website mit folgenden Quellcode gegeben:

<html> Irgendein Text: <?php echo $_GET[“argument”]; ?></html>
  1. Was ist die Sicherheitslücke?
  2. Generiere eine URL die das Cookie ausliest und an eine böse Website schickt. (Pseudocode reicht)
  3. Warum darf dieser Code auf die Cookies zugreifen?

Buffer Overflow[Bearbeiten | Quelltext bearbeiten]

Es ist ein C-Code gegeben mit einer Buffer Overflow-Sicherheitslücke. An verschiedenen Stellen des Codes werden mit printf Meldungen ausgeben. Sowas wie “Checkpoint 1”.

  1. Was ist die Sicherheitslücke?
  2. Generiere einen Programmaufruf mit dem die Sicherheitslücke ausgenutzt werden kann um eine Shell zu starten.
  3. Beschreibe wie jede von diesen Sicherheitsmechanismen diesen Angriff verhindern hätte können.
    • Stack Canary
    • Data Execution Prevention
    • Address Space Layout Randomization

SQL-Injection[Bearbeiten | Quelltext bearbeiten]

Gegeben war folgender Code:

$var_username = $_GET['username'];
$var_password = $_GET['password'];
$sql = "UPDATE users SET  = '" . $var_passwort . "' WHERE username = '"+var_username+"'";
mysql_query(sql);
  1. Welche Werte muss username und password annehmen damit die Passwörter aller User auf "hacked" gesetzt werden?
  2. Wie sieht das ausgeführte SQL-Statement aus?
  3. Wie würde der Code mit Prepared Statements aussehen? Es werden keine Punkte abgezogen wenn man nicht genau weiss wie die Funktionen für das Verwenden von Prepared Statements in PHP heissen.
  4. Was sind Prepared Statements und wie verhindern sie SQL-Injections?