php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 10-10-2006, 19:54
handyaner
 Registrierter Benutzer
Links : Onlinestatus : handyaner ist offline
Registriert seit: Mar 2004
Beiträge: 37
handyaner ist zur Zeit noch ein unbeschriebenes Blatt
Standard [Funktion] mime_type_conent

hallo

leider ist die funktion mime_type_content nicht verüfgbar.
nun habe ich im inet eine aternative gefunden, die ich aber wegen deren kompexität, und fehlenden profi-php wissenn, nicht zurecht finde
PHP-Code:
<?php

/*

Magic mime file interpreter
Copyright (c) 2004 by Phillip Berndt
Version 1.0

*/

if(!function_exists('mime_content_type'))
{
function 
mime_content_type($file)
{
static 
$mimeData;

if(!isset(
$mimeData))
{
$mimeFile file('./magic.mime');

foreach(
$mimeFile as $mimeLine)
if(
$mimeLine[0] != '#' && trim($mimeLine))
{
if(
preg_match('/^(S+?)s+(S+?)s+(S+)(s+(.+?))?$/si'$mimeLine$regex_mimeDataSet))
{
$mimeDataSet['offset'] = str_replace('>'''$regex_mimeDataSet[1]);
$indicator $regex_mimeDataSet[3];
switch(
$regex_mimeDataSet[2])
{
case 
'string':
$indicator str_replace(' '' '$indicator);
$indicator str_replace('<''<'$indicator);
$indicator str_replace('>''>'$indicator);
$indicator str_replace('r'"r"$indicator);
$indicator str_replace('n'"n"$indicator);
$indicator preg_replace('/\\([0-9]{3})/e''chr($1);'$indicator);
break;
case 
'byte':
$indicator pack('c', @eval('return '.$indicator.';'));
break;
case 
'short':
$indicator pack('s', @eval('return '.$indicator.';'));
break;
case 
'beshort':
$indicator pack('n', @eval('return '.$indicator.';'));
break;
case 
'leshort':
$indicator pack('v', @eval('return '.$indicator.';'));
break;
case 
'belong':
$indicator pack('N', @eval('return '.$indicator.';'));
break;
case 
'lelong':
$indicator pack('V', @eval('return '.$indicator.';'));
break;
case 
'long':
$indicator pack('l', @eval('return '.$indicator.';'));
break;
}

$mimeDataSet['indicator'] = $indicator;
$mimeDataSet['mime'] = str_replace("r"''$regex_mimeDataSet[5]);

$mimeData[] = $mimeDataSet;
}
}
}

$file_content file_get_contents($file);

$retVal 'application/x-object';
foreach(
$mimeData as $key => $mimeTest)
{
$testStr substr($file_content$mimeTest['offset'], strlen($mimeTest['indicator']));

if(
$testStr == $mimeTest['indicator'])
{
$mimeType $mimeTest['mime'];
if(
$mimeType == '')
{
while(
$mimeType == '')
$mimeType $mimeData[++$key]['mime'];
}

$retVal $mimeType;
}
}

return 
$retVal;
}
}

echo(
mime_content_type('./testsvr.zip').'<br/>'); // Gibt application/x-zip aus
echo(mime_content_type('./Beispiel.jpg').'<br/>'); // Gibt image/jpeg aus
echo(mime_content_type('./winkel_wurf.fla').'<br/>'); // Gibt application/x-object aus
echo(mime_content_type('./bzcat.exe').'<br/>'); // Gibt application/x-dosexec
echo(mime_content_type('./option_group.htm').'<br/>'); // Gibt text/html aus
echo(mime_content_type(__FILE__).'<br/>'); // Gibt application/x-httpd-php-5 aus


?>
ich habe diese datei mime.php genannt.
nun habe ich über die variable $file eine csv datei angeben.
jedoch gibt der mir nur dann als echo folgendes zurück:
application/x-object
application/x-object
application/x-object
application/x-object
application/x-object
application/x-object

leide sind meine kenntnisse nicht so gut um dieses script zu verstehen, kan mir da bitte jmd. helfen?
Mit Zitat antworten
  #2 (permalink)  
Alt 10-10-2006, 20:18
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

wenn du mit
$extension=substr($dateiname,0,-(strrpos($dateiname,".")+1));
dateiendung findest, dann kannst du mit
mit if(isset($mimearray[$extension]))return $mimearray[$extension];
mimetype anzeigen lassen.
der array $mimearray muss du mit include von datei
http://www.php-resource.de/forum/att...&postid=477054
erreichen.
die oben genannte datei, kannst du nur in quellcode sehen.
copiere der quellcode und speichere als eine php- datei zum includen
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #3 (permalink)  
Alt 11-10-2006, 03:03
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@slava das ist schlichtweg falsch, hatte ich dir schon mal geschrieben!

extension!=mimetype
verdammtnochmal!
Mit Zitat antworten
  #4 (permalink)  
Alt 11-10-2006, 04:02
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von 3DMax
@slava das ist schlichtweg falsch, hatte ich dir schon mal geschrieben!

extension!=mimetype
verdammtnochmal!
ja das hast du mir schon gesagt.
Aber eine Textdatei wird nicht mit einer graphikprogramm gestartet, und wenn ich eine .zip datei in .psd umbenenne, dann pfeift Photoshop auf diese datei und sendet eine Fehlermeldung.
ich meine, dass es ausreichend ist, die daten durch ihre Endung zu mimetype zuordnen völlig ausreicht.
http://de.selfhtml.org/diverses/mimetypen.htm
und wenn die Endung unbekannt ist, dann machen wir application/x-object daraus.

eigentlich für csv ist
text/comma-separated-values
zugeordnet.
und für .htm komische weise
application/xhtml+xml als auch text/html
und am ende entscheidet die dazugehörige Program( nur durch die Endung) ob sie mit der datei zu recht kommt oder nicht.
Ich bin eigentlich nicht sturr und werde gerne meine Meinung zur MimeTypen ändern, wenn ich ein logische Argument zum extrahieren von mimeTypen aus Dateiinhalt und nicht aus der Endung finde.
Ich hoffe dass du mir dabei hilfst
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #5 (permalink)  
Alt 11-10-2006, 04:33
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Slava
Aber eine Textdatei wird nicht mit einer graphikprogramm gestartet, und wenn ich eine .zip datei in .psd umbenenne, dann pfeift Photoshop auf diese datei und sendet eine Fehlermeldung.
ich meine, dass es ausreichend ist, die daten durch ihre Endung zu mimetype zuordnen völlig ausreicht.
das musst du umgekehrt betrachten -> unbekannte extension und korrekter dateityp, bleiben wir bei php:
include ist es z.b. scheißegal was die datei für eine endung hat (php, zip, jpg, txt, etc. ..) alles wird durch php geparst und wenn es keine php-datei ist (egal welche endung) gibt es einen parse-error, so wie bei deinem bsp. mit photoshop.
nur wenn sich in dem file syntaktisch korrekter php-code befindet, wird dieser auch ausgeführt - und das ist die gefahr, wenn du nur die extension prüfst!

Zitat:
Original geschrieben von Slava
Ich bin eigentlich nicht sturr und werde gerne meine Meinung zur MimeTypen ändern, wenn ich ein logische Argument zum extrahieren von mimeTypen aus Dateiinhalt und nicht aus der Endung finde.
Ich hoffe dass du mir dabei hilfst
ein konkretes angriffszenario kann ich dir jetzt nicht nennen, aber es sollte aus o.g. gesichtspunkten deutlich werden und du kannst es dir bestimmt auch denken.
es lädt jemand "pöhsen" php-code getarnt als bild (jpg, gif, ...) auf den server. der server akzeptiert das file aufgrund der extension und später erfolgt das große erwachen/sterben des webmasters
Mit Zitat antworten
  #6 (permalink)  
Alt 11-10-2006, 05:32
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von 3DMax ein konkretes angriffszenario kann ich dir jetzt nicht nennen,
ok, ich hab's mal versucht:
PHP-Code:
echo '<image src="'.readfile("pic.jpg").'">';
// oder auch als image-src eine php-date, die das bild per readfile ausgibt, sollte jetzt keinen unterschied machen 
"pic.jpg" - nach dem upload wurde nur die dateiendung auf 'jpg' geprüft:
Code:
<SCRIPT>alert("XSS")</SCRIPT>
Mit Zitat antworten
  #7 (permalink)  
Alt 11-10-2006, 10:57
handyaner
 Registrierter Benutzer
Links : Onlinestatus : handyaner ist offline
Registriert seit: Mar 2004
Beiträge: 37
handyaner ist zur Zeit noch ein unbeschriebenes Blatt
Standard

und wie ist es mit dem script, das ich gepostet habe?
Mit Zitat antworten
  #8 (permalink)  
Alt 11-10-2006, 11:28
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von 3DMax
es lädt jemand "pöhsen" php-code getarnt als bild (jpg, gif, ...) auf den server. der server akzeptiert das file aufgrund der extension und später erfolgt das große erwachen/sterben des webmasters
welche Programm kommt darauf ein bild als PHP-code auszuführen?
Ich persönlich habe es sogar nie versucht, ein bild als php zu betracheten.

exsec(file_get_contents('bild.gif'))
oder
include('bild.gif');
gute Idee!
jtzt weis ich wie ich meine code verschlüsseln kann
<SCRIPT>alert("XSS")</SCRIPT>
ist einfach der schrei von dem Browser, das er mit deinem bild nicht zurecht kommt.
Zitat:
Original geschrieben von handyaner
und wie ist es mit dem script, das ich gepostet habe?
keine Ahnung!
ich würde das vermutlich mal Testen, aber mir fehlt ./magic.mime datei,
und auch

das hier
PHP-Code:
$indicator str_replace(' '' '$indicator);
$indicator str_replace('<''<'$indicator);
$indicator str_replace('>''>'$indicator);
$indicator str_replace('r'"r"$indicator);
$indicator str_replace('n'"n"$indicator); 
kann ich nicht ganz nachvollziehen.
__________________
Slava
bituniverse.com

Geändert von Slava (11-10-2006 um 11:35 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 11-10-2006, 17:38
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Slava
welche Programm kommt darauf ein bild als PHP-code auszuführen?
in kombination mit einer anderen lücke, wenn z.b. include-parameter, die per get kommen nicht ausreichend geprüft werden.
aber eigentlich brauch ich ja nicht zu antworten, wenn du das alles so lustig findest.

das xss-besp. funktioniert bei mir im ie und ff.
Mit Zitat antworten
  #10 (permalink)  
Alt 11-10-2006, 18:12
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von 3DMax
in kombination mit einer anderen lücke, wenn z.b. include-parameter, die per get kommen nicht ausreichend geprüft werden.
aber eigentlich brauch ich ja nicht zu antworten, wenn du das alles so lustig findest.

das xss-besp. funktioniert bei mir im ie und ff.
1)gibt es noch Leute, die ohne Kontrolle ein GET Parameter in include verwenden?

2)ja natürlich brauchst du nicht zu antworten, das ist doch kein Zwangsforum.
wenn ich mich ein wenig lüstig ausgedruckt habe, dann hat es einfach mit meiner guter Stimmung zu tun.
wenn du Eindruck bekommen hast, dass ich mich über dein Beitrag lüstig mache, dann sage ich mal: sorry! In keinem Fall, sonnst würde ich dich nicht bieten meine Meinung zur MimeTypen zu ändern

3)<SCRIPT>alert("XSS")</SCRIPT>

vermutlich ist das einfach eine normale reaktion von Browser.
Er erwartet ein Bild von einem modul, der die Bilder bereitstellt und bekommt statt einem Bild eine exception.
Jetzt will er natürlich ein Allarm schlagen, der im form von einem alert kommt.

4) und jetzt noch ein mal lüstig
__________________
Slava
bituniverse.com
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:47 Uhr.