Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Kal Online
You last visited: Today at 01:37

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

Advertisement



<<KalHackIt für P-Server ummodellieren>>

Discussion on <<KalHackIt für P-Server ummodellieren>> within the Kal Online forum part of the MMORPGs category.

Reply
 
Old 03/20/2007, 12:47   #16
 
niKe's Avatar
 
elite*gold: 0
Join Date: Feb 2006
Posts: 1,099
Received Thanks: 163
denke weil der launcher vom KHI die originalen server files lädt und nicht die vom pServer. mal davon abgesehn sind manche pServer bestimmt sicherer als die von inix.
niKe is offline  
Old 03/20/2007, 12:48   #17
 
elite*gold: 0
Join Date: Mar 2007
Posts: 541
Received Thanks: 41
nen pserver würde ich sagen hat einfach besseres Hshield und man muss es nicht über KalOnline.exe starten
cRe4TiNe is offline  
Old 03/20/2007, 17:11   #18
 
elite*gold: 0
Join Date: Feb 2007
Posts: 45
Received Thanks: 0
wie arm....... ein P-Server besseres Hsield INiX ist schon ein bisschen schlecht? xD oder?^^^^^^
HansGeorg is offline  
Old 03/20/2007, 17:21   #19
 
rEdoX's Avatar
 
elite*gold: 20
Join Date: Jan 2006
Posts: 539
Received Thanks: 228
Weil pserver einen anderen client verwendet als der int server -> andere offsets.
rEdoX is offline  
Old 03/20/2007, 17:29   #20
 
elite*gold: 0
Join Date: Mar 2007
Posts: 19
Received Thanks: 0
ah danke redox

+karma
Gnubbel is offline  
Old 03/20/2007, 17:36   #21
 
elite*gold: 0
Join Date: Feb 2007
Posts: 45
Received Thanks: 0
von mir auch
HansGeorg is offline  
Old 03/20/2007, 19:10   #22
 
elite*gold: 0
Join Date: Mar 2007
Posts: 6
Received Thanks: 0
omg, gebt doch mal bei wikipedia sql injection ein, lest tuts drüber usw.. so schwer is des doch nich.. :P
ViRuSx317 is offline  
Old 03/21/2007, 19:33   #23
 
elite*gold: 0
Join Date: Mar 2007
Posts: 3
Received Thanks: 0
gibts das auch irgendwo als zusammenfassung? oder kann einfach einer der ahnung hat sagen wie ich einen ordentlcihen hack in kinenbi rein kriebe?
one hit oder geonhack am besten
Hundetier is offline  
Old 03/21/2007, 20:25   #24
 
xkillabier's Avatar
 
elite*gold: 12
Join Date: Dec 2006
Posts: 1,223
Received Thanks: 102
[QUOTE]<.< geonhack musste dir selber machen ^^

** bloodx wieso ignorierst du mich? XD

<hr>Append on Mar 21 2007, 20:32<hr> --->SQL-Injektion
[QUOTE]Auftreten [Bearbeiten]

Für SQL-Injektionen nutzbare Fehler treten auf, wenn eine Applikation SQL-Abfragen an den Server weiterreicht, ohne die vom Benutzer eingegebenen Parameter ausreichend zu prüfen und etwaig enthaltene Funktionszeichen zu maskieren, um ihnen so die Sonderfunktion zu nehmen. Funktionszeichen in SQL sind zum Beispiel der umgekehrte Schrägstrich, der Apostroph oder das Semikolon. Diese Zeichen können durch Voranstellen des Maskierungszeichens, einem umgekehrten Schrägstrich, als Text gekennzeichnet werden. Dieser Vorgang wird auch ?Escapen? genannt. Ein Beispiel: Die vom Benutzer eingegebene Zeichenfolge ?Mit '&#092;n' wird ein Zeilenumbruch erzeugt? wird korrekt maskiert als ?Mit &#092;'&#092;&#092;n&#092;' wird ein Zeilenumbruch erzeugt? an die Datenbank übergeben. Außerdem muss sichergestellt werden, dass Datentypen eingehalten werden; so dürfen zum Beispiel Zahlen nur aus Ziffern und dem Dezimaltrennzeichen bestehen.

Oft zu finden sind solche Lücken in CGI-Scripten und auch in Programmen, die Daten wie Webseiteninhalte oder E-Mails in SQL-Datenbanken eintragen. Nimmt ein solches Programm die Maskierung nicht korrekt vor, kann ein Angreifer durch den gezielten Einsatz von Funktionszeichen weitere SQL-Anforderungen einschleusen oder die Abfragen so manipulieren, dass zusätzliche Daten ausgegeben werden. In einigen Fällen besteht auch die Möglichkeit, Zugriff auf eine Shell zu erhalten, was im Regelfall die Möglichkeit zur Kompromittierung des gesamten Servers bedeutet.

Stored Procedures sind in diesem Zusammenhang sicherer. Dabei werden die Benutzereingaben in einem Programm an die Stored Procedures übergeben. Erst dort wird die SQL-Abfrage erzeugt und ausgeführt, wodurch die Injektion weiterer SQL-Befehle in Benutzereingaben verhindert wird.
Quote:
Veränderung von Daten

Auf einem Webserver findet sich das Script find.cgi zum Anzeigen von Artikeln. Das Script akzeptiert den Parameter ?ID?, welcher später Bestandteil des SQL-Befehls wird. Folgende Tabelle soll dies illustrieren:
Erwarteter Aufruf
Aufruf
Erzeugtes SQL SELECT author, subjekt, text FROM artikel WHERE ID=42
SQL-Injektion
Aufruf
Erzeugtes SQL SELECT author, subjekt, text FROM artikel WHERE ID=42; UPDATE USER SET TYPE="admin" WHERE ID=23

Wie man erkennen kann, wird dem Programm ein zweiter SQL-Befehl untergeschoben, der die Benutzertabelle modifiziert.
Das Verbinden zweier Anweisungen in einer Abfrage wird aber meistens unterbunden!

Datenbank-Server verändern

Auf einem Webserver findet sich das Script search.aspx zum Suchen nach Webseiten. Das Script akzeptiert den Parameter ?keyword?, welcher später Bestandteil des SQL-Befehls wird. Folgende Tabelle soll dies illustrieren:
Erwarteter Aufruf
Aufruf
Erzeugtes SQL SELECT url, title FROM myindex WHERE keyword LIKE '%sql%'
SQL-Injektion
Aufruf
Erzeugtes SQL SELECT url, title FROM myindex WHERE keyword LIKE '%sql' ;GO EXEC cmdshell('format C') --%'

Hier wird der eigentlichen Abfrage ein weiterer Befehl angehängt. Die zwei Bindestriche (--) kommentieren das Hochkomma als Überbleibsel der eigentlichen Anfrage aus. Der Befehl ermöglicht das Formatieren der Festplatte, aber auch Downloads oder Ähnliches lassen sich dadurch erzeugen (am Beispiel Microsoft SQL Server).

Ausspähen von Daten

Auf manchen SQL-Implementationen ist die UNION-Klausel verfügbar. Diese erlaubt es, mehrere SELECTs gleichzeitig abzusetzen, die dann eine gemeinsame Ergebnismenge zurückliefern. Durch eine geschickt untergeschobene UNION-Klausel kann man beliebige Tabellen und Systemvariablen auslesen.
Erwarteter Aufruf
Aufruf
Erzeugtes SQL SELECT author, subjekt, text FROM artikel WHERE ID=42
SQL-Injektion
Aufruf
Erzeugtes SQL SELECT author, subjekt, text FROM artikel WHERE ID=42 UNION SELECT login, password, 'x' FROM user

Das ?x? beim UNION SELECT ist nötig, weil alle mit UNION verknüpften SELECTs die gleiche Anzahl von Spalten haben müssen. Der Angreifer muss also wissen, wie viele Spalten die ursprüngliche Abfrage hat.

Ist der Datenbankserver fehlerhaft konfiguriert und hat beispielsweise der Benutzer, der aktuell mit der Datenbank verbunden ist und über den die SQL-Injektion abgesetzt werden soll, Zugriff auf Systemdatenbanken, so kann der Angreifer über eine einfache SQL-Syntax wie Systemdatenbank.SystemtabelleMitTabellenAuflistung auf die Systemtabellen zugreifen und sämtliche Tabellen einer bestimmten Datenbank auslesen, wodurch er wichtige Informationen erhält, um weitere Angriffe durchzuführen und tiefer in das System einzudringen.

Einschleusen von beliebigem Code

Eine weniger bekannte Variante stellt auch gleichzeitig die potenziell gefährlichste dar. Wenn der Datenbankserver die Kommandos SELECT ... INTO OUTFILE beziehungsweise SELECT ... INTO DUMPFILE unterstützt, können diese Kommandos dazu benutzt werden, Dateien auf dem Dateisystem des Datenbankserver abzulegen. Theoretisch ist es dadurch möglich, falls das Bibliotheksverzeichnis des Betriebssystems oder des Datenbankservers für denselben beschreibbar ist (wenn dieser zum Beispiel als root läuft), einen beliebigen Code auf dem System auszuführen.

Zeitbasierte Angriffe

Wenn der Datenbankserver Benchmark-Funktionen unterstützt, kann der Angreifer diese dazu nutzen, um Informationen über die Datenbankstruktur in Erfahrung zu bringen. In Verbindung mit dem if-Konstrukt sind der Kreativität des Angreifers kaum Grenzen gesetzt.

Das folgende Beispiel benötigt auf einem MySQL-Datenbankserver mehrere Sekunden, falls der gegenwärtige User root ist:

SELECT if( user() like 'root@%', benchmark(100000,sha1('test')), 'false');

Erlangen von Administratorrechten

Bei bestimmten Datenbankservern, wie dem Microsoft SQL Server, werden Stored Procedures mitgeliefert, die unter anderem dazu missbraucht werden können, einen neuen Benutzer auf dem angegriffenen System anzulegen.

Diese Möglichkeit kann dazu benutzt werden, um zum Beispiel eine Shell auf dem angegriffenen Rechner zu starten.

Blinde SQL-Injektion

Von einer blinden SQL-Injektion spricht man, wenn ein Server keine deskriptive Fehlermeldung zurückliefert, aus der hervorgeht, ob der übergebene Query erfolgreich ausgeführt wurde oder nicht. Anhand verschiedenster Kleinigkeiten wie etwa leicht unterschiedlicher Fehlermeldungen oder auch charakteristisch unterschiedlicher Antwortzeiten des Servers kann ein versierter Angreifer häufig dennoch feststellen, ob ein Query erfolgreich war oder einen Fehler zurückmeldet.

Gegenmaßnahmen
Generell ist die Webanwendung für die korrekte Prüfung der Eingabedaten verantwortlich, zum Beispiel das eine Postleitzahl nur Ziffern enthält und ein Name keine Sonderzeichen. Geeignete Schutzmaßnahmen sind in erster Linie dort zu implementieren.

Hat ein Betreiber eines Webservers keine Kontrolle über die Anwendungen kann durch Einsatz von Web Application Firewalls (WAF) zumindest teilweise verhindert werden, dass SQL-Injektion-Schwachstellen ausgenutzt werden können.

Es ist nicht schwer, bestehende Programme so umzubauen, dass SQL-Injektionen nicht mehr möglich sind. Das hauptsächliche Problem der meisten Programmierer ist fehlendes Wissen über diese Art von Angriffen. Nachfolgend einige Beispiele, um die Angriffe abzuwehren.

Die Verwendung von Prepared Statements ist Stored Procedures vorzuziehen. Außerdem sollten nicht benötigte Stored Procedures aus dem Datenbanksystem entfernt werden. Es sollte auch geprüft werden, ob der Einsatz unter einem Datenbank-Account mit eingeschränkten Zugriffsrechten möglich ist, was in der Regel der Fall sein dürfte.

VisualBasic (ADODB)

In VisualBasic gibt es einfache sog. Command-Objekte, mit denen diese Probleme vermieden werden können.

Anstatt

cn.Execute "SELECT spalte1 FROM tabelle WHERE spalte2 = '"
& spalte2Wert & "'"

sollte Folgendes verwendet werden:

Dim cmd As ADODB.Command, rs as ADODB.Recordset
With cmd
Set .ActiveConnection = cn
Set .CommandType = adCmdText
Set .CommandString = "SELECT spalte1 FROM tabelle WHERE spalte2=paramSp2"
.Parameters.Append .CreateParameter("paramSp2", adVarChar, adParamInput, 25, spalte2Wert) '25 ist die max. länge
Set rs = .Execute
End With

Microsoft .NET Framework (ADO.NET)

Im .NET Framework gibt es einfache Objekte, mit denen man solche Probleme umgeht.

Anstatt

SqlCommand cmd = new SqlCommand("SELECT spalte1 FROM tabelle WHERE spalte2 = '"
+ spalte2Wert + "';");

sollte Folgendes verwendet werden:

string spalte2Wert = "Mein Wert";
SqlCommand cmd = new SqlCommand("SELECT spalte1 FROM tabelle WHERE spalte2 = @spalte2Wert;");
cmd.Parameters.AddWithValue("spalte2Wert", spalte2Wert);

Java [Bearbeiten]

Eine SQL-Injektion kann leicht durch bereits vorhandene Funktion verhindert werden. In Java wird zu diesem Zweck die PreparedStatement-Klasse verwendet.

Anstatt

Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery("SELECT spalte1 FROM tabelle WHERE spalte2 = '"
+ spalte2Wert + "';");

sollte Folgendes verwendet werden:

PreparedStatement pstmt = con.prepareStatement("SELECT spalte1 FROM tabelle WHERE spalte2 = ?");
pstmt.setString(1, spalte2Wert);
ResultSet rset = pstmt.executeQuery();

Der Mehraufwand an Schreibarbeit durch die Verwendung der PreparedStatement-Klasse zahlt sich jedoch durch einen positiven Performancegewinn aus, da durch die Angaben bereits im Voraus eine Optimierung durchgeführt werden kann.

PHP

In PHP wird zu diesem Zweck die Funktion mysql_real_escape_string() verwendet, die jedoch lediglich für eine MySQL-Verbindung benutzbar ist. Wird eine andere Datenbank benutzt, so steht diese Funktion nicht zur Verfügung, jedoch hält PHP für fast jede Datenbank eine solche Escape-Funktion bereit. Die PHP-Oracle-Funktionen beispielsweise besitzen keine Escape-Funktion, hingegen können Prepared Statements verwendet werden, was bei der beliebten MySQL-Datenbank erst mit den Funktionen von MySQLi möglich geworden ist.

Anstatt

&#036;abfrage = "SELECT spalte1 FROM tabelle WHERE spalte2 = '".&#036;_POST['spalte2Wert']."'";
&#036;query = mysql_query(&#036;abfrage) or die("Datenbankabfrage ist fehlgeschlagen!");

sollte Folgendes verwendet werden:

&#036;abfrage = "SELECT spalte1 FROM tabelle WHERE
spalte2 = '".mysql_real_escape_string(&#036;_POST['spalte2Wert'])."'";
&#036;query = mysql_query(&#036;abfrage) or die("Datenbankabfrage ist fehlgeschlagen!");

Ab PHP 5.1 sollte PDO (PHP Data Objects) für Datenbankabfragen verwendet werden.

&#036;dbh->exec("INSERT INTO REGISTRY (name, value)
VALUES (".&#036;dbh->quote(&#036;name,PDO::PARAM_STR).", ".&#036;dbh->quote(&#036;value,PDO::PARAM_INT).")");

Oder als Prepared Statement:

&#036;stmt = &#036;dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
&#036;stmt->bindParam(':name', &#036;name);
&#036;stmt->bindParam(':value', &#036;value);

Falls man eine Einflussmöglichkeit auf die Konfigurationsdatei ?php.ini? hat, kann auch die Option ?magic_quotes_gpc? auf ?on? gestellt werden. Dies ist jedoch nicht empfehlenswert, da manche nicht selber programmierte Scripte eigenständig über Funktionen wie etwa addslashes() oder das bereits weiter oben genannte mysql_real_escape_string() escapen, d. h. dass bereits allen relevanten Zeichen in den Benutzereingaben durch Magic Quotes ein Backslash vorangestellt wurde und nun durch die Escape-Funktion erneut ein Backslash vorangestellt wird. Somit verfälscht man die Benutzereingaben und erhält anstatt einem einfachen Anführungszeichen ein Anführungszeichen mit vorangestelltem Backslash ( &#092;" ) zurück. Die folgende Funktion erkennt selbstständig, ob die ?magic_quotes? aktiviert sind, und verfährt dementsprechend:

function quotesqlvar(&#036;value)
{
// Stripslashes if quoted
if (get_magic_quotes_gpc()) {
&#036;value = stripslashes(&#036;value);
}
// Quote if not integer
if (!is_numeric(&#036;value)) {
&#036;value = mysql_real_escape_string(&#036;value);
}
return &#036;value;
}


Auf den ersten Blick scheint es hier von Vorteil zu sein, dass in einem Aufruf von mysql_query() lediglich ein SQL-Statement ausgeführt wird. Bei einem sehr schlechten Programm könnte es jedoch möglich sein, z.B. mittels der Union-Anweisung in bestimmten und seltenen Konstellationen weitere SQL-Statements einzuschleusen.

Perl

Das datenbankunabhängige Datenbankmodul DBI unterstützt eine ähnliche ?prepare?-Syntax, die auch im Java-Beispiel zu sehen ist.

&#036;statementhandle = &#036;databasehandle->prepare("SELECT spalte1 FROM tabelle WHERE spalte2 = ?");
&#036;returnvalue = &#036;statementhandle->execute( &#036;spalte2Wert );

ColdFusion

Unter ColdFusion kann das <cfqueryparam>-Tag verwendet werden, welches sämtliche notwendigen Validierungen übernimmt (Details siehe ColdFusion Online Hilfe):

SELECT *
FROM courses
WHERE Course_ID = <cfqueryparam value = "#Course_ID#" CFSQLType = "CF_SQL_INTEGER">

MS-SQL

Über parametrisierte Kommandos kann die Datenbank vor SQL-Injektionen geschützt werden:

SELECT COUNT(*) FROM Users WHERE UserName=? AND UserPassword=?
xkillabier is offline  
Old 03/21/2007, 23:33   #25
 
elite*gold: 0
Join Date: Jan 2007
Posts: 204
Received Thanks: 26
Hack für P-server....

Analigator is offline  
Old 03/22/2007, 12:49   #26
 
elite*gold: 0
Join Date: Dec 2006
Posts: 69
Received Thanks: 0
AhnLab-V3 2007.3.22.1 03.22.2007 no virus found
AntiVir 7.3.1.44 03.22.2007 HEUR/Malware
Authentium 4.93.8 03.22.2007 no virus found
Avast 4.7.936.0 03.21.2007 no virus found
AVG 7.5.0.447 03.22.2007 no virus found
BitDefender 7.2 03.22.2007 no virus found
CAT-QuickHeal 9.00 03.21.2007 no virus found
ClamAV devel-20070312 03.22.2007 no virus found
DrWeb 4.33 03.22.2007 no virus found
eSafe 7.0.14.0 03.21.2007 no virus found
eTrust-Vet 30.6.3501 03.22.2007 no virus found
Ewido 4.0 03.21.2007 no virus found
FileAdvisor 1 03.22.2007 Not analyzed yet
Fortinet 2.85.0.0 03.22.2007 no virus found
F-Prot 4.3.1.45 03.21.2007 no virus found
F-Secure 6.70.13030.0 03.22.2007 no virus found
Ikarus T3.1.1.3 03.22.2007 no virus found
Kaspersky 4.0.2.24 03.22.2007 no virus found
McAfee 4989 03.21.2007 no virus found
Microsoft 1.2306 03.22.2007 no virus found
NOD32v2 2134 03.22.2007 no virus found
Norman 5.80.02 03.21.2007 no virus found
Panda 9.0.0.4 03.22.2007 no virus found
Prevx1 V2 03.22.2007 no virus found
Sophos 4.15.0 03.13.2007 no virus found
Sunbelt 2.2.907.0 03.22.2007 no virus found
...
kingkal is offline  
Old 03/22/2007, 13:46   #27
 
elite*gold: 0
Join Date: Mar 2007
Posts: 3
Received Thanks: 0
@xkalabier wie funktioniert das mit geon hack selber machen? kannste das erklären?
Hundetier is offline  
Old 03/23/2007, 14:15   #28
 
xkillabier's Avatar
 
elite*gold: 12
Join Date: Dec 2006
Posts: 1,223
Received Thanks: 102
sry hab grad eben erst angefangen C++ zu lernen <.< so weit bin ich noch nich mir nen eigenen bot basteln zu können <.<
xkillabier is offline  
Old 03/23/2007, 16:29   #29
 
elite*gold: 0
Join Date: Mar 2007
Posts: 3
Received Thanks: 0
sag bescheit wenn du das kannst ich brauch dringend Geld. ich hab lvl57 und renn noch mit G50 Bow und G46 ausrüstung rum. Das ist nen bisschen scheiße
Hundetier is offline  
Reply


Similar Threads Similar Threads
kalhackit und private server
05/22/2010 - Kal Online - 48 Replies
wie kann man nem private server mit kalhackit it joinen? der loader führt ja einfach kalonline.exe aus und nicht einen seperaten loader für den p-server!kann man das umgehen? danke
Need Kalhackit for privat server
11/18/2007 - Kal Online - 7 Replies
Hi, i need Kalhackit for privatserver. I cant find new kalhackit download link..
kalhackit privat server?
10/05/2007 - Kal Online - 19 Replies
Hello Guys im new in elitepvpers :-) now i searched but i dont found any working 1hh hack for Privat server any1 can upload the newest 1hh hack for privat server? or privat server hack? Thx much :-)
KalHackIt funzt auf Int-Server
06/03/2007 - Kal Online - 4 Replies
jo hy leutz ich hab die schnauze voll von kal ich post mal meinen hack für die die von den anderen nix abbekommen also have fun ich bin denn weg von kal aso der hack funtioniert wie gehabt .oh usw... MUHAHA ICH BIN SOOO DUMM -.- also cya greetz master...



All times are GMT +2. The time now is 01:37.


Powered by vBulletin®
Copyright ©2000 - 2024, 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 ©2024 elitepvpers All Rights Reserved.