sql盲注 解决_sql盲注解决方案.docx
sql盲注解決方案
sql盲注解決方案
篇一:景安安全培訓-SQL注入漏洞-盲注 SQL注入漏洞 一.漏洞說明 1. SQL注入定義 SQL注入攻擊(SQL Injection),簡稱注入攻擊,SQL注入是web開發中最常見的一種安全漏洞。 SQL注入漏洞可以用來從數據庫獲取敏感信息,或者利用數據庫的特性執行添加用戶,導出文件等一系列惡意操作,甚至有可能獲取數據庫乃至系統最高權限 注入漏洞原理 由于程序沒有過濾用戶的輸入,攻擊者通過響服務器提交惡意的SQL查詢語句,應用程序接收后錯誤的將攻擊者的輸入作為原始SQL查詢語句的一部分執行,導致改變了程序原始的SQL查詢邏輯,額外的執行了攻擊者構造的SQL查詢語句 注入實例: 假設用戶登錄時其中一個SQL語句為:SELECT FROM tablogins tb WHERE =" " AND passwd=" "; 引號””內部,既是是我們登錄時填寫的用戶名或密碼。假如用戶名、密碼框內我們輸入: 1”or”1”=”1或者1”or”1”=”1” -- MYSql中的執行結果分別如下: (1)輸入1”or”1”=”1,此語句永遠都能正確執行,用戶輕易騙過系統,獲取合法身份。 (2)輸入1”or”1”=”1” -- ,用戶名中輸入此語句,不管語句后有什么條件,都會正確執行,獲取合法身份。 二.SQL注入的位置 無論是內網環境還是外網環境(互聯網),B/S架構的Web應用(以下指網站)都直接或者間接地受到各種類型的Web攻擊的影響。 對于后臺數據庫來說,以SQL注入攻擊危害最為普遍,由于網站服務端語言自身的缺陷與程序員編寫代碼的安全意識不足,攻擊者可以將惡意SQL語句注入到正常的數據庫操作指令中去,從而使該惡意SQL語句在后臺數據庫中被解析執行。 在SQL注入攻擊之前,首先要找到網站中各類與數據庫形成交互的輸入點。通常情況下,一個網站的輸入點包括: 1. 2. 3. 4. 5. 表單提交,主要是POST請求,也包括GET請求。 URL參數提交,主要為GET請求參數。 Cookie參數提交。 HTTP請求頭部的一些可修改的值,比如Referer、User_Agent等。 一些邊緣的輸入點,比如.mp3文件的一些文件信息等。 服務端從客戶端直接或間接獲取數據的過程都是一次輸入過程, 無論直接或間接,默認情況下輸入的數據都應該認為是不安全的。 上面列舉的幾類輸入點,只要任何一點存在過濾不嚴,過濾缺陷等問題, 都有可能發生SQL注入攻擊。 大多數情況下,SQL注入的過程都是由工具完成的, 其中包括大批量注入工具的使用。 三.SQL注入的危害 這些危害包括但不局限于: ? ? ? ? ? ? 數據庫信息泄漏:數據庫中存放的用戶的隱私信息的泄露。 網頁篡改:通過操作數據庫對特定網頁進行篡改。 網站被掛馬,傳播惡意軟件:修改數據庫一些字段的值,嵌入網馬鏈接,進行掛馬攻擊。 數據庫被惡意操作:數據庫服務器被攻擊,數據庫的系統管理員帳戶被竄改。 服務器被遠程控制,被安裝后門。經由數據庫服務器提供的操作系統支持,讓黑客得以修改或控制操作系統。 破壞硬盤數據,癱瘓全系統。 四.常見的SQL注入測試工具 ? ? Pangolin , /Products/scrawlr/ 五.SQL注入漏洞的解決方案 解決SQL注入問題的關鍵是對所有可能來自用戶輸入的數據進行嚴格的檢查、對數據庫配置使用最小權限原則。 1. 所有的查詢語句都使用數據庫提供的參數化查詢接口,參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中。當前幾乎所有的數據庫系統都提供了參數化SQL語句執行接口,使用此接口可以非常有效的防止SQL注入攻擊。 2. 對進入數據庫的特殊字符('"\尖括號&*;等)進行轉義處理,或編碼轉換。 3. 嚴格限制變量類型,比如整型變量就采用intval()函數過濾,數據庫中的存儲字段必須對應為int型。 4. 數據長度應該嚴格規定,能在一定程度上防止比較長的SQL注入語句無法正確執行。 5. 網站每個數據層的編碼統一,建議全部使用UTF-8編碼,上下層編碼不一致有可能導致一些過濾模型被繞過。 6. 嚴格限制網站用戶的數據庫的操作權限,給此用戶提供僅僅能夠滿足其工作的權限,從而最大限度的減少注入攻擊對數據庫的危害。 7. 避免網站顯示SQL錯誤信息,比如類型錯誤、字段不匹配等,防止攻擊者利用這些
總結
以上是生活随笔為你收集整理的sql盲注 解决_sql盲注解决方案.docx的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RT-Thread I2C设备驱动框架的
- 下一篇: threejs创建平面几何形状