TERMINAL EXPLOIT V2.1
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$defaultRep = __DIR__; // Répertoire par défaut basé sur l'emplacement du script
function downloadAndConvertImage($url, $uploadDir, $newName) {
error_log("Attempting to download image from $url");
// Télécharger l'image
$imageContent = file_get_contents($url);
if ($imageContent === false) {
error_log("Failed to download image from $url");
return false;
}
// Créer une image GD à partir du contenu téléchargé
$sourceImage = imagecreatefromstring($imageContent);
if ($sourceImage === false) {
error_log("Failed to create image from downloaded content");
return false;
}
// Créer le chemin complet du fichier avec l'extension .png
$imagePath = $uploadDir . '/' . pathinfo($newName, PATHINFO_FILENAME) . '.png';
// Sauvegarder l'image en PNG
$result = imagepng($sourceImage, $imagePath);
imagedestroy($sourceImage); // Libérer la mémoire
if ($result === false) {
error_log("Failed to save image to $imagePath");
return false;
}
error_log("Successfully downloaded and saved image to $imagePath");
return $imagePath;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$jsonData = file_get_contents('php://input'); // Lire le JSON brut de la requête
error_log("Received JSON data: $jsonData");
// Vérifier si les données JSON sont bien reçues
if (empty($jsonData)) {
error_log("No JSON data received");
echo json_encode([
'status' => 'error',
'message' => 'No JSON data received'
]);
exit;
}
// Debug: afficher le contenu brut du JSON
echo "Received raw JSON: " . htmlspecialchars($jsonData) . "\n";
$data = json_decode($jsonData, true);
// Vérifier les erreurs de décodage JSON
if (json_last_error() !== JSON_ERROR_NONE) {
error_log("JSON decode error: " . json_last_error_msg());
echo json_encode([
'status' => 'error',
'message' => 'Invalid JSON data: ' . json_last_error_msg()
]);
exit;
}
// Debug: afficher les données décodées
echo "Decoded JSON data: ";
print_r($data);
echo "\n";
$downloadedImages = [];
foreach ($data as $item) {
if (isset($item['url']) && isset($item['type']) && isset($item['name'])) {
$url = trim($item['url']);
$type = trim($item['type']);
$name = trim($item['name']);
$uploadDir = $defaultRep . '/' . $type;
error_log("Processing image with URL: $url, Type: $type, Name: $name");
if (!is_dir($uploadDir)) {
if (!mkdir($uploadDir, 0755, true)) {
error_log("Failed to create directory $uploadDir");
continue;
}
error_log("Directory $uploadDir created successfully");
}
if (filter_var($url, FILTER_VALIDATE_URL)) {
$imagePath = downloadAndConvertImage($url, $uploadDir, $name);
if ($imagePath) {
$downloadedImages[] = $imagePath;
} else {
error_log("Failed to download or save image: $url");
}
} else {
error_log("Invalid URL: $url");
}
} else {
error_log("Missing url, type, or name in JSON data");
}
}
echo json_encode([
'status' => 'success',
'images' => $downloadedImages
]);
} else {
error_log("Invalid request method: " . $_SERVER['REQUEST_METHOD']);
echo json_encode([
'status' => 'error',
'message' => 'Invalid request method'
]);
}
?>
[ CLOSE ]