Autor Beitrag
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Fr 19.02.10 17:59 
Ja, ich weiß, eine kalte Welt hier im Forum. Und dann auch noch Geld dafür wollen - Kapitalismus ist doch was Schreckliches. :P
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Fr 19.02.10 18:04 
Hätte ich vielleicht sogar gemacht, hab aber überhaupt keine Ahnung von PHP :D Da muss mal wer andres für herhalten ^^ Ich mein, mit der Energie/Zeit die in diesem Topic steckt hätte man schon alles mögliche umsetzen können...

Edit: wie ist denn eigentlich der Status zur Zeit? Mit dem Usernamen/Passwort in der URL gehts jetzt, oder wo ist das Problem?

Ich glaub ich wiederhole das jetzt zum x-ten mal:
Wenn du als echo mal den Empfangenen UserName/Passwort und Passwort in der DB zurückgibst, dann sollte man doch das Problem finden können *wunder* man müsste nur mal wissen, was denn dann zurückgegeben wird...einfach mal ShowMessage(Response) machen.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 19.02.10 18:38 
user profile iconDonManfred
Zitat:
Und was hat das für einen Zweck als Usernamen -->"meier1990"<-- zu übermitteln; also INKLUSIVE der "

WENN Du schon helfen willst, dann liefere wenigstens ordentlichen code.

War mit den Gedanken schon bei php print. sorry.
und geholfen hatt ja wohl keiner so richtig!

sonst hätte man ja wohl bemerken müssen das in Delphi die Übergabe an sein php
ausblenden Delphi-Quelltext
1:
form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data);					

einfach nur Falsch ist! Du also auch DonManfred! :wink:

Bitte kein Disput über Kritiken :wink:
Maier1999 ist halt so ein besonderer User :rofl:
Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Fr 19.02.10 18:58 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:

Maier1999 ist halt so ein besonderer User :rofl:
Gruss Alf


Stimmt, bei allen anderen wäre der Thread schon längst zu. :wink:
DonManfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148
Erhaltene Danke: 2

Windows 7
Delphi XE3 Pro + HTML5Builder
BeitragVerfasst: Fr 19.02.10 19:32 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:

sonst hätte man ja wohl bemerken müssen das in Delphi die Übergabe an sein php
ausblenden Delphi-Quelltext
1:
form1.IdHTTP1.Post('http://www.chiller4fun.de/addons/login.php', data);					

einfach nur Falsch ist! Du also auch DonManfred! :wink:


Okok... Ich möchte jetzt nicht einfach so behaupten das es so doch ginge... Ich hab grad wenig Zeit aber ich versuch mal eben ein kleines Beispiel zu machen...

20 minuten später....

Ohne mit der http-Komponente erfahrung zu haben (!!) habe ich Code hier aus diesem Thread verwendet um mal eben einen Login in meinem Forum nachzubilden...

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
  IdHTTP, IdMultipartFormData;

type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Memo1: TMemo;
    IdHTTP1: TIdHTTP;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
  data: TIdMultiPartFormDataStream;
begin
  if trim(edit1.Text) <> '' then begin
    if trim(edit2.Text) <> '' then begin
      data := TIdMultiPartFormDataStream.Create;
      try
        data.AddFormField('username', edit1.Text);
        data.AddFormField('passwort', edit2.text);
        Memo1.Lines.Text := form3.IdHTTP1.Post('http://www.hdro-die-schwarze-hand.de/maier1990.php', data);
       finally
        data.Free;
      end;
    end;
  end;
end;

procedure TForm3.FormShow(Sender: TObject);
begin
  memo1.Clear;
end;

end.


ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
<?php
$sqlhost = "******";
// Username und Passwort zum einloggen in den Datenbankserver
$sqluser = "******";
$sqlpassword = "******";
// Name der Datenbank
$sqldb = "******";

$conn = mysql_connect($sqlhost, $sqluser, $sqlpassword);
mysql_select_db($sqldb, $conn);

header("Content-Type: text/plain");
if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = "";
if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = "";
if (($username != "") AND ($passwort != "")){
  $result = mysql_query("SELECT * FROM bb1_users WHERE username='".$username."' AND password='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error());
  $c = 0;
  while ($row = mysql_fetch_array($result)){
    if ($row["password"] != md5($passwort)){
      echo("Fehler beim Login");
      exit;
    } else {
      $c++;
      if ( (int) $row["activation"] == 1){
        echo("Erfolgreich Eingelogt");
      }  else if ( (int) $row["aktiviert"] == 0){
        echo("Noch Nicht Aktiviert");
      } else {
        echo "Sollte nicht auftreten :D";
      }
    }
  }
  if ($c == 0){
    echo "Login nicht möglich. Username und/oder Passwort falsch";
  }    
}
echo "\r\n";
print_r($_REQUEST);
?>


snap00022

Fazit: DOCH, das mit dem data-Array war so schon ok (glaube seite 4 hier im thread)! :D
Man muss es halt nur richtig machen.

Noch ein Edit für Alf:
Zur Erklärung... Du schriebst, das das mit dem data-Array falsch ist und er müsse es anders übergeben (script.php?var1=x&var2=y). Was du DA aber machst ist nichts anderes als einen Request per _POST abzusenden, die ganzen Werte jedoch per _GET zu übergeben.
Wenn du das SO machst, dann kannst du dir den POST sparen. Ein Loginformular, welches auf einer Seite eingebunden ist wirst du nicht überwinden können, wenn da eine genaue Prüfung auf POST oder GET erfolgt.

Mit meinem Beispiel hier werden die Werte wirklich als Post übermittelt. Nicht als GET in einem POST-aufruf.

Also: Ab in Die Ecke mit Dir! :-)

Ich programmiere erst 2 Jahre Delphi aber 12 Jahre lang mit PHP...
Einloggen, um Attachments anzusehen!
_________________
Gruss Manfred
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Fr 19.02.10 19:42 
user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Herr Gott, erbarmt sich denn niemand, der ihm mal das Script und zum Script passenden Delphi Code schreibt? :mrgreen:


:beer:

@ALF: Ich dachte, du weißt den Unterschied zwischen post und get?
ALF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 19.02.10 20:14 
Kurze Antwort: bin auf arbeit und kann nicht weitermachen:

Das globale Spezial-Array $_REQUEST enthält alle über die Mechanismen Cookie, POST oder GET übergebenen Variablen.

Aber Achtung: Diese Methode sollten Sie nur dazu verwenden, ein altes Programm schnell wieder flott zu bekommen. Es ist immer besser, gezielt via $_GET, $_POST oder $_COOKIE die Übergabemethode zu referenzieren.
und wie geht das DonManfred? solltest Du doch wissen!
und schon sind wir glaube ich wieder bei meiner Aussage oder?

bin erst 23:30 zu Hause :wink:

Gruss Alf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
maier1990
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.02.10 20:50 
Thx donmanfred
Habs mir mal angeschaut aber is nur reines Wirwar muss ich mich heut abend wen ich allein
bin nochmal drüber sitzen.
Hab die Daten mal abgeändert und auf meins angepasst, aber wieso kommt immer folgender fehler?

Login nicht möglich. Username und/oder Passwort falsch
Array
(
[username] => 111
[passwort] => 111

Edit:

Und was passieren sollte wen user und pw richtig is des trag ich wohl hier ein oder:
ausblenden Delphi-Quelltext
1:
2:
3:
if trim(edit1.Text) <> '' then begin
    if trim(edit2.Text) <> '' then begin
      data := TIdMultiPartFormDataStream.Create;
DonManfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148
Erhaltene Danke: 2

Windows 7
Delphi XE3 Pro + HTML5Builder
BeitragVerfasst: Fr 19.02.10 21:47 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Kurze Antwort: bin auf arbeit und kann nicht weitermachen:
Das globale Spezial-Array $_REQUEST enthält alle über die Mechanismen Cookie, POST oder GET übergebenen Variablen.
Aber Achtung: Diese Methode sollten Sie nur dazu verwenden, ein altes Programm schnell wieder flott zu bekommen. Es ist immer besser, gezielt via $_GET, $_POST oder $_COOKIE die Übergabemethode zu referenzieren.


Ja, das ist korrekt. Auf die schnelle (hatte ja keine Zeit) zusammen geschustert funktioniert es mit _REQUEST aber auch. Macht aber auch keinen Unterschied. Die DATEN wurden ja per _POST übermittelt. Aber ich ändere es gerne nochmal für dich ab, wenn du das möchtest.

Ändert aber nichts an der Tatsache, das du schriebst die vorgehensweise von maier wäre TOTAL FALSCH; was sie aber nicht ist. Sie funktioniert sehr wohl so wie gewollt und nur das wollte ich mit meinem Beispiel beweisen.

Aber bitte, hier eine Fassung die auf _POST prüft:

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
<?php
$sqlhost = "****";
// Username und Passwort zum einloggen in den Datenbankserver
$sqluser = "***";
$sqlpassword = "***";
// Name der Datenbank
$sqldb = "***";

$conn = mysql_connect($sqlhost, $sqluser, $sqlpassword);
mysql_select_db($sqldb, $conn);

header("Content-Type: text/plain");
if (isset($_POST['username'])) $username = mysql_real_escape_string($_POST['username']); else $username = "";
if (isset($_POST['passwort'])) $passwort = mysql_real_escape_string($_POST['passwort']); else $passwort = "";
if (($username != "") AND ($passwort != "")){
  $result = mysql_query("SELECT * FROM bb1_users WHERE username='".$username."' AND password='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error());
  $c = 0;
  while ($row = mysql_fetch_array($result)){
    if ($row["password"] != md5($passwort)){
      echo("Fehler beim Login");
      exit;
    } else {
      $c++;
      if ( (int) $row["activation"] == 1){
        echo("Erfolgreich Eingelogt");
      }  else if ( (int) $row["aktiviert"] == 0){
        echo("Noch Nicht Aktiviert");
      } else {
        echo "Sollte nicht auftreten :D";
      }
    }
  }
  if ($c == 0){
    echo "Login nicht möglich. Username und/oder Passwort falsch";
  }    
}
echo "\r\n";
print_r($_POST);
?>


Die kannste genau so gut verwenden. An der funktionsweise ändert das nichts.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Thx donmanfred
Hab die Daten mal abgeändert und auf meins angepasst, aber wieso kommt immer folgender fehler?

Login nicht möglich. Username und/oder Passwort falsch
Array
(
[username] => 111
[passwort] => 111


Weil kein Datensatz gefunden wurde der passen würde. Username und/oder passwort sind halt falsch. Aber am besten zeigst du mal den aktuellen PHP-Quelltext, den Du verwendest... Ich möchte mich nicht drauf verlassen, das du meinen code korrekt angepasst hast!


user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:

Und was passieren sollte wen user und pw richtig is des trag ich wohl hier ein oder:
ausblenden Delphi-Quelltext
1:
2:
3:
if trim(edit1.Text) <> '' then begin
    if trim(edit2.Text) <> '' then begin
      data := TIdMultiPartFormDataStream.Create;


Das, mein lieber, sind mal wieder GRUNDLAGEN der 1. Klasse!

Ich prüfe bei Button-Klick ob beide Eingabefelder befüllt sind und nur dann mache ich den Aufruf...

Deine Abfrage in delphi war, denke ich, doch so ok... Nur die Verbindung zwischen delphi und php war fehlerhaft bei Dir.

PS: Mein Script ist nur ein Beispiel INKL debug-ausgaben! Die zwei Zeilen
ausblenden Quelltext
1:
2:
echo "\r\n";
print_r($_POST);


schmeisst du am besten raus. ABER poste erstmal aktuelle PHP- und Delphi-Code-Versionen...

_________________
Gruss Manfred


Zuletzt bearbeitet von DonManfred am Fr 19.02.10 21:56, insgesamt 1-mal bearbeitet
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 19.02.10 22:13 
Ich sag bei dem PHP-Script mal SQL-Injection ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
maier1990
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.02.10 22:16 
Php Script:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
<?php
$sqlhost = "xxxxxxxxx";
// Username und Passwort zum einloggen in den Datenbankserver
$sqluser = "xxxxxxxxx";
$sqlpasswort = "xxxxxxx";
// Name der Datenbank
$sqldb = "kd10135_db1";

$conn = mysql_connect($sqlhost, $sqluser, $sqlpasswort);
mysql_select_db($sqldb, $conn);

header("Content-Type: text/plain");
if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = "";
if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = "";
if (($username != "") AND ($passwort != "")){
  $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$username."' AND passwort='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error());
  $c = 0;
  while ($row = mysql_fetch_array($result)){
    if ($row["passwort"] != md5($passwort)){
      echo("Fehler beim Login");
      exit;
    } else {
      $c++;
      if ( (int) $row["activation"] == 1){
        echo("Erfolgreich Eingelogt");
      }  else if ( (int) $row["aktiviert"] == 0){
        echo("Noch Nicht Aktiviert");
      } else {
        echo "Sollte nicht auftreten :D";
      }
    }
  }
  if ($c == 0){
    echo "Login nicht möglich. Username und/oder Passwort falsch";
  }    
}

?>


Delphi:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  data: TIdMultiPartFormDataStream;
begin
  if trim(edit1.Text) <> '' then begin
    if trim(edit2.Text) <> '' then begin
      data := TIdMultiPartFormDataStream.Create;
      try
        data.AddFormField('username', edit1.Text);
        data.AddFormField('passwort', edit2.text);
        Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);
       finally
        data.Free;


Vorher hab ich es mal so probiert:
ausblenden Delphi-Quelltext
1:
2:
if (Edit1.Text) = '238236' then 
Form2.Showmodal;

lg
DonManfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148
Erhaltene Danke: 2

Windows 7
Delphi XE3 Pro + HTML5Builder
BeitragVerfasst: Fr 19.02.10 22:16 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
Ich sag bei dem PHP-Script mal SQL-Injection ...


Und was, glaubst Du, da injecten zu können? Ich gebe dir die Antwort: NICHTS!

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

@maier1990: Das sieht für mich ok aus. Wenn da die Meldung kommt, das Username und/oder passwort falsch sind, dann sind sie das ODER das Passwort ist nicht, wie hier im thread beschrieben, mit md5 codiert in der db...

Evtl. magst du mal ein backup der tabelle mit phpmyadmin machen (MIT Daten) und mir das per pn senden. Dann werden wir evtl. schlauer...

_________________
Gruss Manfred
maier1990
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.02.10 22:29 
Ja oke werd ich sofort machen
aber freut mich das ich wenigstens enimal ne kleine sache richtig machen konnte :-)
Robert.Wachtel
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 895
Erhaltene Danke: 7

Windows 7 Ultimate x64
D5 Ent, D7 Arch, RAD Studio 2010 Pro, VS 2008
BeitragVerfasst: Fr 19.02.10 22:35 
user profile iconDonManfred hat folgendes geschrieben Zum zitierten Posting springen:
[...] Und was, glaubst Du, da injecten zu können? Ich gebe dir die Antwort: NICHTS!

webthreads.de/2007/1...drop-table-students/ :mrgreen:
DonManfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148
Erhaltene Danke: 2

Windows 7
Delphi XE3 Pro + HTML5Builder
BeitragVerfasst: Fr 19.02.10 23:00 
user profile iconRobert.Wachtel hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconDonManfred hat folgendes geschrieben Zum zitierten Posting springen:
[...] Und was, glaubst Du, da injecten zu können? Ich gebe dir die Antwort: NICHTS!

webthreads.de/2007/1...drop-table-students/ :mrgreen:


Netter Gag (klasse sogar :D) aber was willst Du damit ausdrücken?

Das der Name ->Robert'); DROP TABLE Students;<- zu einer SQL-Injection führen würde in obigem Script?

Möööp! Dickes Fettnäppchen...

Der Name ->Robert'); DROP TABLE Students;<- würde durch das mysql_real_escape_string zu ->Robert\'); DROP TABLE Students;<- und DAS, mein lieber, kann durchaus in dem SQL so an die DB gesendet werden. Ok, den User gibt es so nicht aber das verhalten des Scripts würde dadurch nicht beeinflusst (es wird halt kein passender User gefunden). Auch nicht, wenn man table students durch die richtige Tabelle ersetzen würde.

Und nu?

_________________
Gruss Manfred
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 19.02.10 23:15 
Ich weiß, warum ich Prepared Statements in PHP einsetze: Da sind solche sachen eindeutig.

Um deine Frage aber dennoch zu beantworten: Es gab da (auch in mysql_real_escape_string) durchaus schon Bugs, wo der nicht getan hat, was er tun sollte und man in gewissen Konstellationen da durchaus auch mit diesem Source injekten hätte können.

Mal ganz davon abgesehen, dass der PHP-Source wie dahergekrotzt aussieht ...

€: Konkret waren das soweit ich das überblicke glaube bugs.mysql.com/bug.php?id=41730 und/oder bugs.mysql.com/bug.php?id=22243 Wirklich schützt es aber nur, wenn man konsequent Befehl und Daten voneinander trennt. Daher auch mein expliziter Hinweis hier.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.


Zuletzt bearbeitet von BenBE am Fr 19.02.10 23:37, insgesamt 1-mal bearbeitet
DonManfred
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 148
Erhaltene Danke: 2

Windows 7
Delphi XE3 Pro + HTML5Builder
BeitragVerfasst: Fr 19.02.10 23:32 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:

Um deine Frage aber dennoch zu beantworten: Es gab da (auch in mysql_real_escape_string) durchaus schon Bugs, wo der nicht getan hat, was er tun sollte und man in gewissen Konstellationen da durchaus auch mit diesem Source injekten hätte können.

Mal ganz davon abgesehen, dass der PHP-Source wie dahergekrotzt aussieht ...


Ich hab den Code von maier übernommen und den nur leicht erweitert. Für mich würd ich da einiges anders machen.

Aber danke für den Hinweis; bin bisher aber eigentlich immer gut gefahren mit mysql_real_escape_string

_________________
Gruss Manfred
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.02.10 23:37 
Mist, verloren. Ich hatte auf nicht unter 10 Thread Seiten gewettet.
maier1990
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 20.02.10 00:10 
@ Luckie
Es gibt noch Hoffnung für dich ich hab schon wieder ein Problem weis aber nich ob des in diesen oder in einen neuen Thread gehört
Folgendes:
Ich benutze dank DonManfred diesen Php Code:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
<?php
$sqlhost = "dedi670.your-server.de";
// Username und Passwort zum einloggen in den Datenbankserver
$sqluser = "kd10135_1";
$sqlpasswort = "U42CHrx8";
// Name der Datenbank
$sqldb = "kd10135_db1";

$conn = mysql_connect($sqlhost, $sqluser, $sqlpasswort);
mysql_select_db($sqldb, $conn);

header("Content-Type: text/plain");
if (isset($_REQUEST['username'])) $username = mysql_real_escape_string($_REQUEST['username']); else $username = "";
if (isset($_REQUEST['passwort'])) $passwort = mysql_real_escape_string($_REQUEST['passwort']); else $passwort = "";
if (($username != "") AND ($passwort != "")){
  $result = mysql_query("SELECT * FROM scriptmaker_users WHERE username='".$username."' AND passwort='".md5($passwort)."';") OR die("MySQL-Fehler: ".mysql_error());
  $c = 0;
  while ($row = mysql_fetch_array($result)){
    if ($row["passwort"] != md5($passwort)){
      echo("Fehler beim Login");
      exit;
    } else {
      $c++;
      if ( (int) $row["aktiviert"] == 1){
        echo("Erfolgreich Eingelogt");
      }  else if ( (int) $row["aktiviert"] == 0){
        echo("Noch Nicht Aktiviert");
      } else {
        echo "Sollte nicht auftreten :D";
      }
    }
  }
  if ($c == 0){
    echo "Login nicht möglich. Username und/oder Passwort falsch";
  }    
}

?>


Mein Delphi Quellcode sieht so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
  data: TIdMultiPartFormDataStream;
begin
  if trim(edit1.Text) <> '' then begin
    if trim(edit2.Text) <> '' then begin
      data := TIdMultiPartFormDataStream.Create;
      try
        data.AddFormField('username', edit1.Text);
        data.AddFormField('passwort', edit2.text);
        Memo1.Lines.Text := form1.IdHTTP1.Post('http://www.chiller4fun.de/login.php', data);
       finally
        data.Free;
end;


Bei Donmanfred klappt es Erfolgreich.
Ich wen mich versuch einzuloggen kommt immer folgender fehler:

Login nicht möglich. Username und/oder Passwort falsch

DonManfred hat meinen Quelltext angeschaut und sagte das sei alles richtig so und wens er bei ihm macht ginge es.
Wisst ihr wieso es nicht geht?
lg
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 20.02.10 00:28 
user profile iconmaier1990 hat folgendes geschrieben Zum zitierten Posting springen:
Wisst ihr wieso es nicht geht?

Nein, aber du könntest es selber rausfinden, in dem du den Code einfach mal debuggst.
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.