我在其中设立了发展本地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注入攻击呢? 注意:建议的副本不重复,甚至没有答案。这个问题的关键在于演示expoite,以确保安全措施的正常运行。
2016-08-18
docesam
+0
尝试使用子查询而不是多个逗号分隔。 –
+0
mysqli_multi_query();执行由半(;)分隔的多个查询冒号 –
+0
为了学习如何保护您的查询免受SQL注入的影响,您必须学习如何保护您的查询。而任何注入东西都完全不相关的保护。 –