Я пытаюсь создать пример внедрения SQL, но MySQL каждый раз отклоняет второй запрос, если я не изменю его на mysqli_multi_query.
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" name="dummyDorm">
<label>Name: </label>
<input type="text" name="name"><br>
<input type="submit" value="Submit">
</form>
<?php
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$name = $_POST['name'];
$conn = mysqli_connect("localhost", "root", "", "testDB");
if (mysqli_connect_errno()){
echo "failed to connect" . mysqli_connect_error();
die();
}
else
{
$sql = "SELECT * FROM users WHERE name = '{$name}'";
var_dump($sql);
if (mysqli_query($conn, $sql))
{
echo "Success";
}
else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
}
}
?>
Форма фактически ничего не делает, я просто хочу продемонстрировать, что с помощью SQL-инъекции вы можете редактировать данные.Я хочу выполнить инъекцию, где вы вводите "DROP TABLE testTable".Мой MySQL выглядит так:
DROP DATABASE IF EXISTS testDB;
CREATE DATABASE testDB;
USE testDB;
CREATE TABLE users
(
userID INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
)engine=innodb;
CREATE TABLE testTable
(
test VARCHAR(10)
)engine=innodb;
INSERT INTO users VALUES(null, "user01");
При вводе впрыска: ';DROP TABLE testTable -
Выводится: Ошибка: SELECT * FROM users WHERE name = '';DROP TABLE testTable - у вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'DROP TABLE testTable -' 'в строке 1
Я продолжаю изучать учебники, и они используют MySQLi_query, и он работает нормально, но у меня естьизменить его на Mysqli_multi_query, чтобы инъекция прошла.
Спасибо