[php] inlogscript pakt pw niet

Pagina: 1
Acties:

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
Als ik mijn username en password invul, in mijn loginscript, pakt ie alles, behalve het password... Het password haal ik rechtstreeks uit de db dus dat klopt zeker weten... Maar waarom pakt ie m'n password niet...

ik zal in een groot vak commenten waar ie naar toe gaat (waar ie stopt) zodat het opvalt
PHP:
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
58
59
60
61
62
63
64
65
66
67
<?
 if ($action == 'login')
 {
     // mysql connect
     mysql_connect("localhost", "root", "h4x0r") or die ("MySQL Connectie mislukt");
     mysql_select_db("forum") or die ("Kon de database niet selecteren");

     // query
     $form_pw = $f_password;
     $q_username = mysql_query("SELECT * FROM users WHERE username='$f_username'");

     // kijken of user bestaat
     if (mysql_num_rows($q_username) == "0")
     {
         // geen geldige user
         echo "Deze gebruiker bestaat niet \n <a href='login.php'>terug</a>";
     }
     else
     {
         $row = mysql_fetch_object($q_username); // user uit de db halen
         $password = $row->password; // password uit db halen
         if ($password == '$form_pw') // kijken of het password klopt
         {
             Setcookie("username", $row->username, Time()+36000000); // username cookie
             Setcookie("password", $password, Time()+36000000); // password cookie
             echo "ingelogd \n \n <a href='index.php'> Terug </a>"; // terug gaan
         }
                 /////////////////////////
                 /////////////////////////
                 /// hier loopt ie dus  //
                 /// op vast            //
                 /////////////////////////
                 /////////////////////////
         else { echo "mislukt"; }
     }


 }
 else
 {
     // formulier weergeven
     echo "
     <html>
         <head><title>Login</title></head>
         <body bgcolor='#FFFFFF' vlink='#000000' alink='#000000' link='#000000'>
         <form action='login.php?action=login' method='post'>
         <div align='center'><table width='770' cellspacing='1' cellpadding='1' bgcolor='#000000'>
         <tr>
            <td width='370' bgcolor='#cccccc'><font face='verdana' size='2' color='#000000'><b>Username:</b></font></td>
            <td width='400' bgcolor='#e6e6e6'><input type='text' name='f_username'></td>
         </tr>
        <tr>
            <td width='370' bgcolor='#cccccc'><font face='verdana' size='2' color='#000000'><b>Password:</b></font></td>
            <td width='400' bgcolor='#e6e6e6'><input type='text' name='f_password'></td>
         </tr>
         <tr>
            <td width='370' bgcolor='#cccccc'></td>
            <td width='400' bgcolor='#e6e6e6'><input type='submit' value='submit'><input type='reset' value='reset'></td>
         </tr>
        </table>
        </form>
    </html>";

    echo "";
         
 }
?>

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

PHP:
1
2
3
4
<?
$password = $row->password; // password uit db halen
print "$password\n";
?>

Staat dan je password daar?

Skill is when luck becomes a habit.


Verwijderd

print het wachtwoord eerst eens om te kijken of ie de goede wel uit de db haalt en post alleen de relevante code hier, heb eerlijk gezegd geen zin om alles te lezen :P

Verwijderd

Juist print je ingevoerde paswoord, het paswoord uit de db en de md5 keys van beide.. helpt :D

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Op woensdag 02 januari 2002 19:22 schreef GDOG het volgende:
Juist print je ingevoerde paswoord, het paswoord uit de db en de md5 keys van beide.. helpt :D
Hij doet niks met md5 :o
Het password gaat plaintext een cookie in :o

Who is John Galt?


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
Op woensdag 02 januari 2002 19:24 schreef justmental het volgende:

[..]

Hij doet niks met md5 :o
Het password gaat plaintext een cookie in :o
nu nog wel ja, dat md5 is niet veel werk, dat md5 heb ik er helemaal uitgesloopt, draai het localhost, en d8 dat het daar nog wel n's mis zou kunnen gaan :o

maar dat was dus niet zo, als ik password echo... krijg ik het password uit de DB:
xLOQYdNn
en in't invulveld =
xLOQYdNn

Dus dat klopt gewoon...
nu moet je vergelijken,als dat hetzelfde is, dan zet ie de cookies neer, dat doet ie niet, dus hij vergelijkt niet goed...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

trim() :?

Doet iets met Cloud (MS/IBM)


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
als ik de f_password en password echo is het precies hetzelfde

maar als ik dit doe:
if ($password == '$f_password')


komt ie er niet doorheen....
:?
draai trouwens nieuwste mysql/php/apache

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
Op donderdag 03 januari 2002 10:13 schreef D2k het volgende:
trim() :?
werkt niet want er zitten geen witte spaces tussen... het password word gegenereerd, in de DB gezet, en daarna naar mail gestuurd...
't password bestaat uit a-z en A-Z (geen 0-9)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op donderdag 03 januari 2002 10:22 schreef Wesley het volgende:

[..]

werkt niet want er zitten geen witte spaces tussen... het password word gegenereerd, in de DB gezet, en daarna naar mail gestuurd...
't password bestaat uit a-z en A-Z (geen 0-9)
print die 2 eens dan zo echo " '$string1' '$string2' ";
dan weet je pas echt of ze geen spaties bevatten

Doet iets met Cloud (MS/IBM)


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
code:
1
'xLOQYdNn' 'xLOQYdNn'

dit krijg ik terug... klopt gewoon dus

kan misschien ook gewoon een bug zijn in de Win32 binary, ik draai geen linux... maar ik denk het niet... heb er tenminste nog geen mensen over horen klagen :D

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

hmmzz
pak www.php.net/strcmp eens

Doet iets met Cloud (MS/IBM)


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
PHP:
1
2
3
<?
$test = strcmp ($password, $f_password);
?>

word dat dan?
code:
1
'xLOQYdNn' 'xLOQYdNn' '0'

krijg ik dan

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op donderdag 03 januari 2002 10:30 schreef Wesley het volgende:
PHP:
1
2
3
<?
$test = strcmp ($password, $f_password);
?>

word dat dan?
jepz
en dan $test testen op
Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.
<edit>
bij 0 zijn ze gelijk :)

Doet iets met Cloud (MS/IBM)


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
code:
1
'xLOQYdNn' 'xLOQYdNn' '0'

(heb ik naast die echo van jouw geplakt)

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op donderdag 03 januari 2002 10:32 schreef Wesley het volgende:
code:
1
'xLOQYdNn' 'xLOQYdNn' '0'

(heb ik naast die echo van jouw geplakt)
zie mijn edit
^
|

Doet iets met Cloud (MS/IBM)


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
Op donderdag 03 januari 2002 10:33 schreef D2k het volgende:

[..]

zie mijn edit
^
|
ja ze zijn dus gewoon gelijk... maar als ik ze controleer met een simpel ifje gaat dat niet lukken... >:)

ik kan het ook gewoon doen...

if ($test == '0')
{
// cookie shit + echo
}
else
{
echo "jouw password klopt niet!";
}

iets in die trant

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

je hebt die $test uiteraard niet nodig >:)
maar dat is de opzet

Doet iets met Cloud (MS/IBM)


  • CyeZ
  • Registratie: September 2001
  • Laatst online: 09:20

CyeZ

Vroem vroem!!!

Hier vergelijk je ze:
if ($password == '$form_pw')
Zoals het hier staat ga je dus kijken of in de variabele $password de string '$form_pw' staat. Verander het eens naar:
code:
1
if ($password == $form_pw)

Dus zonder de quote'jes om $form_pw heen.

[18:54] <Prammenhanger> |HunterPro|eet
[18:55] <Prammenhanger> lijkt best op
[18:55] <Prammenhanger> |HunterProFeet


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
Op donderdag 03 januari 2002 10:37 schreef D2k het volgende:
je hebt die $test uiteraard niet nodig >:)
maar dat is de opzet
ja :D

ze zijn dus wel het zelfde, 't gaat fout bij die if, die wilt ie dus niet pakken (slaat ie over OF hij vind ze NIET hetzelfde)

  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
Op donderdag 03 januari 2002 10:37 schreef CyeZ het volgende:
Hier vergelijk je ze:
[..]

Zoals het hier staat ga je dus kijken of in de variabele $password de string '$form_pw' staat. Verander het eens naar:
code:
1
if ($password == $form_pw)

Dus zonder de quote'jes om $form_pw heen.
300 x |:(
dat werkt dus wel... |:(
4000 maal Thanx!! ;)
dat ik dat niet eerder gezien heb :'(
D2k aan jouw ook bedankt voor je tijd enzo!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13:12
Ze lijken, gezien de uitkomsten van meerdere test, waaronder strcmp, echt gelijk te zijn.

Ik weet niet in hoeverre strcmp zijn werk echt altijd goed doet, maar een manier om er zeker achter te komen is bytewise vergelijken, d.m.v. de volgende code:

---

echo "begin pw1-";
for ($i = 0; $i < strlen($password); $i++)
echo ord($password[$i])." ";
echo "-eind pw1<br>";

echo "begin pw2-";
for ($i = 0; $i < strlen($form_pw); $i++)
echo ord($form_pw[$i])." ";
echo "-eind pw2<br>";

---

Je krijgt nu allemaal cijfertjes op je scherm, namelijk de ASCII-codes van de tekens in de strings; hiermee zie je ook eventuele enters en zo...

Eerlijk gezegd heb ik er niet veel vertrouwen in dat dit wel gaat werken, maar ja: proberen kan nooit kwaad.

Enige wat ik in jouw code zie dat ik zelf anders zou doen zijn de aanhalingstekens om '$form_pw' (r. 22).

Succes!

edit:

ok, hot topic, dus iemand was mij al voor... maar kan diegene mij ook uitleggen waarom het dan zo wel werkt???

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 16:30

Janoz

Moderator Devschuur®

!litemod

Op woensdag 02 januari 2002 16:54 schreef Wesley het volgende:
PHP:
1
2
3
<?
         if ($password == '$form_pw') // kijken of het password klopt
?>
Niet vreemd dat het niet werkt.... Weet je nog wat het verschil is tussen ` en "? JUIST ... tussen " word de $bla wel vervangen door zijn waarde en met 'niet. Op dit moment vergelijk je het wachtwoord met $form_pw en niet met de inhoud van $form_pw.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

met "" wordt het de waarde van de string $blaat="test" en met '' het $blaat=$blaat

snappu :?

Doet iets met Cloud (MS/IBM)


  • RedHat
  • Registratie: Augustus 2000
  • Laatst online: 13-09 21:26
dat wist ik wel
vroeger werkte het altijd wel met ''
tenminste op linux bak wel... toen heb ik het mezelf zo aangewend, fout fout fout ;)

bedankt..
Pagina: 1