[PHP] fpassthru() embedded

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Hey,

Ik heb een aantal .mmap bestanden in een beveiligde map staan. Nu wil ik een bestand,die zich bevindt in de beveiligde map en gekoppeld is aan een userid (sessions), openen door middel van onderstaande code:

code:
1
2
3
4
<object id="viewer" height="600" width="800" codebase="../../viewer/eng/MjMmViewer.cab#Version=6,0,107,0" classid="clsid:4C57C98A-E582-46E4-8FD8-5EBDC94CEA39">
        <param name="Image" value="http://www.website.com/beveiligdemap/bestand.mmap" />
        <a href="?install=viewer"><img src="../../../images/eng/MindManager_viewer_plugin_n.gif" width="419" height="300" class="mapimage" alt="Click on the MindManager map image to install the Viewer and view maps through a browser" /></a>
</object>


Hoe kan ik in bovenstaande code een bestand openen die in een beveiligde map zit? Kan ik daar ook fpassthru() voor gebruiken?

Alvast bedankt.

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Met fpassthru kun je inderdaad een bestand openen en direct uitvoeren. Je zou een sessievariabele kunnen zetten die je controleert in een script dat vervolgens ofwel die mmap weergeeft, ofwel een access denied melding of iets dergelijks.
PHP:
1
2
3
if (isset($_SESSION['jouwvar'])) {
  fpassthru('/beveiligdemap/'.$_GET['bestand']);
}

PHP:
1
2
3
4
5
6
7
<?php
$_SESSION['jouwvar'] = true;
?>
<object id="viewer" height="600" width="800" codebase="../../viewer/eng/MjMmViewer.cab#Version=6,0,107,0" classid="clsid:4C57C98A-E582-46E4-8FD8-5EBDC94CEA39">
        <param name="Image" value="http://www.website.com/jouwscript.php?bestand=bestand.mmap" />
        <a href="?install=viewer"><img src="../../../images/eng/MindManager_viewer_plugin_n.gif" width="419" height="300" class="mapimage" alt="Click on the MindManager map image to install the Viewer and view maps through a browser" /></a>
</object>

Uiteraard zul je wat van beveiliging in moeten bouwen zodat het niet mogelijk is om bestanden als /etc/shadow uit te lezen, maar goed, dat moet je wel lukken, lijkt me. :)
edit:
Overigens, als je fpassthru blijkbaar al gevonden had, waarom heb je het dan niet gewoon geprobeerd? :)

[ Voor 5% gewijzigd door NMe op 27-11-2006 14:52 ]

'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!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Ik heb verschillende dingen geprobeerd, alleen wist ik niet precies wat het allemaal inhield. Nu begrijp ik dat beter.

Wanneer ik onderstaande code uitvoer:

PHP:
1
2
3
4
5
6
7
8
<?php
  fpassthru('klantenbestanden/'.$_GET['bestand']);
?>
<object id="viewer" height="600" width="800" codebase="http://www.mindjet.com/viewer/eng/MjMmViewer.cab#Version=6,0,107,0" 

classid="clsid:4C57C98A-E582-46E4-8FD8-5EBDC94CEA39">
        <param name="Image" value="klantenbestanden/<?echo$_GET['bestand'];?>" />
</object>


Dan geeft ie onderstaande foutmelding:

Warning: fpassthru(): supplied argument is not a valid stream resource in c:\domains\adigo.nl\wwwroot\mindmap.php on line 9

Hoe komt dit?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

radem205 schreef op maandag 27 november 2006 @ 15:01:
Dan geeft ie onderstaande foutmelding:

Warning: fpassthru(): supplied argument is not a valid stream resource in c:\domains\adigo.nl\wwwroot\mindmap.php on line 9

Hoe komt dit?
dat komt omdat je de manual niet leest, daar staat een kant en klaar voorbeeld ;)

Example 1. Using fpassthru() with binary files
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

// open the file in a binary mode
$name = './img/ok.png';
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

// dump the picture and stop the script
fpassthru($fp);
exit;

?>

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

...dat nog los van het feit dat het dus niet op dezelfde pagina hoort als je HTML.

'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!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Ik ben misschien heel dom, maar moet ik 'm dan includen omdat je zegt dat ie niet op dezelfde pagina moet als je html?

En het betreft een .mmap bestand, kan ik 'm dan behandelen als een .png?

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Je moet hem niet includen, kijk eens goed naar regel 5 van het tweede codeblok dat ik postte. ;)

En dat image/png is slechts een voorbeeld, wat het goede mimetype is voor jouw bestand moet je zelf even opzoeken.

[ Voor 38% gewijzigd door NMe op 27-11-2006 15:13 ]

'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!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Ja sorry, ik begrijp wat je bedoelt, bedankt!!!

Bestaat er trouwens voor elke extensie een mimetype want ik kan geen mimetype vinden voor mijn extensie (.mmap)?

Acties:
  • 0 Henk 'm!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Ik heb nu onderstaande codes, maar het werkt helaas niet.

Include.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

// open the file in a binary mode
$name = $_GET['bestand'];
$fp = fopen($name, 'rb');

// send the right headers
header("Content-Type: text/plain");
header("Content-Length: " . filesize($name)); 

// dump the picture and stop the script
fpassthru($fp);
exit;

?>


index.html
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<head>
<title>titel</title>
</head>
<body>
<object id="viewer" height="600" width="800" codebase="http://www.mindjet.com/viewer/eng/MjMmViewer.cab#Version=6,0,107,0" 

classid="clsid:4C57C98A-E582-46E4-8FD8-5EBDC94CEA39">
        <param name="Image" value="include.php?bestand=testpagina2.mmap" />
        <a href="?install=viewer"><img src="../../../images/eng/MindManager_viewer_plugin_n.gif" width="419" height="300" class="mapimage" 

alt="Click on the MindManager map image to install the Viewer and view maps through a browser" /></a>
</object>

</body>
</html>


Wanneer ik de html code uitvoer dan geeft ie in de viewer (die wordt geladen) weer dat het bestand ongeldig is. Wanneer ik i.p.v. include.php?bestand=testpagina2.mmap een gewone naam invoer zoals testpagina2.mmap dan werkt het wel. Maar aangezien de map beveiligd moet zijn moet het door middel van php uit de beveiligde map gehaald worden.

Kan dit liggen aan de mimetype, want ik weet namelijk niet welke mimetype ik voor dit type bestand (.mmap) moet gebruiken?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Ik heb geen idee wat .mmap files zijn, jij weet dat het beste lijkt me (maw je geeft onvoldoende informatie) ;)

Verder moet je nog even heel goed kijken naar je security, als je dit online zet kan ik elke file lezen waartoe het filesysteem rechten geeft!

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

NMe

Quia Ego Sic Dico.

Erkens schreef op woensdag 29 november 2006 @ 23:03:
Verder moet je nog even heel goed kijken naar je security, als je dit online zet kan ik elke file lezen waartoe het filesysteem rechten geeft!
Om dit even wat uit te diepen: vul eens /etc/passwd of /etc/shadow in als bestandsnaam. ;)

'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.


  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Ik weet dat de beveiliging nog niet goed werkt, maar ik wil toch eerst hetgeen werkend krijgen alvorens ik verder ga met de beveiliging.

Het betreft onderstaande extensie:
http://filext.com/detaillist.php?extdetail=MMAP

Helaas staat daar geen Mime type bij. Betekent dit dat er geen mimetype voor is?

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

NMe

Quia Ego Sic Dico.

For those hosting map files who wish to avoid this problem for all MindManager files, we suggest adding the following line to the MIME settings on your web server:

application/vnd.mindjet.mindmanager .mmp .mmap .mmpt .mmat .mmmp .mmas
Dus: "application/vnd.mindjet.mindmanager" is het mime-type. :)

'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.


  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

-NMe- schreef op donderdag 30 november 2006 @ 13:32:
[...]

Om dit even wat uit te diepen: vul eens /etc/passwd of /etc/shadow in als bestandsnaam. ;)
tenzij je webserver als root draait (wat ik niet mag hopen) zou je /etc/shadow nooit moeten kunnen lezen :P

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Ok bedankt voor de mime type, maar wanneer ik onderstaande code uitvoer dan vraagt de browser om mindincluded.php te downloaden :s.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

// open the file in a binary mode
$name = $_GET['bestand'];
$fp = fopen($name, 'rb');

header("Content-Type: application/vnd.mindjet.mindmanager");
header("Content-Length: " . filesize($name)); 

// dump the picture and stop the script
fpassthru($fp);
exit;

?>


Hoe kan dit?

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

radem205 schreef op donderdag 30 november 2006 @ 19:30:
Ok bedankt voor de mime type, maar wanneer ik onderstaande code uitvoer dan vraagt de browser om mindincluded.php te downloaden :s.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

// open the file in a binary mode
$name = $_GET['bestand'];
$fp = fopen($name, 'rb');

header("Content-Type: application/vnd.mindjet.mindmanager");
header("Content-Length: " . filesize($name)); 

// dump the picture and stop the script
fpassthru($fp);
exit;

?>


Hoe kan dit?
dat is toch logisch? aangezien je zelf geen alternatieve naam opgeeft, met een klein beetje zoek werk had je dat zelf ook wel kunnen vinden, ik zie in je post iig niet iets van eigen inzet :/

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

NMe

Quia Ego Sic Dico.

Doet ie dat ook als je hem in je viewer bekijkt zoals in je startpost?

'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!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
Sorry dat ik misschien niet goed zoek, maar ik heb hier zeer weinig ervaring mee en weet dus ook niet precies waar ik op moet zoeken.

Wanneer ik onderstaande code uitvoer:

mindinclude.php
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

// open the file in a binary mode
$name = $_GET['bestand'];
$fp = fopen($name, 'rb');

header("Content-Type: application/vnd.mindjet.mindmanager .mmp .mmap .mmpt .mmat .mmmp .mmas");
header("Content-Length: " . filesize($name)); 
header("Content-Disposition: attachment; filename=".$_GET['bestand']);

// dump the picture and stop the script
fpassthru($fp);
exit;

?>


mindmap.php
code:
1
2
3
4
5
<!-- Mindjet Map Viewer Control Start -->
<object id="viewer" height="600" width="800" codebase="mindmap/MjMmViewer.cab" classid="clsid:4C57C98A-E582-46E4-8FD8-5EBDC94CEA39">
        <param name="Image" value="mindmapinclude.php?bestand=map.mmap" />
</object>
<!-- Mindjet Map Viewer Control End -->


Wanneer ik nu mindmap.php open dan geeft de viewer van mindjet aan dat het bestand niet valid is. Wanneer ik via mindinclude.php?bestand=map.mmap het bestand open met mindmanager (programma om deze maps te maken) dan geeft ie de volgende foutmeldingen:

Invalid file format, directory record is not found.
Document file (Document.xml) not found in archive.

Ik heb gezocht naar deze foutmeldingen, maar omdat bijna niemand het probeert zoals op mijn manier heb ik het antwoord nog niet gevonden.

Kan iemand mij helpen?

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

-NMe- schreef op donderdag 30 november 2006 @ 19:10:
[...]

Dus: "application/vnd.mindjet.mindmanager" is het mime-type. :)
Kijk nu eens goed wat jij van het mimetype hebt gemaakt en vergelijk dat eens met wat ik zei.

'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!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
-NMe- schreef op vrijdag 01 december 2006 @ 18:37:
[...]

Kijk nu eens goed wat jij van het mimetype hebt gemaakt en vergelijk dat eens met wat ik zei.
Ja die heb ik al geprobeerd. maar heb navraag gedaan bij mindjet en die gaven op dat de Mime type moest zijn: application/vnd.mindjet.mindmanager .mmp .mmap .mmpt .mmat .mmmp .mmas

Als ik jou mime type ingeef dan werkt het ook niet :(

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Die regel van jou is geen mimetype maar onderdeel van serverconfiguratie die aangeeft dat bestanden met de extensies .mmp .mmap .mmpt .mmat .mmmp .mmas herkend worden als application/vnd.mindjet.mindmanager.

Verder zie ik niet hoe het bestand fouten kan bevatten. Zitten er soms nog lege regels in je mindinclude.php file voor/boven de <?php of achter/na de ?>?

'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!

  • radem205
  • Registratie: Juni 2002
  • Laatst online: 02-02-2022
-NMe- schreef op vrijdag 01 december 2006 @ 18:50:
Die regel van jou is geen mimetype maar onderdeel van serverconfiguratie die aangeeft dat bestanden met de extensies .mmp .mmap .mmpt .mmat .mmmp .mmas herkend worden als application/vnd.mindjet.mindmanager.

Verder zie ik niet hoe het bestand fouten kan bevatten. Zitten er soms nog lege regels in je mindinclude.php file voor/boven de <?php of achter/na de ?>?
Shit man, dat was het! Er stond voor de <?php nog een enter :(. Dom dom. Harstikke bedankt!

Edit: Nu kan ik het bestand wel openen in Mindjet Manager, maar in de viewer geeft ie nog steeds een invalid file aan :(

[ Voor 9% gewijzigd door radem205 op 01-12-2006 18:57 ]

Pagina: 1