Upload-Labs (Level 1-21 ausführliches Tutorial) [leicht verständlich] [4D-Tutorial]

Inhaltsverzeichnis

Mind-Mapping

Übungsplatz:

Notiz:

Wissenspunkt

Pass-01

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-02

Wissenspunkte:

Code:

Hinweis: 

Ideen zur Problemlösung:

Pass-03 (dieses Level muss selbst Upload-Labs erstellen)

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-04

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-05 (Es wird empfohlen, auf diesem Computer erstellte Upload-Labs zu verwenden)

Code:

Hinweis:

Ideen zur Problemlösung:

Laden Sie zuerst .user.ini hoch

Laden Sie phpinfo.jpg erneut hoch

Readme.php-Datei anzeigen

Pass-06

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-07

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-08

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-09

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-10 

Code:

 Hinweis:

Ideen zur Problemlösung:

Pass-11

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-12

Code:

 Hinweis:

Ideen zur Problemlösung:

Pass-13

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-14

Code:

Hinweis: 

Ideen zur Problemlösung:

Pass-15-17

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-18

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-19

Code:

Hinweis:

Ideen zur Problemlösung:

Pass-20

Code:

Hinweis:

Pass-21

Code:

Hinweis:

Ideen zur Problemlösung:


Mind-Mapping

Teilen von Mindmaps

Link: https://pan.baidu.com/s/1N4mvnQhawhYKRHNwJDEAMw 
Extraktionscode: iu9g 

Übungsplatz:

upload-labs (20 Ebenen des alten Schießstandes) 1-2 nutzt den alten Schießstand

upload-labs (neuer Schießstand 21 Level) 3-21 Level nutzen den neuen Schießstand

Notiz:

Kann <?php phpinfo();?> ausführen

Sie können <?php eval($_POST['cmd'])?> einen Trojaner mit einem Satz ausführen

Dieser Artikel verwendet <?php phpinfo();?> hauptsächlich der Einfachheit halber

Wissenspunkt

$_FILES[Name des eingereichten Formulars]

[name]: Der erhaltene Dateiname

[Typ]: Erhaltener Dateityp (MIMETYPE)

[tmp_name]: Pfad, in dem Dateien temporär gespeichert werden

[error]: Fehlermeldung zum Hochladen der Datei (wenn sie leer ist, war der Upload erfolgreich)

[Größe]: Die Größe der hochgeladenen Datei

Move_uploaded_file (die Datei, die verschoben werden muss, der Ort, an den verschoben werden soll)

Strrchr (angegebener String, übereinstimmendes Zeichen) – der Zeiger zeigt auf die Position des angegebenen Zeichens und nimmt den folgenden Wert an

Trim() -- entfernt führende und nachgestellte Leerzeichen aus einer Zeichenfolge

Rtrim() -- rechte Leerzeichen entfernen

Ltrim() -- entfernt Leerzeichen

Strtolower() – wandelt einen String in Kleinbuchstaben um

Str_ireplace --(die konvertierte Zeichenfolge, die ersetzte Zeichenfolge, die zu findende Zeichenfolge)

Suchen Sie die zu ersetzende Zeichenfolge in der zu suchenden Zeichenfolge und ersetzen Sie sie durch die angegebene Zeichenfolge

Pass-01

Code:

function checkFile() {
    var file = document.getElementsByName('upload_file')[0].value;
    if (file == null || file == "") {
        alert("请选择要上传的文件!");
        return false;
    }
    //定义允许上传的文件类型
    var allow_ext = ".jpg|.png|.gif";
    //提取上传文件的类型
    var ext_name = file.substring(file.lastIndexOf("."));
    //判断上传文件类型是否允许上传
    if (allow_ext.indexOf(ext_name + "|") == -1) {
        var errMsg = "该文件不允许上传,请上传" + allow_ext + "类型的文件,当前文件类型为:" + ext_name;
        alert(errMsg);
        return false;
    }
}

Hinweis:

Dieser Pass verwendet js, um illegale Bilder auf der Client-Seite zu überprüfen!

Ideen zur Problemlösung:

Plugin installieren Javascript deaktivieren

Schreiben Sie eine aus einem Satz bestehende Trojaner-Datei shell.php

Schließen Sie die js-Upload-Datei gemäß der Aufforderung, um zu überprüfen, ob die Upload-Datei erfolgreich war

Verwenden Sie Ameisenschwert, um sich per Passwort zu verbinden

Pass-02

Wissenspunkte:

Allgemeine Klassifikation MIME TYPE

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' . $_FILES['upload_file']['name']            
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '文件类型不正确,请重新上传!';
        }
    } else {
        $msg = UPLOAD_PATH.'文件夹不存在,请手工创建!';
    }
}

Hinweis: 

Dieser Pass prüft serverseitig den MIME des Datenpakets!

Ideen zur Problemlösung:

Trojaner schreiben

PHP-Datei hochladen

MIMETYPE umgehen

Änderungstyp der Burpsuite-Paketerfassung

Freigabepakete weiterleiten

Bildlink öffnen

Es wurde eine PHP-Datei gefunden, die den Upload durchführen kann

Pass-03 (dieses Level muss selbst Upload-Labs erstellen)

Upload-Labs-Ressourcen

Link: https://pan.baidu.com/s/1uOM7sSAFusLk-973SkZlCw 
Extraktionscode: ctyl 

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array('.asp','.aspx','.php','.jsp');
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //收尾去空

        if(!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;            
            if (move_uploaded_file($temp_file,$img_path)) {
                 $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '不允许上传.asp,.aspx,.php,.jsp后缀文件!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

Hinweis:

Dieser Pass verbietet das Hochladen von Dateien mit der Endung .asp|.aspx|.php|.jsp!

Ideen zur Problemlösung:

Fügen Sie Code unter der Datei httpd.conf hinzu

AddType application/x-httpd-php .php .phtml .php3 .php4

Dieser Code bedeutet, dass .php, .php3, .php4 als php-Dateien behandelt werden

phpinfo.php4 hochladen

Bildlink öffnen

Sie können die laufende PHP-Datei anzeigen

Pass-04

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".ini");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //收尾去空

        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

Hinweis:

Dieser Pass verbietet das Hochladen von .php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html| .Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp |.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|. swf-Suffix-Datei!

Ideen zur Problemlösung:

Laden Sie die .htaccess-Datei hoch

Führen Sie jpg-Dateien als php-Dateien aus

<FilesMatch 'phpinfo.jpg'>
SetHandler application/x-httpd-php
</FilesMatch>

Laden Sie dann phpinfo.jpg hoch (ändern Sie das Suffix von phpinfo.php in phpinfo.jpg)

Verbindung öffnen

Pass-05 (Es wird empfohlen, auf diesem Computer erstellte Upload-Labs zu verwenden)

Upload-Labs-Ressourcen

Link: https://pan.baidu.com/s/1uOM7sSAFusLk-973SkZlCw 
Extraktionscode: ctyl 

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

Hinweis:

Im Upload-Verzeichnis befindet sich eine php-Datei (readme.php).

Ideen zur Problemlösung:

Laden Sie zuerst .user.ini hoch

Der Geltungsbereich ist der aktuelle Ordner und Unterdateien im aktuellen Ordner; enthält die angegebene Datei, die auf der Seite angezeigt wird

.user.ini-Inhalt

Auto_prepend_file=phpinfo.jpg //在页面上部显示

Auto_prepend_file=phpinfo.jpg //在页面底部部显示

Laden Sie phpinfo.jpg erneut hoch

Readme.php-Datei anzeigen

Pass-06

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空

        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

Hinweis:

Dieser Pass verbietet das Hochladen von .php|.php5|.php4|.php3|.php2|php1|.html|.htm|.phtml|.pHp|.pHp5|.pHp4|.pHp3|.pHp2|pHp1|.Html| .Htm|.pHtml|.jsp|.jspa|.jspx|.jsw|.jsv|.jspf|.jtml|.jSp|.jSpx|.jSpa|.jSw|.jSv|.jSpf|.jHtml|.asp |.aspx|.asa|.asax|.ascx|.ashx|.asmx|.cer|.aSp|.aSpx|.aSa|.aSax|.aScx|.aShx|.aSmx|.cEr|.sWf|. swf|.htaccess-Suffix-Datei!

Ideen zur Problemlösung:

Nach dem Vergleich mit der fünften Ebene haben wir festgestellt, dass es keinen Filterfall gibt

fehlender Code

 $file_ext = strtolower($file_ext); //转换为小写

Also ändern wir die hochgeladene Dateiendung phpinfo.Php

phpinfo.php hochladen

Klicken Sie mit der rechten Maustaste, um den Link zu öffnen

Pass-07

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");
        $file_name = $_FILES['upload_file']['name'];
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file,$img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件不允许上传';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

Hinweis:

Keine führende und nachfolgende Ausblendung

fehlender Code

$file_ext = trim($file_ext); //首尾去空

Wir können den Weltraum umgehen

Ideen zur Problemlösung:

Laden Sie phpinfo.php für die BP-Erfassung hoch

Klicken Sie nach dem erfolgreichen Hochladen mit der rechten Maustaste, um den Link zu öffnen

Pass-08

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

Hinweis:

fehlender Code

 $file_name = deldot($file_name)

 Entfernen Sie nicht den Punkt nach dem Ende des Dateinamens

Machen Sie also eine Punktumgehung

Ideen zur Problemlösung:

Laden Sie die Datei phpinfo.php für die BP-Erfassung hoch

Klicken Sie nach dem erfolgreichen Hochladen mit der rechten Maustaste, um den Link zu öffnen

Pass-09

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = trim($file_ext); //首尾去空
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.date("YmdHis").rand(1000,9999).$file_ext;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

Hinweis:

fehlender Code

$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA

Fügen Sie ::$DATA hinzu, um das Suffix hochzuladen

::$DATA ist eine Stream-Übertragung, die die folgenden Daten als Stream behandeln kann, ähnlich wie .space

Ideen zur Problemlösung:

Laden Sie phpinfo.php für die BP-Paketerfassung hoch und ändern Sie Daten

Klicken Sie mit der rechten Maustaste, um den Link zu öffnen

Entfernen Sie ::$DATA aus der URL

Pass-10 

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3",".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess",".ini");
        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = deldot($file_name);//删除文件名末尾的点
        $file_ext = strrchr($file_name, '.');
        $file_ext = strtolower($file_ext); //转换为小写
        $file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
        $file_ext = trim($file_ext); //首尾去空
        
        if (!in_array($file_ext, $deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH.'/'.$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $is_upload = true;
            } else {
                $msg = '上传出错!';
            }
        } else {
            $msg = '此文件类型不允许上传!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

 Hinweis:

Die Funktion deldot() erkennt von hinten nach vorne und setzt ihre Erkennung fort, wenn sie den ersten Punkt am Ende erkennt, stoppt jedoch, wenn sie auf ein Leerzeichen trifft

Ideen zur Problemlösung:

Laden Sie die Datei phpinfo.php hoch, erfassen Sie das BP-Paket und ändern Sie die Daten

Öffnen Sie nach dem Hochladen der Datei den Link per E-Mail

Pass-11

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess","ini");

        $file_name = trim($_FILES['upload_file']['name']);
        $file_name = str_ireplace($deny_ext,"", $file_name);
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = UPLOAD_PATH.'/'.$file_name;        
        if (move_uploaded_file($temp_file, $img_path)) {
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

Hinweis:

Der Suffix-Name der abgefangenen Datei stimmt mit dem oben deaktivierten Suffix-Namen überein. Wenn Sie dasselbe möchten, konvertieren Sie ihn in einen leeren

Alle verwenden das Doppelschreib-Suffix zum Umgehen

Ideen zur Problemlösung:

Laden Sie die Datei phpinfo.pphphp hoch

Klicken Sie nach dem erfolgreichen Hochladen mit der rechten Maustaste, um den Link zu öffnen

Pass-12

Code:

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = '上传出错!';
        }
    } else{
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

 Hinweis:

Wenn die Verarbeitung von Daten 00 erreicht, wird die Verarbeitung als abgeschlossen angesehen

PHP-Version kleiner als 5.3

Magic_quotes_gpc=Aus

Ideen zur Problemlösung:

Laden Sie die Datei phpinfo.jpg hoch und verwenden Sie BP, um Pakete zu erfassen, um die Daten zu ändern

Klicken Sie nach dem erfolgreichen Hochladen mit der rechten Maustaste, um den Link zu öffnen

Pass-13

Code:

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $ext_arr = array('jpg','png','gif');
    $file_ext = substr($_FILES['upload_file']['name'],strrpos($_FILES['upload_file']['name'],".")+1);
    if(in_array($file_ext,$ext_arr)){
        $temp_file = $_FILES['upload_file']['tmp_name'];
        $img_path = $_POST['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;

        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传失败";
        }
    } else {
        $msg = "只允许上传.jpg|.png|.gif类型文件!";
    }
}

Hinweis:

Wenn die Verarbeitung von Daten 00 erreicht, wird die Verarbeitung als abgeschlossen angesehen

PHP-Version kleiner als 5.3

Magic_quotes_gpc=Aus

Ideen zur Problemlösung:

Laden Sie die Datei phpinfo.jpg hoch und verwenden Sie BP, um Pakete zu erfassen, um die Daten zu ändern

Ändern Sie das Leerzeichen (20) in (00) zum Abschneiden

 Klicken Sie nach dem erfolgreichen Hochladen mit der rechten Maustaste, um den Link zu öffnen

Pass-14

Code:

function getReailFileType($filename){
    $file = fopen($filename, "rb");
    $bin = fread($file, 2); //只读2字节
    fclose($file);
    $strInfo = @unpack("C2chars", $bin);    
    $typeCode = intval($strInfo['chars1'].$strInfo['chars2']);    
    $fileType = '';    
    switch($typeCode){      
        case 255216:            
            $fileType = 'jpg';
            break;
        case 13780:            
            $fileType = 'png';
            break;        
        case 7173:            
            $fileType = 'gif';
            break;
        default:            
            $fileType = 'unknown';
        }    
        return $fileType;
}

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $file_type = getReailFileType($temp_file);

    if($file_type == 'unknown'){
        $msg = "文件未知,上传失败!";
    }else{
        $img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").".".$file_type;
        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传出错!";
        }
    }
}

Hinweis: 

Die Dateikopfkennung des Bildes im Jpg-Format: FFD8 beginnt mit FFD9 und endet

Bilddatei-Header-Identifikation im Png-Format: 89 20 4E 47 0D 0A

Dateikopfkennung von Bildern im Gif-Format: GIF89a GIF87a

In diesem Level gibt es eine Dateieinschluss-Schwachstelle, Incould kann die eingeschlossene Datei als PHP-Code ausführen

Ideen zur Problemlösung:

Laden Sie phpinfo.gif hoch, erfassen Sie BP und ändern Sie Daten

Nachdem die Datei erfolgreich hochgeladen wurde, klicken Sie mit der rechten Maustaste, um den Link zu öffnen

Pass-15-17

Die Ebenen 15-17 können ausgenutzt werden, um Lücken in Dateien zu enthalten und Bildcodes hochzuladen

Code:

function isImage($filename){
    $types = '.jpeg|.png|.gif';
    if(file_exists($filename)){
        $info = getimagesize($filename);
        $ext = image_type_to_extension($info[2]);
        if(stripos($types,$ext)>=0){
            return $ext;
        }else{
            return false;
        }
    }else{
        return false;
    }
}

$is_upload = false;
$msg = null;
if(isset($_POST['submit'])){
    $temp_file = $_FILES['upload_file']['tmp_name'];
    $res = isImage($temp_file);
    if(!$res){
        $msg = "文件未知,上传失败!";
    }else{
        $img_path = UPLOAD_PATH."/".rand(10, 99).date("YmdHis").$res;
        if(move_uploaded_file($temp_file,$img_path)){
            $is_upload = true;
        } else {
            $msg = "上传出错!";
        }
    }
}

Hinweis:

Exploiting-Datei enthält Schwachstellen zum Hochladen von Bildcode

Ideen zur Problemlösung:

Bildcode erstellen

Laden Sie den generierten Bildcode 888.jpg hoch

Klicken Sie nach dem erfolgreichen Hochladen mit der rechten Maustaste, um den Link zu öffnen

Pass-18

Code:

//index.php
$is_upload = false;
$msg = null;
if (isset($_POST['submit']))
{
    require_once("./myupload.php");
    $imgFileName =time();
    $u = new MyUpload($_FILES['upload_file']['name'], $_FILES['upload_file']['tmp_name'], $_FILES['upload_file']['size'],$imgFileName);
    $status_code = $u->upload(UPLOAD_PATH);
    switch ($status_code) {
        case 1:
            $is_upload = true;
            $img_path = $u->cls_upload_dir . $u->cls_file_rename_to;
            break;
        case 2:
            $msg = '文件已经被上传,但没有重命名。';
            break; 
        case -1:
            $msg = '这个文件不能上传到服务器的临时文件存储目录。';
            break; 
        case -2:
            $msg = '上传失败,上传目录不可写。';
            break; 
        case -3:
            $msg = '上传失败,无法上传该类型文件。';
            break; 
        case -4:
            $msg = '上传失败,上传的文件过大。';
            break; 
        case -5:
            $msg = '上传失败,服务器已经存在相同名称文件。';
            break; 
        case -6:
            $msg = '文件无法上传,文件不能复制到目标目录。';
            break;      
        default:
            $msg = '未知错误!';
            break;
    }
}

//myupload.php
class MyUpload{
......
......
...... 
  var $cls_arr_ext_accepted = array(
      ".doc", ".xls", ".txt", ".pdf", ".gif", ".jpg", ".zip", ".rar", ".7z",".ppt",
      ".html", ".xml", ".tiff", ".jpeg", ".png" );

......
......
......  
  /** upload()
   **
   ** Method to upload the file.
   ** This is the only method to call outside the class.
   ** @para String name of directory we upload to
   ** @returns void
  **/
  function upload( $dir ){
    
    $ret = $this->isUploadedFile();
    
    if( $ret != 1 ){
      return $this->resultUpload( $ret );
    }

    $ret = $this->setDir( $dir );
    if( $ret != 1 ){
      return $this->resultUpload( $ret );
    }

    $ret = $this->checkExtension();
    if( $ret != 1 ){
      return $this->resultUpload( $ret );
    }

    $ret = $this->checkSize();
    if( $ret != 1 ){
      return $this->resultUpload( $ret );    
    }
    
    // if flag to check if the file exists is set to 1
    
    if( $this->cls_file_exists == 1 ){
      
      $ret = $this->checkFileExists();
      if( $ret != 1 ){
        return $this->resultUpload( $ret );    
      }
    }

    // if we are here, we are ready to move the file to destination

    $ret = $this->move();
    if( $ret != 1 ){
      return $this->resultUpload( $ret );    
    }

    // check if we need to rename the file

    if( $this->cls_rename_file == 1 ){
      $ret = $this->renameFile();
      if( $ret != 1 ){
        return $this->resultUpload( $ret );    
      }
    }
    
    // if we are here, everything worked as planned :)

    return $this->resultUpload( "SUCCESS" );
  
  }
......
......
...... 
};

Hinweis:

Nach dem Hochladen der Datei wird der Suffixname beurteilt und bei Gleichheit umbenannt. wir können bedingt Rennen fahren

Ideen zur Problemlösung:

Laden Sie Dateien für das BP-Sprengen hoch

Die hochgeladene PHP-Datei wird angezeigt, verschwindet aber schnell wieder

Pass-19

Code:

//index.php
$is_upload = false;
$msg = null;
if (isset($_POST['submit']))
{
    require_once("./myupload.php");
    $imgFileName =time();
    $u = new MyUpload($_FILES['upload_file']['name'], $_FILES['upload_file']['tmp_name'], $_FILES['upload_file']['size'],$imgFileName);
    $status_code = $u->upload(UPLOAD_PATH);
    switch ($status_code) {
        case 1:
            $is_upload = true;
            $img_path = $u->cls_upload_dir . $u->cls_file_rename_to;
            break;
        case 2:
            $msg = '文件已经被上传,但没有重命名。';
            break; 
        case -1:
            $msg = '这个文件不能上传到服务器的临时文件存储目录。';
            break; 
        case -2:
            $msg = '上传失败,上传目录不可写。';
            break; 
        case -3:
            $msg = '上传失败,无法上传该类型文件。';
            break; 
        case -4:
            $msg = '上传失败,上传的文件过大。';
            break; 
        case -5:
            $msg = '上传失败,服务器已经存在相同名称文件。';
            break; 
        case -6:
            $msg = '文件无法上传,文件不能复制到目标目录。';
            break;      
        default:
            $msg = '未知错误!';
            break;
    }
}

//myupload.php
class MyUpload{
......
......
...... 
  var $cls_arr_ext_accepted = array(
      ".doc", ".xls", ".txt", ".pdf", ".gif", ".jpg", ".zip", ".rar", ".7z",".ppt",
      ".html", ".xml", ".tiff", ".jpeg", ".png" );

......
......
......  
  /** upload()
   **
   ** Method to upload the file.
   ** This is the only method to call outside the class.
   ** @para String name of directory we upload to
   ** @returns void
  **/
  function upload( $dir ){
    
    $ret = $this->isUploadedFile();
    
    if( $ret != 1 ){
      return $this->resultUpload( $ret );
    }

    $ret = $this->setDir( $dir );
    if( $ret != 1 ){
      return $this->resultUpload( $ret );
    }

    $ret = $this->checkExtension();
    if( $ret != 1 ){
      return $this->resultUpload( $ret );
    }

    $ret = $this->checkSize();
    if( $ret != 1 ){
      return $this->resultUpload( $ret );    
    }
    
    // if flag to check if the file exists is set to 1
    
    if( $this->cls_file_exists == 1 ){
      
      $ret = $this->checkFileExists();
      if( $ret != 1 ){
        return $this->resultUpload( $ret );    
      }
    }

    // if we are here, we are ready to move the file to destination

    $ret = $this->move();
    if( $ret != 1 ){
      return $this->resultUpload( $ret );    
    }

    // check if we need to rename the file

    if( $this->cls_rename_file == 1 ){
      $ret = $this->renameFile();
      if( $ret != 1 ){
        return $this->resultUpload( $ret );    
      }
    }
    
    // if we are here, everything worked as planned :)

    return $this->resultUpload( "SUCCESS" );
  
  }
......
......
...... 
};

Hinweis:

Bestimmen Sie nach dem Hochladen der Datei den Suffixnamen, verschieben Sie die Datei, um sie umzubenennen

Apache-Parsing-Schwachstelle

1.php.zxc.zxc.zxc.zxc.zxc

Apache parst von rechts nach links, wenn er es nicht parsen kann, fahren Sie mit dem Parsen des nächsten fort

Laden Sie phpinfo.php.7z hoch

Ideen zur Problemlösung:

Laden Sie phpinfo.php.7z für BP-Blasting hoch

Datei wurde hochgeladen

Pass-20

Code:

$is_upload = false;
$msg = null;
if (isset($_POST['submit'])) {
    if (file_exists(UPLOAD_PATH)) {
        $deny_ext = array("php","php5","php4","php3","php2","html","htm","phtml","pht","jsp","jspa","jspx","jsw","jsv","jspf","jtml","asp","aspx","asa","asax","ascx","ashx","asmx","cer","swf","htaccess");

        $file_name = $_POST['save_name'];
        $file_ext = pathinfo($file_name,PATHINFO_EXTENSION);

        if(!in_array($file_ext,$deny_ext)) {
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' .$file_name;
            if (move_uploaded_file($temp_file, $img_path)) { 
                $is_upload = true;
            }else{
                $msg = '上传出错!';
            }
        }else{
            $msg = '禁止保存为该类型文件!';
        }

    } else {
        $msg = UPLOAD_PATH . '文件夹不存在,请手工创建!';
    }
}

Hinweis:

Laden Sie Dateien direkt hoch, um Leerzeichen zu umgehen

Klicken Sie mit der rechten Maustaste, um den Link nach dem Hochladen der Datei zu öffnen

Pass-21

Code:

$is_upload = false;
$msg = null;
if(!empty($_FILES['upload_file'])){
    //检查MIME
    $allow_type = array('image/jpeg','image/png','image/gif');
    if(!in_array($_FILES['upload_file']['type'],$allow_type)){
        $msg = "禁止上传该类型文件!";
    }else{
        //检查文件名
        $file = empty($_POST['save_name']) ? $_FILES['upload_file']['name'] : $_POST['save_name'];
        if (!is_array($file)) {
            $file = explode('.', strtolower($file));
        }

        $ext = end($file);
        $allow_suffix = array('jpg','png','gif');
        if (!in_array($ext, $allow_suffix)) {
            $msg = "禁止上传该后缀文件!";
        }else{
            $file_name = reset($file) . '.' . $file[count($file) - 1];
            $temp_file = $_FILES['upload_file']['tmp_name'];
            $img_path = UPLOAD_PATH . '/' .$file_name;
            if (move_uploaded_file($temp_file, $img_path)) {
                $msg = "文件上传成功!";
                $is_upload = true;
            } else {
                $msg = "文件上传失败!";
            }
        }
    }
}else{
    $msg = "请选择要上传的文件!";
}

Hinweis:

Der MIME TYPE-Typ muss zum Spleißen geändert werden

Ideen zur Problemlösung:

Laden Sie Dateien hoch, erfassen Sie BP-Pakete und ändern Sie Daten

Nachdem die Datei erfolgreich hochgeladen wurde, klicken Sie mit der rechten Maustaste, um den Link zu öffnen

Ich denke du magst

Origin blog.csdn.net/m0_63127854/article/details/126452541
Empfohlen
Rangfolge