您好,登錄后才能下訂單哦!
小編給大家分享一下數據庫之SQL注入的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
開發代碼的時候沒有全面考慮到網絡安全性,特別是在用戶交互時,沒有考慮到用戶提交的信息中可能破壞數據庫,沒有對輸入的數據進行合法的過濾。SQL 注入過程目的性是非常強的,其主要目標是 Web 應用的后臺數據庫,從數據庫中獲取信息和授予較高的權限,它先破壞數據庫,再對數據庫服務器進行破壞。
首先要了解web網站的架構:
Web 網站架構,總體結構由 Web 服務器端、客戶終端和通信協議三大部分組成。
表示層是指用戶交互的界面。用戶在使用時在表示層輸入需求,然后這個信息就傳送給服務器,再傳輸給數據庫,服務器將后臺反饋的結果返回給用戶。
邏輯層為表示層提供請求的應答,為數據層提供參數需求
數據層主要是對用戶提交的涉及到數據查詢做出回應
下面以一個ASP網站為例來說明SQL注入攻擊原理。Web頁面接收用戶輸入的用戶名(username)和密碼(pwd),并動態生成一個SQL語句,通過用戶名(usexname)和密碼(pwd)查詢數據庫中users表,如果該查詢訪問成功,將返回一個用戶記錄信息,且用戶登錄成功。
其中生成SQL語句如下:
sql="select*from users where name ="'&username&"' and pwd="'&userpwd&" "'
如果攻擊者在登錄頁面中輸入了下面這樣的數據:
Username: 'or'1'='1 or'1'='2
Password: 000(任意)
那么,SQL查詢語句就變為:
select*from users where name ="or' 1'=' 1' or'1'='2' and pwd='00'
where后的語句為 name ="or'1'='1' or'1'='2' and pwd='0'
轉換成邏輯語句后,其形式為: 假or真or假and假,則最終結果為真
最終結果為真,那么SQL語句的查詢結果也變成真,
所以上面查詢語句將返回表中所有用戶記錄,攻擊者將以表中第1個用戶的身份登錄。
如果攻擊者在登錄頁面中指定了下面這樣的輸入數據:
Username:';drop table users一
Password: 000(任意)
提交數據后,提示登錄失敗,但結果不僅如此,而是數據庫表users將被刪除,任何用戶都無法登錄。
過程:
①通過檢查Web頁而上存在的SQL注入漏洞,構建特殊的SQL注入點;
②其次通過這些特殊的注入點利用Web頁而動態傳遞參數的功能,將SQL的語法組合動態傳遞給數據庫;
③然后根據數據庫的不同類型,對數據庫采取不同的處理;
④最后執行SQL語句,從而達到攻擊者想要的目的。
判斷注入點。
在含有傳遞參數的動態網頁中,判斷是否存在注入漏洞。通常的判斷方法有參數傳遞的地方輸入參“and 1=1” ;“and 1=2”
結果:分別返回不同的頁面,說明存在注入漏洞。
判斷數據庫類型:
①通過函數來判斷數據庫類型:內置的函數的區別。
舉例,len和length使用and len('a')=1的時候,返回正常頁面時,mssql,或mysql。反之則可能會是oracle和informix。
②--和# 這兩個注釋符號
MSSQSL是--,而MYSQL是#,ACCESS不支持注釋
HTTP://xxx.xxx.xxx/abc.asp?p=YY--
HTTP://xxx.xxx.xxx/abc.asp?p=YY#
SQL Server SA用戶權限
xp_cmdshell 擴展存儲過程將命令字符串作為操作系統命令 執行,并以文本行的形式返回所有輸出。由于xp_cmdshell 可以執行任何操作系統命令,所以一旦SQL Server管理員帳號(如sa)被攻破,那么攻擊者就可以利用xp_cmdshell 在SQL Server中執行操作系統命令,如:創建系統管理員。
以上是“數據庫之SQL注入的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。