2012-09-13 80 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