Portál AbcLinuxu, 12. května 2024 11:12
echo 'rm -rfv / ' | POST http://host/skript.phpa vysledek máte v users.txt Takže radši nikam nic nepřesměrovávejte.
sudo rm -rfv /
aby to mělo náležitý efekt
echo 'jmeno=sudo%20rm%20-rfv%20/%20' | POST http://host/skript.php
Ale teď už to ztrácí pointu.
Prostě jen tak shellu předávat neověřené neescapované proměnné od uživatele je blbost, i když ten formulář je třeba přístupný jenom někomu.
A do toho souboru nic nepíše, protože tam není příkaz, který by něco psal (echo).
$jmeno >soubor
.
Co podle tebe takový příkaz dělá? Spustí něco, co je v $jmeno (pokud taková věc existuje), a výsledek se objeví v souboru (pokud $jmeno neobshovalo nějaká další přesměrování, protože může obsahovat cokoli).
$jmeno
obsahuje pepa
a nic víc (předpokládám).
2) Shell dostane pepa > users.txt
3) Shell se forkne, otevře soubor users.txt (nebo naopak, FIXME), což updatuje timestamp a nasměruje stdout do otevřeného souboru.
4) Shell se pokusí spustit pepa
, což selže, protože příkaz pepa pravděpodobně neexistuje. tudíž skončí, skončí i rodič a v logu se pravděpodobně objeví pepa: command not found
.
Takže jestli to nutně musí být přes shell, tak echo $jmeno > users.txt
(příkaz echo vypíše svoje argumenty).
Tiskni Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.