<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # SQL 注入教程:學習示例 > 原文: [https://www.guru99.com/learn-sql-injection-with-practical-example.html](https://www.guru99.com/learn-sql-injection-with-practical-example.html) 數據是信息系統最重要的組成部分之一。 組織使用數據庫驅動的 Web 應用程序從客戶那里獲取數據。 [SQL](/sql.html) 是結構化查詢語言的縮寫。 它用于檢索和操作數據庫中的數據。 ## 什么是 SQL 注入? SQL 注入是一種攻擊,使動態 SQL 語句中毒以注釋掉該語句的某些部分或附加始終為真的條件。 它利用設計不良的 Web 應用程序中的設計缺陷來利用 SQL 語句執行惡意 SQL 代碼。 ![Learn SQL Injection with practical example](https://img.kancloud.cn/80/ec/80ec4c849843b0e57458033056ad5dc1_403x303.png "Learn SQL Injection with practical example") 在本教程中,您將學習 SQL 注入技術以及如何保護 Web 應用程序免受此類攻擊。 * [SQL 注入的工作方式](#2) * [黑客活動:SQL 注入 Web 應用程序](#3) * [其他 SQL 注入攻擊類型](#4) * [用于 SQL 注入的自動化工具](#5) * [如何防止 SQL 注入攻擊](#6) * [黑客活動:使用 Havji 進行 SQL 注入](#7) ## SQL 注入的工作方式 使用 SQL 注入可以執行的攻擊類型取決于數據庫引擎的類型。 **該攻擊適用于動態 SQL 語句**。 動態語句是在運行時使用來自 Web 表單或 URI 查詢字符串的參數 password 生成的語句。 讓我們考慮一個帶有登錄表單的簡單 Web 應用程序。 HTML 表單的代碼如下所示。 ``` <form action=‘index.php’ method="post"> <input type="email" name="email" required="required"/> <input type="password" name="password"/> <input type="checkbox" name="remember_me" value="Remember me"/> <input type="submit" value="Submit"/> </form> ``` **此處,** * 上面的表格接受電子郵件地址,然后將密碼提交給名為 index.php 的 [PHP](/php-tutorials.html) 文件。 * 它具有將登錄會話存儲在 cookie 中的選項。 我們從“ remember_me”復選框中推斷出了這一點。 它使用 post 方法提交數據。 這意味著這些值不會顯示在 URL 中。 假設后端檢查用戶 ID 的語句如下 從用戶那里選擇*電子郵件= $ _POST ['email']和密碼= md5($ _ POST ['password']); **HERE,** * 上面的語句直接使用$ _POST []數組的值,而無需對其進行清理。 * 使用 MD5 算法對密碼進行加密。 我們將使用 sqlfiddle 說明 SQL 注入攻擊。 在 Web 瀏覽器中打開 URL [http://sqlfiddle.com/](http://sqlfiddle.com/) 。 您將獲得以下窗口。 注意:您將必須編寫 SQL 語句 ![Learn SQL Injection with practical example](https://img.kancloud.cn/79/e0/79e02c8f10da8f6b18e4d4f5a7c0efa2_1241x540.png "Learn SQL Injection with practical example") **步驟 1)**在左窗格中輸入此代碼 ``` CREATE TABLE `users` ( `id` INT NOT NULL AUTO_INCREMENT, `email` VARCHAR(45) NULL, `password` VARCHAR(45) NULL, PRIMARY KEY (`id`)); insert into users (email,password) values ('This email address is being protected from spambots. You need JavaScript enabled to view it. ',md5('abc')); ``` **步驟 2)**單擊構建模式 **步驟 3)**在右窗格中輸入此代碼 從用戶中選擇*; **步驟 4)**單擊“運行 SQL”。 您將看到以下結果 ![Learn SQL Injection with practical example](https://img.kancloud.cn/71/99/7199854c59f88830582e3664c1998cb1_749x95.png "Learn SQL Injection with practical example") 假設用戶提供了 **此電子郵件地址已受到防止垃圾郵件機器人的保護。 您需要啟用 JavaScript 才能查看它。 將** 和 **1234** 作為密碼。 將針對數據庫執行的語句為 SELECT * FROM users where WHERE email ='此電子郵件地址已受到防止垃圾郵件機器人的保護。 您需要啟用 JavaScript 才能查看它。 'AND 密碼= md5('1234'); 可以通過注釋掉密碼部分并附加一個始終為真的條件來利用上述代碼。 假設攻擊者在電子郵件地址字段中提供了以下輸入。 此電子郵件地址已受到防止垃圾郵件機器人的保護。 您需要啟用 JavaScript 才能查看它。 'OR 1 = 1 LIMIT 1-'] xxx 為密碼。 生成的動態語句如下。 SELECT * FROM users where WHERE email ='此電子郵件地址已受到防止垃圾郵件機器人的保護。 您需要啟用 JavaScript 才能查看它。 'OR 1 = 1 LIMIT 1-'] AND password = md5('1234'); **HERE,** * **此電子郵件地址已受到防止垃圾郵件機器人的保護。 您需要啟用 JavaScript 才能查看它。** 以單引號結尾,以完成字符串引號 * OR 1 = 1 LIMIT 1 是始終為 true 的條件,并將返回結果限制為僅一條記錄。 * -'AND…是刪除密碼部分的 SQL 注釋。 復制上面的 SQL 語句并將其粘貼到 SQL FiddleRun SQL 文本框中,如下所示 ## ![Learn SQL Injection with practical example](https://img.kancloud.cn/76/8c/768caf7459dcb56386a9c67c4f47fd38_700x477.png "Learn SQL Injection with practical example") ## 黑客活動:SQL 注入 Web 應用程序 我們在 [http://www.techpanda.org/](http://www.techpanda.org/) **有一個簡單的 Web 應用程序,該應用程序容易受到 SQL 注入攻擊的攻擊,僅用于演示目的。** 上面的 HTML 表單代碼來自登錄頁面。 該應用程序提供基本的安全性,例如清理電子郵件字段。 這意味著我們上面的代碼不能用于繞過登錄。 為了解決這個問題,我們可以改用密碼字段。 下圖顯示了必須遵循的步驟 ![Learn SQL Injection with practical example](https://img.kancloud.cn/da/03/da037e60055c9b8c5e94695205d96c52_562x270.png "Learn SQL Injection with practical example") 假設攻擊者提供了以下輸入 * 步驟 1:輸入此電子郵件地址已受到防止垃圾郵件機器人的保護。 您需要啟用 JavaScript 才能查看它。 作為電子郵件地址 * 步驟 2:輸入 xxx')OR 1 = 1-] ![Learn SQL Injection with practical example](https://img.kancloud.cn/dd/40/dd40b2aeff63aade9a7a1e42adc24b3c_539x396.png "Learn SQL Injection with practical example") * 點擊提交按鈕 * 您將被定向到儀表板 生成的 SQL 語句如下 SELECT * FROM users where WHERE email ='此電子郵件地址已受到防止垃圾郵件機器人的保護。 您需要啟用 JavaScript 才能查看它。 'AND password = md5('xxx')OR 1 = 1-]'); 下圖說明了已生成的語句。 ![Learn SQL Injection with practical example](https://img.kancloud.cn/46/54/46544e426869811dfa01a7ced9519786_660x303.png "Learn SQL Injection with practical example") **HERE,** * 該語句智能地假定使用了 md5 加密 * 完成單引號和右括號 * 將條件附加到永遠為真的語句 通常,成功的 SQL 注入攻擊會嘗試多種不同的技術(例如上面演示的技術)來進行成功的攻擊。 ## 其他 SQL 注入攻擊類型 SQL 注入所帶來的危害不僅僅是通過傳遞登錄算法。 一些攻擊包括 * 刪除資料 * 更新數據 * 插入資料 * 在服務器上執行可以下載和安裝木馬等惡意程序的命令 * 將有價值的數據(例如信用卡詳細信息,電子郵件和密碼)導出到攻擊者的遠程服務器 * 獲取用戶登錄詳細信息等 上面的列表并不詳盡; 它只是讓您了解什么是 SQL 注入 ## 用于 SQL 注入的自動化工具 在上面的示例中,我們基于對 SQL 的廣泛了解使用了手動攻擊技術。 有自動工具可以幫助您在盡可能短的時間內更有效地執行攻擊。 這些工具包括 * SQLSmack- [http://www.securiteam.com/tools/5GP081P75C.html](http://www.securiteam.com/tools/5GP081P75C.html) * SQLPing 2- [http://www.sqlsecurity.com/downloads/sqlping2.zip?attredirects=0 & d = 1](http://www.sqlsecurity.com/downloads/sqlping2.zip?attredirects=0&d=1) * SQLMap- [http://sqlmap.org/](http://sqlmap.org/) ## 如何防止 SQL 注入攻擊 組織可以采用以下策略來保護自己免受 SQL 注入攻擊。 * **永遠不要信任用戶輸入-**在動態 SQL 語句中使用它之前,必須始終對其進行清理。 * **存儲過程–** 這些可以封裝 SQL 語句并將所有輸入視為參數。 * **預準備語句–** 預準備語句通過首先創建 SQL 語句然后將所有提交的用戶數據作為參數來工作。 這對 SQL 語句的語法沒有影響。 * **正則表達式–** 這些可用于檢測潛在的有害代碼并在執行 SQL 語句之前將其刪除。 * **數據庫連接用戶訪問權限–** 僅應將必需的訪問權限賦予用于連接數據庫的帳戶。 這可以幫助減少 SQL 語句可以在服務器上執行的操作。 * **錯誤消息–** 這些消息不應顯示敏感信息以及確切發生錯誤的位置。 簡單的自定義錯誤消息,例如“抱歉,我們遇到技術錯誤。 已聯系技術團隊。 可以使用“請稍后再試”代替顯示導致錯誤的 SQL 語句。 ## 黑客活動:使用 Havij 進行 SQL 注入 在這種實際情況下,我們將使用 Havij Advanced SQL Injection 程序來掃描網站中的漏洞。 注意:由于其性質,您的防病毒程序可能會對其進行標記。 您應將其添加到排除列表中或暫停防病毒軟件。 下圖顯示了 Havij 的主窗口 ![Learn SQL Injection with practical example](https://img.kancloud.cn/5b/b3/5bb362ed0e45dec929ffcc3fffb076ed_656x618.png "Learn SQL Injection with practical example") 以上工具可用于評估網站/應用程序的漏洞。 ## 摘要 * SQL 注入是一種利用不良 SQL 語句的攻擊類型 * SQL 注入可用于繞過登錄算法,檢索,插入以及更新和刪除數據。 * SQL 注入工具包括 SQLMap,SQLPing 和 SQLSmack 等。 * 編寫 SQL 語句時好的安全策略可以幫助減少 SQL 注入攻擊。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看