Register for your free account! | Forgot your password?

You last visited: Today at 17:07

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Fixx] Wipe Bugg

Discussion on [Fixx] Wipe Bugg within the Flyff PServer Guides & Releases forum part of the Flyff Private Server category.

Reply
 
Old   #1
 
elite*gold: 1
Join Date: May 2010
Posts: 676
Received Thanks: 223
[Fixx] Wipe Bugg

Hey,
habe einen SQL-Injection Bug gefunden , dieser ist in diesen Funktionen:
PHP Code:
LPTSTR CAr::ReadStringLPTSTR lpsz 
Einfach meine Funktion durch eure Ersetzten.
PHP Code:
LPTSTR CAr::ReadStringLPTSTR lpsz )
{
    
int nLen;
    *
this >> nLen;
    
Readlpszsizeof(TCHAR) * nLen );
    for( 
int i=0;i<nLen;i++ )
#ifdef __CLIENT
        
if( lpsz[i] == '\x60' )
            
lpsz[i] = '\x27';
#else // __CLIENT
        
if( lpsz[i] == '\x27' )
            
lpsz[i] = '\x60';
#endif // __CLIENT
    
lpsz[nLen] = '\0';
    return 
lpsz;
}

LPTSTR CAr::ReadStringLPTSTR lpszint nBufSize )
{
    
int nLen;
    *
this >> nLen;

    
int nReadable    nBufSize 1;
    if( 
nLen nReadable || nLen )
    {
        
memset( (void*)lpsz0nBufSize );
        
m_lpBufCur    m_lpBufMax;
        return 
lpsz;
    }
    else
    {
        
Readlpszsizeof(TCHAR) * nLen );
        for( 
int i=0;i<nLen;i++ )
#ifdef __CLIENT
            
if( lpsz[i] == '\x60' )
                
lpsz[i] = '\x27';
#else // __CLIENT
            
if( lpsz[i] == '\x27' )
                
lpsz[i] = '\x60';
#endif // __CLIENT

        
lpsz[nLen] = '\0';
        return 
lpsz;
    }

Dieser Fixx ist nur Clientsided.
Jetzt sollte es nicht mehr möglich sein , durch den Client die DB zu Wipen .
Bzw. durch irgendwelche SQL-Injections Verfahren versuchen die DB zu schrotten .

Wo kann man bei dem Client SQL-INJECTION anwenden?
A:Ganz einfach , wo man seine ACCDATEN + PW eingibt.

Lg
Razzer'
Razzer' is offline  
Thanks
1 User
Old 05/13/2012, 12:01   #2
 
Ultimate™'s Avatar
 
elite*gold: 40
Join Date: Aug 2011
Posts: 453
Received Thanks: 281
mehr infos dazu ?
ich würde nichts einbauen wo keine richtige information bei ist wäre mir zu doof
Ultimate™ is offline  
Old 05/13/2012, 12:02   #3
 
elite*gold: 1
Join Date: May 2010
Posts: 676
Received Thanks: 223
Habe was drunter geschrieben.


Lg
Razzer
Razzer' is offline  
Thanks
1 User
Old 05/13/2012, 12:42   #4
 
elite*gold: 0
Join Date: May 2009
Posts: 122
Received Thanks: 160
Außerdem ist fraglich, wie nötig dieser Fix ist...
Was er macht, ist nämlich einfach die Anführungszeichen('), die gesendet werden in escapezeichen (\) umzuwandeln...
ist eig ziemlich unnötig und wenn man chattet stört es sogar
unnötig ist es deswegen, weil die logindaten erstmal an den certifier gesendet werden, wo sie dann in einer funktion verarbeitet werden, wo unter anderem das hier drin steht:
Code:
    if( pszAccount[0] == '\0' || StringFind( pszAccount, '\'' ) >= 0 || StringFind( pszPwd, '\'' ) >= 0 )
    {
        DestroyPlayer( dpid );
        return;
    }
von daher würde die Injection erst gar nicht zum DB-Server kommen^^
Krustenkäse is offline  
Thanks
2 Users
Old 05/13/2012, 13:00   #5
 
elite*gold: 0
Join Date: Jan 2009
Posts: 96
Received Thanks: 10
wenn du sachen wie z.b. ';delete character_01_tbl;-- eingibst kommt da dieses fenster welches dir sagt das das password/account zu lang ist.
Xefiroid is offline  
Old 05/13/2012, 13:23   #6
 
paddelx3's Avatar
 
elite*gold: 0
Join Date: Feb 2012
Posts: 202
Received Thanks: 133
Quote:
Originally Posted by Xefiroid View Post
wenn du sachen wie z.b. ';delete character_01_tbl;-- eingibst kommt da dieses fenster welches dir sagt das das password/account zu lang ist.
es gibt noch unzählige andere SQL Injectionen.
Ansonsten eig nen netter Release, doch habe immer noch meine zweifel, dass es diese Lücke auch wirklich gibt. ;O

mfg
paddelx3 is offline  
Old 05/14/2012, 23:29   #7
 
Caseツ's Avatar
 
elite*gold: 80
Join Date: May 2012
Posts: 221
Received Thanks: 73
Netter Release, Der wos gebrauchen kann soll es benutzten !

Werde es zwar nicht benutzten

hast dir aber ein Thanks für die müe vedient

MFG

TheBlackWater
Caseツ is offline  
Thanks
1 User
Old 05/16/2012, 09:43   #8
 
xMootie's Avatar
 
elite*gold: 0
Join Date: Feb 2012
Posts: 208
Received Thanks: 486
Here's a less obtrusive version.

Code:
LPTSTR CAr::ReadString( LPTSTR lpsz )
{
	int nLen;
	*this >> nLen;
	Read( lpsz, sizeof(TCHAR) * nLen );
#if defined(__CLIENT) || defined(__DBSERVER)
	for( int i=0;i<nLen;i++ )
#ifdef __CLIENT
		if( lpsz[i] == '\x60' )
			lpsz[i] = '\x27';
#else // __CLIENT
#ifdef __DBSERVER
		if( lpsz[i] == '\x27' )
			lpsz[i] = '\x60';
#endif // __DBSERVER
#endif // __CLIENT
#endif // defined(__CLIENT) || defined(__DBSERVER)
	lpsz[nLen] = '\0';
	return lpsz;
}

LPTSTR CAr::ReadString( LPTSTR lpsz, int nBufSize )
{
	int nLen;
	*this >> nLen;

	int nReadable	= nBufSize - 1;
	if( nLen > nReadable || nLen < 0 )
	{
		memset( (void*)lpsz, 0, nBufSize );
		m_lpBufCur	= m_lpBufMax;
		return lpsz;
	}
	else
	{
		Read( lpsz, sizeof(TCHAR) * nLen );
#if defined(__CLIENT) || defined(__DBSERVER)
		for( int i=0;i<nLen;i++ )
#ifdef __CLIENT
			if( lpsz[i] == '\x60' )
				lpsz[i] = '\x27';
#else // __CLIENT
#ifdef __DBSERVER
			if( lpsz[i] == '\x27' )
				lpsz[i] = '\x60';
#endif // __DBSERVER
#endif // __CLIENT
#endif // defined(__CLIENT) || defined(__DBSERVER)

		lpsz[nLen] = '\0';
		return lpsz;
	}
}
This originally was my fix that I told Insanity about(after being threatened with DDoS). It's not very good for performance, but it is secure and a decent quick fix. The long, but efficient, fix is to convert each input variable to hexadecimal format to escape the single quote entirely.

Here's an example.

Standard method of variable formatting:
Quote:
SELECT [password] FROM [ACCOUNT_TBL] WHERE account = '';shutdown;--'
Hexadecimal formatting:
Quote:
SELECT [password] FROM [ACCOUNT_TBL] WHERE account = 0x273b73687574646f776e3b2d2d
Try it yourself, it works very nicely and is useful for data that may contain single quotes such as mail etc.
xMootie is offline  
Thanks
10 Users
Reply

Tags
fixx, fixx wipe bug, wipe




All times are GMT +1. The time now is 17:08.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.