瞭解ASP入侵[收集總結](轉)

BSDLite發表於2007-08-11
瞭解ASP入侵[收集總結](轉)[@more@]ASP可執行的伺服器端平臺包括:WinNT、Win2k、WinXP和Win2003,在Win98系統裡裝上PWS4.0也可執行。

現在很流行的注入攻擊,就是利用提交特殊地址將ASP中引用的正常SQL語句和入侵者所需要的SQL語句一併執行,使入侵者達到入侵的目的。隨著有一些指令碼注入工具釋出,使菜鳥也可以輕鬆完成對ASP的注入攻擊。那麼我們來了解一下這些工具是怎樣注入的。
首先,入侵者會對一個網站確定可不可以進行注入,假設一篇新聞(文章)的地址為: 一般會以提交兩個地址來測試,如:
and 1=1
and 1=2
第一個地址後面加了and 1=1,構成的SQL語句也就變為了:Select * from 表單名 where id=1 and 1=1這句話要成立必須and前後語句都成立。那麼前面的文章地址是可以訪問的,後面的1=1也是客觀成立的,那麼第一個地址就可以正常顯示;相反1=2是顯然不成立的,關鍵就看這步了,如果提交and 1=2頁面還是正常顯示說明他並沒有將and 1=2寫入SQL語句,此站也就不存在注入漏洞;但如果提交and 1=2之後返回了錯誤頁面則說明此站點將後面的語句帶入了SQL語句並執行了,也就說明他可以進行SQL隱碼攻擊。(注:如果地址後面跟的是news.asp?id='1'就得變為news.asp?id=1' and '1'='1來補全引號了)
現在知道了可以注入後,入侵者可以做什麼呢?如果提交這樣的地址:
and exists (select * from 表名 where 列名=資料)根據返回的正確或錯誤頁面來判斷猜的表名和列名是否正確,具體實現時是先猜表名再猜列名。當猜出表名和列名之後還可以用ASC和MID函式來猜出各列的資料。MID函式的格式為:mid(變數名,第幾個字元開始讀取,讀取幾個字元),比如:mid(pwd,1,2)就可以從變數pwd中的第一位開始讀取兩位的字元。ASC函式的格式為:ASC("字串"),如:asc("a")就可以讀出字母a的ASCII碼了。那麼實際應用的時候就可以寫為:asc(mid(pwd,1,1))這樣讀取的就是pwd列的第一個字元的ASCII碼,提交: asc(mid(pwd,1,1))>97以返回的頁面是否為正確頁面來判斷pwd列的第一個字元的ASCII碼是否大於97(a的ASCII碼),如果正確就再試是否小於122(z的ASCII碼)……這樣慢慢縮小字元的ASCII碼的範圍,直到猜到真實的ASCII碼。這樣一位一位的猜就可以得到資料庫中的使用者名稱和密碼。還有一種ASP驗證缺陷——就是使用者名稱和密碼都輸'or '1'='1,構造SQL語句Select * form 表單名 where username='' or '1'='1' and pwd='' or '1'='1'就可以達到繞過密碼驗證的目的。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-947634/,如需轉載,請註明出處,否則將追究法律責任。

相關文章