В локальном сервере XAMPP, который я создал для развития, у меня есть таблица, например, так:Как выполнить SQL-инъекцию для этого кода?
CREATE TABLE `entries`
(
`id` int(10) UNSIGNED NOT NULL,
`title` varchar(100) NOT NULL,
`entry` text NOT NULL,
`date_entered` datetime NOT NULL
)
Для того, чтобы узнать, как защитить свои запросы к инъекции SQL, я хочу, чтобы вызвать один (я намеренно не используя подготовленные заявления). У меня есть запрос, чтобы вставить запись в этой таблице, как так:
$sql = 'insert into entries (title , entry , date_entered) '
. 'values("'
. $postTitle
. '","'
. $postEntry
. '","'
. $dateEntered
. '")';
Он работает (это вставить записи в таблице), но я не смог вызвать SQL инъекцию нападение на него. Вот что я пытался вставить в $postEntry
поле:
;drop table entries;
;drop table entries;'
';drop table entries;'
`;drop table entries;'
q';drop table entries;
q","e");drop table entries; --'
q","e");drop table entries;--
Для последнего значения SQL-запрос стал:
insert into entries (title , entry , date_entered) values("r","q","e");drop table entries;--","2016-08-18 10:35:36")
Еще записи таблицы нетронутыми!
Я изменил строку SQL, чтобы использовать одинарные кавычки, как так:
$sql = 'insert into entries (title , entry , date_entered) '
. ' values(\''
. $postTitle
. '\',\''
. $postEntry
. '\',\''
. $dateEntered
. '\')';
Затем попробовал:
q','2016-5-5');drop table entries; --'
Но до сих пор нет удачи! Как я могу создать SQL-инъекцию? примечание: предлагаемый дубликат не дублируется и даже не отвечает. вся суть этого вопроса заключается в демонстрации экспоната, чтобы я убедился в том, что меры безопасности работают.
Попробуйте выполнить подзапрос вместо нескольких разделов запятой. –
mysqli_multi_query(); для выполнения нескольких запросов, разделенных полу (;) двоеточием – JYoThI
Чтобы узнать, как защитить свои запросы от SQL-инъекций, вам нужно научиться защищать свои запросы. Хотя любой материал для инъекций совершенно не имеет отношения к защите. –