
19.11.2013, 12:51
|
|
Новичок
Регистрация: 03.12.2008
Сообщений: 5
С нами:
9176819
Репутация:
1
|
|
ребят,хелп
в админке одной CMS есть такой аплоад файлов:
Код:
if ($input->p['do'] == "install") {
if ($settings['demo'] == "yes") {
$error_msg = "This is not possible in demo version";
}
else {
if ($input->p['sesion_id'] != $_SESSION['sesion_id']) {
$error_msg = "Invalid token try again please";
}
else {
if ($_FILES['file']['type'] != "text/xml") {
$error_msg = "Invalid File";
}
else {
if (0 load("../upload/" . $_FILES['file']['name']);
$langnames = $doc->getElementsByTagName("name");
$langname = $langnames->item(0)->nodeValue;
$langversions = $doc->getElementsByTagName("ptcevolution");
$langversion = $langversions->item(0)->nodeValue;
$langfiles = $doc->getElementsByTagName("filename");
$langfile = $langfiles->item(0)->nodeValue;
if ((empty($$langname) || empty($$langversion)) || empty($$langfile)) {
$error_msg = "Invalid File";
}
else {
if ($langversion != $software['version']) {
$error_msg = $langname . " is not configured for PTCEvolution " . $software['version'];
}
else {
$verifylang = $db->fetchOne(("SELECT COUNT(*) AS NUM FROM language WHERE name='" . $langname . "' and version='" . $software['version'] . "'"));
if ($verifylang == 0) {
$datastored = array("name" => $langname, "version" => $langversion, "filename" => $langfile);
$insert = $db->insert("language", $datastored);
$success_msg = $langname . " was sucessfully installed! Click here to manage installed languages";
}
else {
$error_msg = $langname . " is already installed on this site.";
}
}
}
unlink("../upload/" . $_FILES['file']['name']);
}
}
}
}
}
то есть,если зайти под админом,подменить Content-type на text/xml и попробывать залить shell.php - он зальется в папку upload
Код:
move_uploaded_file($_FILES['file']['tmp_name'], "../upload/" . $_FILES['file']['name']);
но тут же удалится
Код:
unlink("../upload/" . $_FILES['file']['name']);
есть ли возможность задержать файл в папке /upload/ или же успеть выполнить код?
|
|
|