SQL隱碼攻擊詳解-1

技術小牛人發表於2017-11-08
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
隨著B/S 模式應用開發的發展,使用這種模式編寫應用程式的程式設計師也越來越多。但是由於這個行業的入門門檻不高,程式設計師的水平及經驗也參差不齊,相當大一部分程式設計師在編寫程式碼的時候,沒有對使用者輸入資料的合法性進行判斷,使應用程式存在安全隱患。使用者可以提交一段資料庫查詢程式碼,根據程式返回的結果,獲得某些他想得知的資料,這就是所謂的SQL Injection ,即SQL 注入。

SQL 注入是從正常的WWW 埠訪問,而且表面看起來跟一般的Web 頁面訪問沒什麼區別,所以目前市面的防火牆都不會對SQL 注入發出警報,如果管理員沒檢視IIS 日誌的習慣,可能被入侵很長時間都不會發覺。 但是,SQL 注入的手法相當靈活,在注入的時候會碰到很多意外的情況。能不能根據具體情況進行分析,構造巧妙的SQL 語句,從而成功獲取想要的資料,是高手與“菜鳥”的根本區別。 根據國情,國內的網站用ASP+Access 或SQLServer 的佔70% 以上,PHP+MySQ 佔L20% ,其他的不足10% 。

在本文,我們從分入門、進階至高階講解一下ASP 注入的方法及技巧,PHP 注入的文章由NB聯盟的另一位朋友zwell 撰寫,希望對安全工作者和程式設計師都有用處。瞭解ASP 注入的朋友也請不要跳過入門篇,因為部分人對注入的基本判斷方法還存在誤區。大家準備好了嗎?

Lets Go… 入 門 篇

如果你以前沒試過SQL 注入的話,那麼第一步先把IE 選單=> 工具=>Internet 選項=> 高階=> 顯示友好 HTTP 錯誤資訊前面的勾去掉。否則,不論伺服器返回什麼錯誤,IE 都只顯示為HTTP 500 伺服器錯誤,不能獲得更多的提示資訊。 第一節、SQL 注入原理 以下我們從一個網站www.19cn.com 開始(注:本文發表前已徵得該站站長同意,大部分都是真實資料)。 在網站首頁上,有名為“IE 不能開啟新視窗的多種解決方法”的連結,地址為:http://www.19cn.com/showdetail.asp?id=49 ,我們在這個地址後面加上單引號,伺服器會返回下面的錯誤提示: Microsoft JET Database Engine 錯誤 80040e14 字串的語法錯誤 在查詢表示式 ID=49 中。 /showdetail.asp,行8 從這個錯誤提示我們能看出下面幾點:

1. 網站使用的是Access 資料庫,通過JET 引擎連線資料庫,而不是通過ODBC 。

2. 程式沒有判斷客戶端提交的資料是否符合程式要求。

3. 該SQL 語句所查詢的表中有一名為ID 的欄位。

從上面的例子我們可以知道,SQL 注入的原理,就是從客戶端提交特殊的程式碼,從而收集程式及伺服器的資訊,從而獲取你想到得到的資料。
本文轉自 netcorner 部落格園部落格,原文連結:http://www.cnblogs.com/netcorner/archive/2006/11/09/2912524.html  ,如需轉載請自行聯絡原作者


相關文章