Forum: PC-Programmierung Value aus Formular mit PHP abgreifen - warum klappt das eine aber das andere nicht?


von Marc B. (Gast)


Lesenswert?

Hallo,

ich habe auf meinem Raspberry Pi 2 ein PHP-Script laufen. Sobald man auf 
einen der Submit-buttons drückt wird der value abgefangen und per 
shell_exec ausgeführt (ist aber irrelevant).

folgender Code funktioniert:
1
<html>
2
<body>
3
<form method="post">
4
<input type="submit" name="REBOOT" value="REBOOT" style="..."/>
5
</form>
6
7
<?php
8
if (isset($_POST['REBOOT'])) {
9
shell_exec('sudo /var/sudowebscript.sh REBOOT');
10
}
11
?>
12
13
</body>
14
</html>

Wenn ich jetzt aber noch ein Bild hinzufügen möchte, welches ebenfalls 
wie ein SUBMIT funktionieren soll, klappt es nicht.
Also ich möchte auf das Bild klicken können und es soll der gleiche 
Value übermittelt werden...
Ich habe dafür noch folgenden Code in das Formular geschrieben:
1
<input type="hidden" name"x1" style="width=41px; height=42px; border=0px" value="REBOOT"/>
2
<input type="image" name="A1" style="width=41px; height=42px; border=0px" img src="resources/A1.png" alt=""/>

Was mache ich falsch, bzw. was muss ich ändern damit mein Code richtig 
wird?

Vielen Dank schonmal für die Hilfe

von D. I. (Gast)


Lesenswert?

Marc B. schrieb:
> Was mache ich falsch, bzw. was muss ich ändern damit mein Code richtig
> wird?

dein hidden input hat den falschen Namen, der müsste REBOOT statt x1 
lauten

von Joachim S. (oyo)


Lesenswert?

Marc B. schrieb:
>
1
> <input type="image" name="A1" style="width=41px; height=42px; 
2
> border=0px" img src="resources/A1.png" alt=""/>
3
>

Das "img" innerhalb des Tags sieht irgendwie falsch aus.

Aber der eigentliche Grund für das Fehlverhalten ist wohl wirklich das, 
was D.I. geschrieben hast. Ein zusätzlicher Fehler ist da aber auch 
noch, dass in dem hidden input zwischen "name" und "x1" (bzw. 
korrekterweise eben wohl "REBOOT") ein Gleichheitszeichen fehlt.

von jo (Gast)


Lesenswert?

>if (isset($_POST['REBOOT'])) {
>shell_exec('sudo /var/sudowebscript.sh REBOOT');
>}

Geil, noch einfacher kann man es einem Angreifer kaum machen :D
Escape mal deine Eingaben ordentlich ;)

Gruß J

von D. I. (Gast)


Lesenswert?

jo schrieb:
> Geil, noch einfacher kann man es einem Angreifer kaum machen :D
> Escape mal deine Eingaben ordentlich ;)
>
> Gruß J

wieso? er gibt keinen Wert weiter, das ist ein konstanter string.

von Marc B. (Gast)


Lesenswert?

Joachim S. schrieb:
> Aber der eigentliche Grund für das Fehlverhalten ist wohl wirklich das,
> was D.I. geschrieben hast. Ein zusätzlicher Fehler ist da aber auch
> noch, dass in dem hidden input zwischen "name" und "x1" (bzw.
> korrekterweise eben wohl "REBOOT") ein Gleichheitszeichen fehlt.

ohje 2 saudumme fehler (vllt mal zum augenarzt gehen;) ... vielen Dank!! 
mit richtigem Namen und Gleichheitszeichen läufts wie gewünscht.

jo schrieb
>Geil, noch einfacher kann man es einem Angreifer kaum machen :D
>Escape mal deine Eingaben ordentlich ;)

>Gruß J
Haha... viel weiter als zu meiner .sh kommste aber nicht
ich liebe das Risiko ;)

von jo (Gast)


Lesenswert?

>ich liebe das Risiko ;)

Ja seh ich daran das dein www-nutzer sudo rechte holen kann...geilo ;)

Gruß J

von D. I. (Gast)


Lesenswert?

jo schrieb:
> Ja seh ich daran das dein www-nutzer sudo rechte holen kann...geilo ;)
>
> Gruß J

wo ist das problem, solange sich das sudo auf das skript beschränkt? 
Skizzier doch mal deinen Angriff oder ist es nicht eher so, dass du 
einfach nur Müll laberst?

von jo (Gast)


Lesenswert?

>dass du einfach nur Müll laberst?

Oh mich unterhält das...

HAHA

von waflija (Gast)


Lesenswert?

D. I. schrieb:
> wo ist das problem, solange sich das sudo auf das skript beschränkt?

Wenn das der Fall ist, könnte ein Angreifer nur den Raspi blockieren 
durch ununterbrochen reboot Anfragen. Mehr net. "Jo" scheint nicht zu 
wissen dass sudo auch selektiv auf ein Kommando beschränkt werden kann.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.