Я создал сценарий ниже, который намеренно не защищен, чтобы немного узнать о кибербезопасности.Как я могу обойти мой сценарий входа?
session_start();
if($_SESSION['userSession']) {
header("location: home.php");
}
if($_POST) {
$username = $_POST['username'];
$password = $_POST['password'];
$con = mysqli_connect("localhost", "myUsername", "myPassword", "myDatabase");
if(!$con) {
die("Error: " . mysqli_connect_error());
}
$query = "SELECT * FROM users WHERE username = '$username' && password='$password'";
$result = mysqli_query($con, $query);
$numResults = mysqli_num_rows($result);
if($numResults == 1) {
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$_SESSION['userSession'] = $row['id'];
header("location: home.php");
} else {
echo "Error Logging In";
}
mysqli_close($con);
}
Как вы можете видеть, я не избежал ввода пользователем, и пароль не был хэширован. Поэтому я предполагаю, что это должен быть легко взломанный логин. Однако я попытался использовать нижеследующий ввод в обоих полях имени пользователя и пароля, но всегда получаю вывод «Ошибка входа в систему».
password' OR '1' = '1'";
Как я могу попытаться обойти/взломать мой сценарий входа?
check link for sql injection: http://www.w3schools.com/sql/sql_injection.asp –
Избавьтесь от последнего '' ', чтобы ваш пароль выглядел так:' foo 'или' 1 '=' 1 ' – miken32