你能写一个sql语句,关键字之间没有空格

时间:2016-05-11 15:34:27

标签: sql sql-server database security

我正在尝试进行SQL注入测试,但我目前正在测试一个用空格分隔参数的命令行,所以我正在尝试编写一个没有任何空格的sql语句。我已经把它归结为:

create table"aab"("id"int,"notes"varchar(100)) 但我无法弄清楚如何摆脱CREATE和TABLE之间的空间。这同样适用于DROP和TABLE等。

有没有人有任何想法?这适用于Microsoft SQL Server 2014.谢谢!

[更新]:我们正在评估第三方产品的漏洞。我不是这样做来测试我自己的代码中的弱点。

3 个答案:

答案 0 :(得分:1)

当然可以编写一些没有空格的精美语句。

这是一个。

select'asdf'as[asdf]into[#MyTable]

您甚至可以执行不带空格的sp_executesql执行操作。

exec[sp_executesql]N'select''asdf''as[asdf]into[#MyTable]'

答案 1 :(得分:0)

这是不可能的,你必须检查每个参数以确保它们符合预期。

如果它们应该是数字,请确保它们是数字,它们是否应该是包含特定字符的字符串(例如'或者),您应该在执行请求时将它们转义。

你的程序设计应该有一个专门的机制来处理帽子(比如Java中的PreparedStatement)

答案 2 :(得分:0)

在许多情况下,您可以在行之间而不是空格之间写注释。所以/ ** /而不是空格。