我正在尝试进行SQL注入测试,但我目前正在测试一个用空格分隔参数的命令行,所以我正在尝试编写一个没有任何空格的sql语句。我已经把它归结为:
create table"aab"("id"int,"notes"varchar(100))
但我无法弄清楚如何摆脱CREATE和TABLE之间的空间。这同样适用于DROP和TABLE等。
有没有人有任何想法?这适用于Microsoft SQL Server 2014.谢谢!
[更新]:我们正在评估第三方产品的漏洞。我不是这样做来测试我自己的代码中的弱点。
答案 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)
在许多情况下,您可以在行之间而不是空格之间写注释。所以/ ** /而不是空格。