SQL Injection
SQL Injection
SQL Injection
Plantilla : welcome.php
<?php
session_start();
if (isset($_GET['logout'])) {
// Eliminar todas las variables de sesión
session_unset();
// Destruir la sesión
session_destroy();
// Redirigir al usuario a la página de inicio de sesión
header("Location: index.php");
exit(); // Asegurar que el script se detenga después de redirigir
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bienvenido</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
text-align: center;
margin-top: 100px;
}
.welcome-box {
width: 300px;
margin: 0 auto;
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
.welcome-box h2 {
margin-bottom: 20px;
}
.welcome-box a {
display: block;
margin-bottom: 10px;
padding: 10px;
background-color: #4CAF50;
color: white;
text-decoration: none;
border-radius: 5px;
}
</style>
</head>
<body>
<div class="welcome-box">
<h2>Bienvenido, <?php echo $_SESSION['username']; ?></h2>
<a href="registro_equipo.php">Registrar Equipos</a>
<a href="listar_equipos.php">Listar Equipos</a>
<a href="consultar_equipo.php">Consultar Equipos</a>
<p><a href="welcome.php?logout=true">Cerrar sesión</a></p>
</div>
</body>
</html>
Plantilla: index.php
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Iniciar Sesión</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
text-align: center;
margin-top: 100px;
}
.login-box {
width: 300px;
margin: 0 auto;
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
.login-box h2 {
margin-bottom: 20px;
}
.login-box input[type="text"],
.login-box input[type="password"] {
width: calc(100% - 20px);
padding: 10px;
margin-bottom: 15px;
border: 1px solid #ccc;
border-radius: 5px;
}
.login-box input[type="submit"] {
background-color: #4CAF50;
color: white;
border: none;
padding: 10px 20px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
border-radius: 5px;
cursor: pointer;
}
.error-message {
color: red;
font-weight: bold;
}
</style>
</head>
<body>
<div class="login-box">
<h2>Iniciar Sesión</h2>
<?php
// Mostrar mensaje de error si existe
if (isset($_GET['error']) && $_GET['error'] == 'true') {
echo '<p class="error-message">Usuario o contraseña incorrectos. Inténtelo de nuevo.</p>';
}
?>
<form action="login.php" method="POST">
<label for="username">Usuario:</label><br>
<input type="text" id="username" name="username" required><br><br>
<label for="password">Contraseña:</label><br>
<input type="password" id="password" name="password" required><br><br>
Plantilla: registro-equipo.php
<?php
session_start();
// Verificar la conexión
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
// Cerrar la conexión
$conn->close();
}
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Consultar Equipo</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
text-align: center;
margin-top: 50px;
}
.consulta-box {
width: 400px;
margin: 0 auto;
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
.consulta-box h2 {
margin-bottom: 20px;
}
.error-message {
color: red;
font-weight: bold;
margin-bottom: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 15px;
}
table, th, td {
border: 1px solid #ccc;
padding: 10px;
}
</style>
</head>
<body>
<div class="consulta-box">
<h2>Consultar Equipo por Código</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<label for="codigo_equipo">Código de Equipo:</label><br>
<input type="text" id="codigo_equipo" name="codigo_equipo" required><br><br>
<input type="submit" value="Consultar">
</form>
<?php
// Mostrar mensaje de error si existe
if (!empty($error_message)) {
echo '<p class="error-message">' . $error_message . '</p>';
}
Plantilla: login.php
<?php
session_start();
if (isset($_GET['logout'])) {
session_unset(); // Eliminar todas las variables de sesión
session_destroy(); // Destruir la sesión
header("Location: index.php"); // Redirigir al formulario de inicio de sesión
exit();
}
// Establecer la conexión con la base de datos
$servername = "localhost"; // Cambiar si es necesario
$username = "root"; // Cambiar por el nombre de usuario de la base de datos (en este caso, root)
$password = ""; // Contraseña vacía para la base de datos en local
$dbname = "santiago"; // Cambiar por el nombre de tu base de datos
// Crear la conexión
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificar la conexión
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
// Cerrar la conexión
$conn->close();
?>
Plantilla: listar-equipos.php
<?php
session_start();
// Crear la conexión
$conn = new mysqli($servername, $username, $password, $dbname);
// Verificar la conexión
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Listado de Equipos</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
text-align: center;
margin-top: 50px;
}
.equipos-list {
width: 600px;
margin: 0 auto;
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
.equipos-list h2 {
margin-bottom: 20px;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 15px;
}
table, th, td {
border: 1px solid #ccc;
padding: 10px;
}
</style>
</head>
<body>
<div class="equipos-list">
<h2>Listado de Equipos Registrados</h2>
<table>
<tr>
<th>ID</th>
<th>Nombre del Equipo</th>
<th>País</th>
<!-- Agrega más columnas según tu estructura de datos -->
</tr>
<?php
// Iterar sobre los resultados de la consulta
while ($row = $result->fetch_assoc()) {
echo "<tr>";
echo "<td>" . $row['codigo'] . "</td>";
echo "<td>" . $row['nombre_equipo'] . "</td>";
echo "<td>" . $row['pais'] . "</td>";
// Agrega más celdas según tu estructura de datos
echo "</tr>";
}
?>
</table>
</div>
</body>
</html>
<?php
// Cerrar la conexión
$conn->close();
?>
Plantilla: consultar-equipo.php
<?php
session_start();
// Verificar la conexión
if ($conn->connect_error) {
die("Conexión fallida: " . $conn->connect_error);
}
// Cerrar la conexión
$conn->close();
}
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Consultar Equipo</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f0f0f0;
text-align: center;
margin-top: 50px;
}
.consulta-box {
width: 400px;
margin: 0 auto;
background-color: #fff;
padding: 20px;
border-radius: 10px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
.consulta-box h2 {
margin-bottom: 20px;
}
.error-message {
color: red;
font-weight: bold;
margin-bottom: 10px;
}
table {
width: 100%;
border-collapse: collapse;
margin-top: 15px;
}
table, th, td {
border: 1px solid #ccc;
padding: 10px;
}
</style>
</head>
<body>
<div class="consulta-box">
<h2>Consultar Equipo por Código</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<label for="codigo_equipo">Código de Equipo:</label><br>
<input type="text" id="codigo_equipo" name="codigo_equipo" required><br><br>
<input type="submit" value="Consultar">
</form>
<?php
// Mostrar mensaje de error si existe
if (!empty($error_message)) {
echo '<p class="error-message">' . $error_message . '</p>';
}
3.- En la sección consultar datos del equipo determine que es vulnerable a SQL
Injection mediante el uso del operador AND. (1 punto)
4.- Las secciones de login debe ser vulnerable a SQL Injection. La secuencia de
explotación. Debe explicar la secuencia de explotación. (1 punto)
7.- La sección de consulta de equipos debe ser vulnerable a SQL Injection y debe
permitir el nombre de la base de datos actual utilizada por la aplicación. Debe
explicar la secuencia de explotación. (1 punto).
8.- La sección de consulta de equipos debe ser vulnerable a SQL Injection y debe
permitir el nombre del usuario utilizadao por la conexión a la base de datos
utilizada por la aplicación. Debe explicar la secuencia de explotación. (1 punto).
9.- La sección de consulta de equipos debe ser vulnerable a SQL Injection y debe
permitir extraer todos los nombres de todaslas bases de datos de su instancia
MySQL o MariaDB (depende de la base de datos que haya elegido para su
implementación). Debe explicar la secuencia de explotación. (1 punto).
10.- La sección de consulta de equipos debe ser vulnerable a SQL Injection y debe
permitir extraer todos los nombres de todas las tablas de todas las bases de datos
de su MySQL o MariaDB (depende de la base de datos que haya elegido para su
implementación). Debe explicar la secuencia de explotación. (1 punto)