Hey Towners,
Privileg postete mal dies. Lest dies bitte zuerst durch und befolgt so viele Schritte wie nur möglich.
Hier im Thread möchte ich euch zeigen, wie man die SQL Lücken fixt.
Dafür braucht ihr nur C# und die Phoenix Source, Zeit und ein Gehirn.
Also als 1. will ich sagen, ich bin ein Noob in C# und der Code ist, scheisse & hässlich aber er funktioniert.
Fangen wir mit dem Tutorial mal an:
Schritt 1)
Erstelle eine neue Klasse in der Source mit folgendem Inhalt :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class SQLI
{
public object AntiSQLi(object string_0)
{
string string_4 = Convert.ToString(string_0);
string lol = Convert.ToString('"');
string xd = "";
string string_1 = string_4.Replace(lol,xd); // " wird mit einem leeren string ersetzt
string string_2 = string_1.Replace("'",""); // ' wird mit einem leeren String ersetzt
string string_3 = string_2.Replace("SELECT","");
string string_5 = string_3.Replace("DELETE","");
string string_6 = string_5.Replace("INSERT","");
string string_7 = string_6.Replace("TRUNCATE","");
return string_7;
}
}
Alles anzeigen
Ich war zu faul um alle MySQL dingers einzufügen. Ich sagte der Code sei hässlich
Schritt 2)
Geht jetzt die ganze Phoenix Source durch und filtert die MySQL Querys.
Hier ein Beispiel :
So sah der Code vorher aus.
Und so sollte er nachher aussehen.
DataRow Row = class6_0.ReadDataRow("SELECT * FROM groups WHERE Id = " + new SQLI().AntiSQLi(int_0) + " LIMIT 1");
Noch ein Beispiel :
Vorher
class3.ExecuteQuery(string.Concat(new object[]
{
"DELETE FROM achievements_owed WHERE achievement = '",
(uint)dataRow["achievement"],
"' AND user = '",
this.GetHabbo().Id,
"' LIMIT 1"
}));
Nachher
class3.ExecuteQuery(string.Concat(new object[]
{
"DELETE FROM achievements_owed WHERE achievement = '",
new SQLI().AntiSQLi((uint)dataRow["achievement"]),
"' AND user = '",
new SQLI().AntiSQLi(this.GetHabbo().Id),
"' LIMIT 1"
}));
Und das letzte Beispiel :
Vorher
class6_0.AddParamWithValue("petname" + @class.PetId, @class.Name);
class6_0.AddParamWithValue("petcolor" + @class.PetId, @class.Color);
class6_0.AddParamWithValue("petrace" + @class.PetId,@class.Race);
Nachher
class6_0.AddParamWithValue("petname" + @class.PetId, new SQLI().AntiSQLi(@class.Name));
class6_0.AddParamWithValue("petcolor" + @class.PetId, new SQLI().AntiSQLi(@class.Color));
class6_0.AddParamWithValue("petrace" + @class.PetId, new SQLI().AntiSQLi(@class.Race));
Ich hoffe ich hab euch damit geholfen.
Und ich hab euch gesagt, der Code ist hässlich. Mobbt mich nicht damit xD
Und nein ich machs euch nicht. Das ist ein riesen Haufen Arbeit JEDE MySQL Query durchzugehen.