He configurado una página y una base de datos para poder practicar la inyección SQL. He intentado algunos ejemplos y no parece funcionar. Parece que agrega el nombre de usuario y la contraseña a esa base de datos, aunque ingrese una inyección en el campo de nombre de usuario. Aquí está mi código:
include "Connection.php";
<form method="post" action="sqltest.php">
<fieldset>
<label for="username">Username: </label>
<input type="text" name="username"/>
<label for="passwd">Password: </label>
<input type="password" name="passwd"/>
</br>
<input type="submit" value="Submit" />
<input type="reset" value="Clear" />
</fieldset>
</form>
</div>
</div>
$username = $_POST["username"];
$password = $_POST["passwd"];
if (!empty($_POST)){
if (empty($username) || !isset($username)) {
echo "Please enter a valid username";
} else if (empty($password) || !isset($password)) {
echo "Please enter a valid password";
} else {
if (strlen($password) >= 6 && strlen($password) <= 8)
{
if (is_numeric($password))
{
echo "Password cannot be a number<br/>";
}
else{
$encrypted_mypassword=md5($password);
$query = "INSERT INTO sqltest (name,password) VALUES ('$username', '$password')";
$result = mysqli_query($connection,$query);
echo "You have successfully registered";
}
}
else {
echo "Password must be between 6 and 8 characters in length<br/>";
}
}
}
¿Alguien puede decirme algunos ejemplos que podrían quitar la tabla o insertar un usuario? Acabo de darme cuenta de que se está escapando automáticamente de los personajes. Seguramente esto no impide toda la inyección de SQL. ¿Hay algo que pueda inyectar que supere esto? Gracias!