Olen luonut muutamia php skriptejä, jotka sijaitsevat admin kansiossa, jonka taas olen salannut .htaccessilla. Kirjautuminen onnistuu, mutta yrittäessäni kirjoittaa tekstitiedostoon perus "lataatiedostotextareaanlähetäformillaeteenpäin" ei kyseinen skripti löydä tekstitiedostoa. ongelma ei korjaannu, vaikka kirjoittaisin oikean urlin osoiteriville. selvennykseksi vielä, että kyseinen koodirypäs on toiminut moitteettomasti mbnetin servuilla, mutta nyt irtisanoi itsensä.
olisikohan kyse chmodeista?
Mikset kokeile onko?
Mutta jos virhe oli että scripti ei löydä koko tiedostoa, niin epäilen.
Kyseinen skripti toimii siis tällä tavalla:
<a href="xxxx.com/admin/muokkaa.php?muokkaa=filunnimi.txt">Filun nimi</a>
ja vaikka tuo filu olisi admin tiedostossa niin se ei löydä sitä?
Tarkistat tietysti aluksi, että mistä hakemistosta skripti yrittää tiedostoa lukea. Mikä tässä nyt on niin vaikeaa kokeilla vähän itsekin?
Se, että olen viettänyt eilen illalla 5h ja tänään 4h tutkien missä mättää.
Kaiken lisäksi kyseinen skripti ei toimi, vaikka tiedosto olisi samassa kansiossa sen kanssa.
No jospa laitat lähdekoodin näkyville, niin joku ehkä pystyy sanomaan jotain järkevää siitä.
somero kirjoitti:
Se, että olen viettänyt eilen illalla 5h ja tänään 4h tutkien missä mättää.
Kaiken lisäksi kyseinen skripti ei toimi, vaikka tiedosto olisi samassa kansiossa sen kanssa.
No sano nyt sitten, että mikä on se polku, josta skripti yrittää tiedostoa lukea? Eikä mitään mutuilua vaan skriptin outputti. Josset ole jo tarkistanut polkua, niin miksi et?
<?php if ($teksti=="") {echo "Tekstiä ei löytynyt!";exit;} $d=file($teksti); echo "<form action='tallenna.php?tiedosto=".$teksti."' method='post'; >"; echo "<textarea name='data' rows=20 cols=100 id='teksti'>"; for ($i=0;$i<count($d);$i++){ echo $d[$i]; } echo "</textarea><br>"; echo "<input type='submit' value='Tallenna' name='nappi' id='nappi'>"; echo "</form>";
ja vaikka kaikki tiedostot olisivat /admin/ kansiossa ei tuo skripti lataa mitään
EDIT: ja lisättäköön, että toiminut mbnetissä moitteettomasti.
Eihän tuota $teksti -arvoa aseteta missään.
Jos tuossa on tarkoitus luottaa register globalsiin, niin hirveästi tuota koodia isompaa tietoturvareikää ei pysty tekemään.
Mutta miten mbnetissä tuo on löytynyt, mutta ei nyt?
MBNetissä oli varmaan register globals oletuksena päällä. Tosin siltikin tuota pitäisi kutsua muokkaa.php?teksti=filunnimi.txt eikä muokkaa.php?muokkaa=filunnimi.txt
Niin ja lisätään vielä että register globals on huono asia, vaikka sen ansiosta huonosti tehty skripti toimiikin. Tutustu superglobaaleihin kuten $_GET.
Ja tosiaan ellei teknisesti ole rajoitettu tuon koodin ajamista vain luotetuille henkilöille, niin kannattaa sanitoida syödä ja kannattaa ehkä ajaa myös rivit htmlspecialchars -funktion läpi ennen textareaan puuppaamista.
Kaikelta tältä häsläämiseltä ja evottamiselta olisit säästynyt yksinkertaisesti ottamalla selvää, mistä polusta skripti yrittää tiedostoa lukea. Kuulostaako tutulta?
PHP:ssä on sellainen ominaisuus kuin register globals, joka ilmeisesti on MBNetissä käytössä.
Grez kirjoitti:
MBNetissä oli varmaan register globals oletuksena päällä. Tosin siltikin tuota pitäisi kutsua muokkaa.php?teksti=filunnimi.txt eikä muokkaa.php?muokkaa=filunnimi.txt
Niin ja lisätään vielä että register globals on huono asia, vaikka sen ansiosta huonosti tehty skripti toimiikin. Tutustu superglobaaleihin kuten $_GET.
Ja tosiaan ellei teknisesti ole rajoitettu tuon koodin ajamista vain luotetuille henkilöille, niin kannattaa sanitoida syödä ja kannattaa ehkä ajaa myös rivit htmlspecialchars -funktion läpi ennen textareaan puuppaamista.
Ton skriptin ajo on luotetuille henkilöille. Tsiigaan tuolla getillä saada sen heitettyä. thnx
Funktio htmlspecialchars kannattaa joka tapauksessa, muuten tiedostojen <- ja >-merkit sotkevat sivun.
ongelmat korjattu :) kiitoksia kaikille!
Aihe on jo aika vanha, joten et voi enää vastata siihen.