[PHP] Is dit formulier hackbaar? *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TheEagle
  • Registratie: Oktober 2000
  • Laatst online: 07-04 11:14

TheEagle

Master (of my own) universe

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
mysql_connect("$dbhost", "$dbuser", "$dbpass");
  @mysql_select_db("$dbname");
                
$Wachtwoord=md5($Wachtwoord);
                                
$query=mysql_query("SELECT GebruikerID FROM {$websiteprefix}gebruikers WHERE Gebruikersnaam='$Gebruikersnaam' AND Wachtwoord='$Wachtwoord'");
                    
$result=mysql_fetch_object($query);

if(mysql_num_rows($query)=='1') {
  $Sessie->GebruikerID=$result->GebruikerID;
  session_register("Sessie");
}


Ik heb geprobeerd een Inlog script te schrijven. Het wachtwoord en de gebruikers naam komen natuurlijk binnen via een form en de gegevens worden uit een mysql database gehaald.

Nu heb ik eens een minuut of 10 naar mijn beeldscherm zitten staren. En opeens kwam er een vraag in mij op. Kan dit gehacked worden ??? Wie geeft mij een antwoord ?

[ Voor 9% gewijzigd door D2k op 10-01-2003 11:41 ]

Vanwege een gebrek aan logica slaat dit bericht helemaal nergens op.


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

ja dat kan
je gebruikt de superglobals niet en geen addslashes

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • TheEagle
  • Registratie: Oktober 2000
  • Laatst online: 07-04 11:14

TheEagle

Master (of my own) universe

Topicstarter
Dat addslashes gedeelte lijkt me wel duidelijk. Alleen hoe pas ik in dit scrippie de super globals op de juiste manier toe ???

Vanwege een gebrek aan logica slaat dit bericht helemaal nergens op.


Acties:
  • 0 Henk 'm!

  • weerdo
  • Registratie: December 2000
  • Niet online
ff RTFMén:
It's preferred to go through PHP Predefined Variables instead, such as the superglobals: $_ENV, $_GET, $_POST, $_COOKIE, and $_SERVER. Please read the security chapter on Using register_globals for related information.

Acties:
  • 0 Henk 'm!

Verwijderd

ff voor mensen die niet zo lekker door TFM's lezen

zorg dat je $_SERVER['Wachtwoord'] gebruikt ipv $Wachtwoord.

Zeker met het woord Wachtwoord kunnen mensen makkelijk gokken voor je variabele van het wachtwoord. Dan typen ze http://www.jouwserver.nl/login.php?Wachtwoord=dcsdcsdc en dan brute forcen. Dit is nog niet zo erg.
Maar ik weet best zeker, dat jij later in je scripts gewoon kijkt of $sessie gevuld is... :P

Dit is zeker een te gokken variabele dus ik typ http://www.jouwserver.nl/index.php?sessie=ja en jouw scriptje beweerd dat ik ben ingelogd.

Check dus toch maar de manual, maar ik denk dat je iig nu snapt waar het probleem ligt. En ook waarom de superglobals "verplicht" zijn vanaf php 4.2.0 (geloof ik :P)

Acties:
  • 0 Henk 'm!

  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 20-08 20:35
$_SERVER :?
zullen we voor $_POST gaan

Acties:
  • 0 Henk 'm!

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Als bijvoorbeeld "admin" je administrator account is dan kun je door "admin'#" in te vullen en als password een dummy toch inloggen.
Zoals D2k al zei: addslashes gebruiken.

Who is John Galt?


Acties:
  • 0 Henk 'm!

  • Shagura
  • Registratie: Augustus 2001
  • Laatst online: 14-09 08:25
D2k schreef op 10 January 2003 @ 11:36:
ja dat kan
je gebruikt de superglobals niet en geen addslashes
Met de standaardinstellingen voegt php toch automagisch slashes toe aan formdata?

Acties:
  • 0 Henk 'm!

Verwijderd

Shagura schreef op 10 January 2003 @ 13:18:
[...]

Met de standaardinstellingen voegt php toch automagisch slashes toe aan formdata?
Voor quotes wel dacht ik, maar dat lost niet heel je probleem op natuurlijk.

Acties:
  • 0 Henk 'm!

  • Sn3akz
  • Registratie: November 2000
  • Laatst online: 05-08 13:55
Om kort te blijven:

Dit formulier staat vreselijk open. Je kan het niet slechter beveiligen.. Voor tips zie bovenstaande posts (en vergeet strip_tags() niet)

Acties:
  • 0 Henk 'm!

Verwijderd

../login.php?Wachtwoord=blaat' OR Wachtwoord<>'

Acties:
  • 0 Henk 'm!

  • PrinsEdje80
  • Registratie: Oktober 2001
  • Laatst online: 15-07 09:34

PrinsEdje80

Holographic, not grated...

Ik weet wat addslashed doet. Maar waarom is het noodzakelijk om dit voor een query o.i.d. te gebruiken?

Used to be Down Under... Foto gallery


Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

/login.php?Wachtwoord=blaat';%20DROP%20$dbname;%20AND%20Wachtwoord='blaat

zou dit werken?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • Speedener
  • Registratie: September 2000
  • Laatst online: 18-09 12:54
PrinsEdje80 schreef op 10 januari 2003 @ 21:11:
Ik weet wat addslashed doet. Maar waarom is het noodzakelijk om dit voor een query o.i.d. te gebruiken?
anders kan je dmv de invulvelden de query wijzigen

stel je doet bij een update als naam piet en daarna wil je proberen admin access te krijgen dan kan je dat als volgd doen: piet', level='3

dan date je niet alleen je naam op maar ook je level.

LG Therma V Split WP: HU143MA.U33-HN1636M NK5


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Spider.007 schreef op 10 januari 2003 @ 21:37:
/login.php?Wachtwoord=blaat';%20DROP%20$dbname;%20AND%20Wachtwoord='blaat

zou dit werken?
nee
simpel weg omdat mysql maar 1 query per keer kan verwerken

Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 15-09 18:24

dusty

Celebrate Life!

Erkens schreef op 10 januari 2003 @ 23:16:
[...]
nee
simpel weg omdat mysql maar 1 query per keer kan verwerken

ga eens in een mysql prompt en tik eens in "show databases;show tables;".

Waar ik mij meer aan erger is de code:
code:
1
$Wachtwoord=md5($Wachtwoord);

voornamelijk omdat dit dus niet echt netjes is. Je slaat het wachtwoord op in de database, en je vergelijkt het daar ook, laat dan ook de database het wachtwoord versleutelen ie: where .... AND Wachtwoord=password('$Wachtwoord')

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

dusty schreef op 10 januari 2003 @ 23:30:

[...]

ga eens in een mysql prompt en tik eens in "show databases;show tables;".
maar vanuit php niet ;)
althans mij is dat nog nooit gelukt :/
Waar ik mij meer aan erger is de code:
code:
1
$Wachtwoord=md5($Wachtwoord);

voornamelijk omdat dit dus niet echt netjes is. Je slaat het wachtwoord op in de database, en je vergelijkt het daar ook, laat dan ook de database het wachtwoord versleutelen ie: where .... AND Wachtwoord=password('$Wachtwoord')
wat maakt het btw uit of je in php de md5 berekent of in mysql :?
daarnaast heb je op deze manier het originele password nergens meer in je php script wat ook een voordeel kan zijn als er ergens per ongeluk een bug in hebt ;)
Pagina: 1