


怎么利用網站漏洞攻擊網站
添加時間:2010-11-14
添加:
admin
隨著B/S模式應用開發的發展,使用這種模式編寫應用程序的程序員也越來越多。但是由于程序員的水平及經驗也參差不齊,相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段數據庫查詢代碼,根 據程序返回的結果,獲得某些他想得知的數據,這就是所謂的SQL Injection,即SQL注入。 SQL注入是從正常的WWW端口訪問,而且表面看起來跟一般的Web頁面訪問沒什么區別,所以目前市面的防火墻都不會對SQL注入發出警報,如果管理員沒查看IIS日志的習慣,可能被入侵很長時間都不會發覺。但是,SQL注入的手法相當靈活,在注入的時候會碰到很多意外的情況。能不能根據具體情況進行分析,構造巧妙的SQL語句,從而成功獲取想要的數據。 據統計,網站用ASP+Access或SQLServer的占70%以上,PHP+MySQ占L20%,其他的不足10%。在本文,以SQL-SERVER+ASP例說明SQL注入的原理、方法與過程。(PHP注入的文章由NB聯盟的另一位朋友zwell撰寫的有關文章) SQL注入攻擊的總體思路是: l 發現SQL注入位置; l 判斷后臺數據庫類型; l 確定XP_CMDSHELL可執行情況 l 發現WEB虛擬目錄 l 上傳ASP木馬; l 得到管理員權限; 一、SQL注入漏洞的判斷 一般來說,SQL注入一般存在于形如:HTTP://xxx.xxx.xxx/abc.asp?id=XX等帶有參數的ASP動態網頁中,有時一個動態網頁中可能只有一個參數,有時可能有N個參數,有時是整型參數,有時是字符串型參數,不能一概而論。總之只要是帶有參數的動態網頁且此網頁訪問了數據庫,那么就有可能存在SQL注入。如果ASP程序員沒有安全意識,不進行必要的字符過濾,存在SQL注入的可能性就非常大。 為了全面了解動態網頁回答的信息,首選請調整IE的配置。把IE菜單-工具-Internet選項-高級-顯示友好HTTP錯誤信息前面的勾去掉。 為了把問題說明清楚,以下以HTTP://xxx.xxx.xxx/abc.asp?p=YY為例進行分析,YY可能是整型,也有可能是字符串。 1、整型參數的判斷 當輸入的參數YY為整型時,通常abc.asp中SQL語句原貌大致如下: select * from 表名 where 字段=YY,所以可以用以下步驟測試SQL注入是否存在。 ①HTTP://xxx.xxx.xxx/abc.asp?p=YY'(附加一個單引號),此時abc.ASP中的SQL語句變成了 select * from 表名 where 字段=YY',abc.asp運行異常; ②HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=1, abc.asp運行正常,而且與HTTP://xxx.xxx.xxx/abc.asp?p=YY運行結果相同; ③HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=2, abc.asp運行異常; 如果以上三步全面滿足,abc.asp中一定存在SQL注入漏洞。 2、字符串型參數的判斷 當輸入的參數YY為字符串時,通常abc.asp中SQL語句原貌大致如下: select * from 表名 where 字段='YY',所以可以用以下步驟測試SQL注入是否存在。 ①HTTP://xxx.xxx.xxx/abc.asp?p=YY'(附加一個單引號),此時abc.ASP中的SQL語句變成了 select * from 表名 where 字段=YY',abc.asp運行異常; ②HTTP://xxx.xxx.xxx/abc.asp?p=YY&nb ... 39;1'='1', abc.asp運行正常,而且與HTTP://xxx.xxx.xxx/abc.asp?p=YY運行結果相同; ③HTTP://xxx.xxx.xxx/abc.asp?p=YY&nb ... 39;1'='2', abc.asp運行異常; 如果以上三步全面滿足,abc.asp中一定存在SQL注入漏洞。 3、特殊情況的處理 有時ASP程序員會在程序員過濾掉單引號等字符,以防止SQL注入。此時可以用以下幾種方法試一試。 ①大小定混合法:由于VBS并不區分大小寫,而程序員在過濾時通常要么全部過濾大寫字符串,要么全部過濾小寫字符串,而大小寫混合往往會被忽視。如用SelecT代替select,SELECT等; ②UNICODE法:在IIS中,以UNICODE字符集實現國際化,我們完全可以IE中輸入的字符串化成UNICODE字符串進行輸入。如+ =%2B,空格=%20 等;URLEncode信息參見附件一; ③ASCII碼法:可以把輸入的部分或全部字符全部用ASCII碼代替,如U=chr(85),a=chr(97)等,ASCII信息參見附件二; 二、區分數據庫服務器類型 一般來說,ACCESS與SQL-SERVER是最常用的數據庫服務器,盡管它們都支持T-SQL標準,但還有不同之
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解