2012-09-13 94 views
1

使用WAF可以阻止正常的基于UNION的SQL注入,它可以过滤关键字如UNION, SELECT。但我认为它可以通过SQL的内联评论语句旁路,如/*!UNION*//*!SELECT*/内联注释如何绕过SQL注入Web应用程序防火墙?

评论声明仅用于阅读目的,对吧?如果是这样,SQL服务器如何在注释中读取注入查询并执行它?

回答

1

使用WAF过滤关键字毫无意义。它不可能成功。看看这种绕过它的方法列表:http://ferruh.mavituna.com/sql-injection-cheatsheet-oku/(我发现在几秒钟​​内与谷歌链接。)

如果代码被正确写入,那就没有必要。

至于你的问题,MySQL的语法是/*!是针对MySQL的特定命令。它旨在让您能够编写可移植的SQL(可以在任何数据库上运行),但仍能够发送MySQL特殊命令。

+0

感谢您的备忘单,但是我已经有同类型的东西了。你能否更详细地阐述答案的第二部分?如果它是一种特殊的查询,那么它将执行有效的查询并忽略开发者的注释? – Jones

+0

@ William.Ebe我发现这个:http://dev.mysql.com/doc/refman/5.1/en/comments.html提到它存在,但没有记录所有可能的事情。 – Ariel

+0

谢谢。全清! – Jones

0

如果您使用支持数据占位符的数据库驱动程序,SQL注入应该不是问题。你试图做的事后检测是徒劳的,就像试图用一个有问题的苍蝇拍根除蟑螂侵扰一样。你不可能得到他们全部。

最好的做法是确保不可能首先向您的查询注入敌对数据。有many examples available on Booby Tables说明如何正确执行此操作。

+0

我的实际问题是关于MySQL,我想。只是想知道如何执行评论。 – Jones

+0

据我所知,如果加入mysqldump数据库快照的示例是任何示例,则基于版本号标记的'mysql'命令行工具将这些注释从注释转换为活动代码。 – tadman