2016-08-05 16 views
-3

Für die Wissenschaft.Ausnutzen von fopen, wenn der Eingang eine Erweiterung hat

Sagen wir, ich habe den folgenden Code:

<?php 
$filename = $_GET['filename'] . '.csv'; 
$handle = @fopen($filename); 

Wir wissen, dass das Null-Byte-Exploit ist längst vorbei, aber ist es möglich, um die oben Anfügen von CSV zu bekommen, um eine Datei zu lesen mit eine andere Erweiterung? Sehr kreative Seelen existieren.

Das Lesen von entfernten Dateien funktioniert, Dateiname = http://example.com/some.csv (.csv wird automatisch angehängt).

+0

Exploit in welcher Weise ist? Und was machst du mit dieser Datei/Handle? – Eiko

+1

Ich frage mich, würde 'example.pdf? Ommit.csv' funktionieren? .. –

+0

Ah, ich hätte das hinzufügen sollen. Der Handler liest die Datei als CSV-Datei, aber dieser Prozess kann Informationen ausspucken, selbst wenn es sich bei einer Datei nicht um eine tatsächliche CSV-Datei (Komma oder Semikolon) handelt. – Michael

Antwort

1

Wenn Sie http://example.com/some.pdf?csv abfragen, fopen wird versuchen, die PDF-Datei zu sammeln ...

Rather regex verwenden zu validieren $_GET (Sie sollten immer bestätigen Sie Ihre Eingabe):

/(\.csv)$/g wird Ihnen helfen, Überprüfen Sie, ob die Erweiterung .csv

+0

Guter Punkt, das ist definitiv ein Weg, um es zu umgehen. – Michael