Toon posts:

[php] Probleem met posten form

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Een raar probleem: onderstaand formulier geeft als output voor $var1: var1=[value]. Wanneer ik echter het vinkje zet in de checkbox. Geeft ie wel netjes de goede output. Daarnaast viel me ook op dat wanneer ik het form method get geef, hij het ook goed doet.
code:
1
2
3
4
5
6
7
8
9
10
11
12
<html>
        <head>
                <title>test</title>
        </head>
        <body>
                <form method="post" action="test.php">
                        <input type="text" name="var1" value="<?=(isset($var1) ? $var1 : "") ?>"><br>
                        <input type="checkbox" name="var2"<?= (isset($var2) ? "checked" : "")?>><br>
                        <input type="submit">
                </form>
        </body>
</html>


Maw, het probleem doet zich voor dat wanneer ik via een post forulier 1 input type verstuur geeft hij als output voor $var1: var1=[value] ipv [value].

Een voorbeeld vind je hier: http://www.verbiest.nl/admin/test.php

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Het is heel raar gedrag, maar misschien los je het op als je netjes met superglobals gaat werken? Zoek maar ff op register globals. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat lost de problemen helaas niet op. [edit]

[ Voor 93% gewijzigd door Verwijderd op 03-06-2004 10:24 ]


Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 22:08

ripexx

bibs

Wat dacht je van register globals ;) Staat zelfs nog duidelijk vermeld in de faq. Zie ook het stukje van NMe84 :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hij doet ut helaas ook nie met _POST..

php.ini:
register_globals = On

[ Voor 90% gewijzigd door Verwijderd op 03-06-2004 10:24 ]


Acties:
  • 0 Henk 'm!

  • TRON
  • Registratie: September 2001
  • Laatst online: 16-09 13:13
Verwijderd schreef op 03 juni 2004 @ 10:16:
php.ini:
register_globals = On

Daarnaast doet ie het wel wanneer je meer dan 1 input type post.
En dat is dus zo fout!

Zo leg je de mogelijkheid tot exploiting open. Tenminste op een eenvoudigere manier. Men heeft onlangs niet voor niets de standaard instelling naar Off gegooid.
; You should do your best to write your scripts so that they do not require
; register_globals to be on; Using form variables as globals can easily lead
; to possible security problems, if the code is not very well thought of.

[ Voor 37% gewijzigd door TRON op 03-06-2004 10:21 ]

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
TRON schreef op 03 juni 2004 @ 10:20:
[...]

En dat is dus zo fout!

Zo leg je de mogelijkheid tot exploiting open. Tenminste op een eenvoudigere manier. Men heeft onlangs niet voor niets de standaard instelling naar Off gegooid.


[...]
Dat is weer een hele andere discussie. Mijn probleem is dat iets dat zou moet werken, niet werkt. (uiteraard heb je gelijk maar ik mag deze aanpassing niet maken).

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 22:08

ripexx

bibs

Doe eens het volgende in je script toevoegen:
PHP:
1
2
3
4
5
6
7
<?php

echo "<pre>";
print_r($_POST);
echo "</pre>";

?>

Je ziet dan je gehele post array, oja $var1 wordt $_POST["var1"] :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • ixi
  • Registratie: December 2001
  • Laatst online: 27-08 23:59

ixi

Script werkt op mijn 'server' gewoon goed. Ik heb even php.ini doorgelopen maar daar vind ik niks.. Welke versie van PHP draai je? ( <? phpinfo(); ?> )

Een spatie voor "checked" is wel zo netjes :)

Acties:
  • 0 Henk 'm!

Verwijderd

Doe anders niet zo gek en doe dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
<html>
        <head>
                <title>test</title>
        </head>
        <body>
                <form method="post" action="test.php">
                        <input type="text" name="var1" value="<?echo $var1;?>"><br>
                        <input type="checkbox" name="var2"<?= (isset($var2) ? " checked" : "")?>><br>
                        <input type="submit">
                </form>
        </body>
</html>
Eventueel met de check die je deed...

Maareuh, even over die "exploit":
Dat is allemaal achterhaald, de reden van het bestaan van die setting is er niet meer. En exploits door slecht programmeren is natuurlijk je eigen schuld. je zou gewoon altijd moeten zorgen dat je variabelen zich netjes gedragen, en nooit verkeerde waardes kunnen bevatten...

[ Voor 18% gewijzigd door Verwijderd op 03-06-2004 11:01 ]

Pagina: 1