Пожалуйста, обратите внимание, что пользователь заблокирован
Всем привет!
Есть ли реальный способ обойти функцию addslashes() и добиться внедрения SQL?
Как мы знаем, функция addslashes() экранирует следующие символы:
Одинарная кавычка (') экранируется как \'
Двойная кавычка ("") экранируется как \"
Обратная косая черта () экранируется как \\
Символы NULL (NUL) экранируются как \0.
Какие полезная нагрузка или методы можно использовать для обхода фильтрации addslashes() и добиться SQL-инъекции?
Вот пример кода; как это можно эксплуатировать?
<?php
$host = 'localhost';
$user = 'user345';
$password = 'test345';
$dbname = 'example_database';
$link = mysqli_connect($host, $user, $password, $dbname);
if (!$link) {
die("Connection failed: " . mysqli_connect_error());
}
$message = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$login = $_POST['login'];
$password = $_POST['password'];
$login = addslashes($login);
$password = addslashes($password);
$sql = "SELECT * FROM users WHERE username = '$login' AND password = '$password'";
$result = mysqli_query($link, $sql);
if ($result && mysqli_num_rows($result) > 0) {
$message = "Welcome, $login!";
} else {
$message = "Invalid credentials!";
}
}
mysqli_close($link);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login Form</title>
</head>
<body>
<h1>Login</h1>
<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<label for="login">Username:</label><br>
<input type="text" id="login" name="login" required><br><br>
<label for="password">Password:</label><br>
<input type="password" id="password" name="password" required><br><br>
<button type="submit">Login</button>
</form>
<br>
<div>
<p><?php echo $message; ?></p>
</div>
</body>
</html>
Есть ли реальный способ обойти функцию addslashes() и добиться внедрения SQL?
Как мы знаем, функция addslashes() экранирует следующие символы:
Одинарная кавычка (') экранируется как \'
Двойная кавычка ("") экранируется как \"
Обратная косая черта () экранируется как \\
Символы NULL (NUL) экранируются как \0.
Какие полезная нагрузка или методы можно использовать для обхода фильтрации addslashes() и добиться SQL-инъекции?
Вот пример кода; как это можно эксплуатировать?
<?php
$host = 'localhost';
$user = 'user345';
$password = 'test345';
$dbname = 'example_database';
$link = mysqli_connect($host, $user, $password, $dbname);
if (!$link) {
die("Connection failed: " . mysqli_connect_error());
}
$message = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$login = $_POST['login'];
$password = $_POST['password'];
$login = addslashes($login);
$password = addslashes($password);
$sql = "SELECT * FROM users WHERE username = '$login' AND password = '$password'";
$result = mysqli_query($link, $sql);
if ($result && mysqli_num_rows($result) > 0) {
$message = "Welcome, $login!";
} else {
$message = "Invalid credentials!";
}
}
mysqli_close($link);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login Form</title>
</head>
<body>
<h1>Login</h1>
<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
<label for="login">Username:</label><br>
<input type="text" id="login" name="login" required><br><br>
<label for="password">Password:</label><br>
<input type="password" id="password" name="password" required><br><br>
<button type="submit">Login</button>
</form>
<br>
<div>
<p><?php echo $message; ?></p>
</div>
</body>
</html>