mysql注入時的註釋處理
阿新 • • 發佈:2018-12-31
我們在碰到字元型注入點時,要想辦法把原查詢SQL語句後面的單引號消掉才能讓注入語句執行成功,我所知道常用的辦法有以下幾種(也許還有其他辦法,望高手指教),假設查詢欄位數為兩個且只用到一個字元型條件引數:
1、加註釋,如:showtopic.php?key=abc' and 1<> 1 union select 1, 2 #
2、union方式,如:showtopic.php?key=abc' and 1<> 1 union select 1, 2 union select 1, 1 from information_schema.tables where '1' <> '1
3、特殊情況,如:showtopic.php?key=abc' and 1<> 1 union select 1, 2 from user where id=5 and '1' <> '1
以上幾種方式中最簡單的就是加註釋了,這樣就不用管原SQL後面是不是還有其他條件了。mysql的註釋有三種方式:
1、塊註釋:/* ..... */
2、行註釋:#
3、行註釋:-- (--%20,注意後面有一個空格,與SQL標準稍有差別)
最先學習注入時看到很多文章都是說加後面加 /* ,但是我測試始終不成功,直接在mysql的終端試也不行,會提示輸入結束符 */。用mssql測試同樣失敗,提示缺少匹配的註釋結事符 */。我想塊註釋應該是要成對匹配的,否則執行會失敗。如果是這樣的話/*註釋符對於我們注入來說是沒有作用的。
使用#行註釋符時要注意了,因為#在URI裡面表示錨鏈接,所以要對它進行編碼轉義才行,輸入 %23 即可。
--%20可以直接使用,但切記後面要有%20,直接輸空格的話會被截斷,只有URL中間的空間才會自動進行編碼。