system() mit Variablen
-
Hi
folgender Code
int main(){ string eingabe = getenv("QUERY_STRING"); eingabe.erase(0, 5); system("useradd -s /bin/false eingabe"); ... ..
so wies da steht legt system den Benutzer eingabe an. Ich will aber das System den Namen anlegt der in dem String eingabe gespeichert ist. Wie komm ich jetzt an den Namen ran?
MFG eiskalt
-
system(("useradd -bla " + eingabe).c_str());
-
ich hoffe du bist dir über die Sicherheitsproblematik, dir damit verbunden ist, im klaren.
$ QUERY_STRING="hallo;rm -rf /" dein_prog # diebisch freu ...
-
Hi ich bin mir darüber klar das Hallo; rm -rf/ ein echtes Problem darstellt ist ja auch nur zu übungszwecken gedacht gewesen. Wenn ich das einsetze werd ich auf sowas obacht geben
THX eiskalt
[ Dieser Beitrag wurde am 06.03.2003 um 12:26 Uhr von eiskalt editiert. ]
-
Hi also ich hab
system(("useradd -s /bin/false " + eingabe).c_str());
ausprobiert funktioniert nicht.
Fehlermeldung kommt bein Kompilieren keine aber wenn ich das Programm aufrufe
kommt:usage: useradd [-u uid] usw.
eben wies kommt wenn man useradd falsch aufruft.
Auserdem gibt system den wert 512 zurück und ich bilde mir ein das system bei erfolg 0 und bei fehlern -1 zurück geben sollte.MFG eiskalt
-
Original erstellt von eiskalt:
**Auserdem gibt system den wert 512 zurück und ich bilde mir ein das system bei erfolg 0 und bei fehlern -1 zurück geben sollte.
**Nicht einbilden. Dokumentation lesen (man {system,waitpid}).
$ useradd sh: useradd: command not found
Erfahrungsgemäß solltest Du auch in Testprogrammen auf Sicherheit eingehen, sprich system ignorieren.
-
Naja Ok system() sux soweit bin ich auch aber was gibts für alternativen ich hab mich noch nicht großartig damit beschäftigt. Und die Lektüre die ich im Moment mir zu gemüse führe benutzt nun mal system().
Aber für Vorschläge bin ich durchaus dankbarMFG eiskalt
-
man 2 fork
man 2 execve
man 3 execl
...