SQL注入攻击实现原理与攻击过程详解
SQL注入攻擊實現(xiàn)原理與攻擊過程詳解
結構化查詢語言(SQL)是一種用來和數(shù)據(jù)庫交互的文本語言,SQL Injection就是利用某些數(shù)據(jù)庫的外部接口把用戶數(shù)據(jù)插入到實際的數(shù)據(jù)庫操作語言當中,從而達到入侵數(shù)據(jù)庫乃至操作系統(tǒng)的目的。它的產(chǎn)生主要是由于 程序對用戶輸入的數(shù)據(jù)沒有進行細致的過濾,導致非法數(shù)據(jù)的導入查詢。SQL注入攻擊主要是通過構建特殊的輸入,這些輸入往往是SQL語法中的一些組合,這些輸入將作為參數(shù)傳入Web應用程序,通過執(zhí)行 SQL語句而執(zhí)行入侵者的想要的操作,下面以登錄驗證中的模塊為例,說明SQL注入攻擊的實現(xiàn)方法。
在Web應用程序的登錄驗證程序中,一般有用戶名(username)和密碼(password)兩個參數(shù),程序會通過用戶所提交輸入 的用戶名和密碼來執(zhí)行授權操作。其原理是通過查找user表中的用戶名(username)和密碼(password)的結果來進行授權訪問,典型的 SQL查詢語句為:
Select * from users where username='admin' and password='smith’
如果分別給username和password賦值“admin' or 1=1--”和“aaa”。 那么,SQL腳本解釋器中的上述語句就會變?yōu)?#xff1a;
select * from users where username=’admin’ or 1=1-- and password=’aaa’
該語句中進行了兩個判斷,只要一個條件成立,則就會執(zhí)行成功,而1=1在邏輯判斷上是恒成立的,后面的“--”表示注釋,即后面所 有的語句為注釋語句。同理通過在輸入?yún)?shù)中構建SQL語法還可以刪除數(shù)據(jù)庫中的表,查詢、插入和更新數(shù)據(jù)庫中的數(shù)據(jù)等危險操作:
(1)jo'; drop table authors—如果存在authors表則刪除。
(2)' union select sum(username) from users—從users表中查詢出username的個數(shù)
(3)'; insert into users values( 666, 'attacker', 'foobar', 0xffff )—在user表中插入值
(4)' union select @@version,1,1,1--查詢數(shù)據(jù)庫的版本
(5)'exec master..xp_cmdshell 'dir' 通過xp_cmdshell來執(zhí)行dir命令
SQL注入攻擊實現(xiàn)過程
SQL注入攻擊可以手工進行,也可以通過SQL注入攻擊輔助軟件如HDSI、Domain、NBSI等,其實現(xiàn)過程可以歸納為以下 幾個階段:
(1)尋找SQL注入點;尋找SQL注入點的經(jīng)典查找方法是在有參數(shù)傳入的地方添加諸如“and 1=1”、“and 1=2”以及“’”等一些特殊字符,通過瀏覽器所返回的錯誤信息來判斷是否存在SQL注入,如果返回錯誤,則表明程序未對輸入的數(shù)據(jù)進行處理,絕大部分情 況下都能進行注入。
(2)獲取和驗證SQL注入點;找到SQL注入點以后,需要進行SQL注入點的判斷,常常采用2.1中的語句來進行驗證。
(3)獲取信息;獲取信息是SQL注入中一個關鍵的部分,SQL注入中首先需要判斷存在注入點的數(shù)據(jù)庫是否支持多句查詢、子查詢、 數(shù)據(jù)庫用戶賬號、數(shù)據(jù)庫用戶權限。如果用戶權限為sa,且數(shù)據(jù)庫中存在xp_cmdshell存儲過程,則可以直接轉(4)。
(4)實施直接控制;以SQL Server 2000為例,如果實施注入攻擊的數(shù)據(jù)庫是SQL Server 2000,且數(shù)據(jù)庫用戶為sa,則可以直接添加管理員賬號、開放3389遠程終端服務、生成文件等命令。
(5)間接進行控制。間接控制主要是指通過SQL注入點不能執(zhí)行Dos等命令,只能進行數(shù)據(jù)字段內(nèi)容的猜測。在Web應用程序中, 為了方便用戶的維護,一般都提供了后臺管理功能,其后臺管理驗證用戶和口令都會保存在數(shù)據(jù)庫中,通過猜測可以獲取這些內(nèi)容,如果獲取的是明文的口令,則可 以通過后臺中的上傳等功能上傳網(wǎng)頁木馬實施控制,如果口令是明文的,則可以通過暴力破解其密碼。
總結
以上是生活随笔為你收集整理的SQL注入攻击实现原理与攻击过程详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 作为程序员,你怎么看待16岁女生产子?
- 下一篇: 西单女孩上春晚的8zsb是什么