計算機程序設計

什麼是SQL注入?

網站和網頁時的數量正在穩步增長。 採取所有這些誰能夠發展。 和新手的Web開發人員經常使用不安全的和舊的代碼。 它創造了很多漏洞的罪犯和黑客。 比他們。 其中最經典的漏洞 - SQL注入。

理論的一個位

很多人都知道,大多數網絡上的網站和服務的使用SQL數據庫存儲。 這是一個 結構化查詢語言 ,允許您控制和管理數據的存儲。 有許多不同版本的數據庫管理系統的數據庫 - 甲骨文,MySQL和Postgre。 無論名稱和類型,它們使用相同的查詢數據。 正是在這裡,位於潛在的漏洞。 如果開發商未能妥善處理和安全要求,攻擊者可以利用這一點,並使用特殊的戰術來訪問數據庫,然後 - 和所有的現場管理。

為了避免這樣的情況下,則需要適當地優化代碼,並在其中請求正被處理的方式密切監測。

檢查SQL注入

建立在網絡中的一個漏洞的存在具有完成自動軟件系統的重量。 但它是可以手動進行簡單的檢查。 要做到這一點,到考點之一,並在地址欄中嘗試導致數據庫錯誤。 例如,該網站上的腳本不能處理該請求並沒有修剪它們。

例如,存在nekiy_sayt /的index.php?編號= 25

最簡單的辦法 - 把25報價後發送請求。 如果發生了,無論是在現場和過濾器沒有錯誤的所有請求都會正確處理,或者在它們的輸出的設置被禁用。 如果一個頁面與問題重新加載,則該漏洞的SQL注入。

之後,她發現了,你可以嘗試擺脫它。

要實現此漏洞需要知道一點關於 SQL查詢的球隊。 其中之一 - UNION。 這幾個查詢結果匯集成一片。 因此,我們可以計算表中的字段的數量。 示例首先查詢:

  • nekiy_sayt /的index.php?ID = 25 UNION SELECT 1。

在大多數情況下,這個記錄應該產生一個錯誤。 這意味著場的數目不等於1。因此,在選擇的1或更大的選項,可以建立他們的確切數目:

  • nekiy_sayt / index.php文件?ID = 25 UNION SELECT 1,2,3,4,5,6。

也就是說,當將不再出現該錯誤,這意味著字段數猜測。

還有一個替代的解決這個問題。 例如,當大量的字段 - 30,60或100。此命令GROUP BY。 這組基於任何理由的查詢,例如ID的結果:

  • nekiy_sayt /的index.php?ID = 25 GROUP BY 5。

如果沒有收到錯誤,然後等領域5個以上。因此,從一個相當寬的範圍內代選擇,就可以計算出有多少人實際。

這個例子SQL注入 - 誰想要試試自己在其網站上的測試初學者。 重要的是要記住,刑法的另一個可用的文章未經授權的訪問是非常重要的。

主要類型的注射

實現在若干實施通過SQL注入漏洞。 接下來是最常用的方法:

  • 該UNION 查詢的SQL 注入。 這種類型的一個簡單的例子已經在上面檢查。 這是由於在檢查輸入數據,這是不過濾的錯誤來實現。

  • 錯誤基於SQL注入。 顧名思義,這種類型還採用了錯誤,發送組成語法不正確的表達式。 再有就是響應報頭,分析其可以進行以後的SQL注入的攔截。

  • 堆疊 查詢SQL 注入。 此漏洞是通過執行連續請求來確定。 它的特點是通過加入在符號的末尾“;”。 這種方法通常實施訪問的讀取和寫入數據或操作系統功能的實現,如果權限允許它。

軟件搜索SQL的漏洞

是否有SQL注入,該程序通常由兩部分組成 - 一個網站掃描可能存在的漏洞,並利用它們來訪問數據。 有一些工具用於幾乎所有已知的平台。 它們的功能極大的方便了檢查網站,以破解你的SQL注入。

SQLMAP

非常強大的掃描儀,與大多數數據庫工作。 它支持執行SQL注入的各種方法。 它具有自動識別密碼哈希破解和字典的類型的能力。 現在和功能文件上傳和下載從服務器。

使用命令執行在Linux上安裝:

  • 混帳克隆https://github.com/sqlmapproject/sqlmap.git的SqlMap-dev的,
  • cdsqlmap-dev的/,
  • ./sqlmap.py --wizard。

對於Windows可作為與命令行和圖形用戶界面的一個選項。

JSQL注射

JSQL注射 - 用於測試使用SQL安全漏洞的跨平台工具。 用Java編寫的,所以系統必須安裝JRE。 能夠處理GET請求,POST,頭,餅乾。 它有一個方便的圖形界面。

該軟件包的安裝如下:

wget的https://github.com/`curl -s HTTPS://github.com/ron190/jsql-injection/releases | 的grep-E -o'/ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] 。{1,2} [0-9] {1,2}的.jar'| 頭-N 1`

發射是通過使用命令Java的罐子./jsql-injection-v*.jar

為了啟動對SQL的漏洞測試網站,你需要在頂部字段中輸入地址。 他們是獨立的GET和POST。 有了一個積極的結果,可用表的列表會出現在左邊窗口。 您可以查看並了解一些機密信息。

標籤«管理頁面»用於查找管理面板。 它通過特殊的模板來自動搜索系統記錄特權用戶。 從他們身上,你可以得到的只是密碼散列。 但他在節目中的工具箱。

發現所有的漏洞和注入必要的詢問後,該工具將允許服務器填寫您的文件,或者反過來,從那裡下載。

SQLI自卸車V.7

這一方案 - 易於使用的工具,尋找和實現SQL漏洞。 它產生的聯合國是基於所謂的多卡斯。 他們的名單可以在互聯網上找到。 Dorca對於SQL注入 - 這是搜索查詢的特殊的模板。 有了他們的幫助,你可以找到通過任何搜索引擎可能存在漏洞的網站。

工具培訓

Itsecgames.com在現場有一組特殊的工具,允許示例顯示了如何做SQL注入和測試。 為了利益,就必須下載和安裝。 該檔案包含了一組文件,這是該網站的結構。 要安裝它,將需要設置Apache Web服務器,MySQL和PHP的現有系統。

解壓在一個Web服務器文件夾歸檔,你必須去安裝這個時輸入的地址 軟件。 具有用戶註冊的頁面。 在這裡,你需要輸入你的信息,然後點擊«創建»。 移動用戶到一個新的屏幕,系統會提示您選擇的測試案例之一。 其中既有通過注射,和許多其他測試項目描述。

這是值得考慮的SQL注入式GET /搜索的例子。 在這裡,你需要選擇它,然後單擊«哈克»。 之前,用戶會出現,和電影網站的搜索字符串模仿。 要排序的電影會很長。 但只有10。例如,你可以嘗試進入鐵人。 這將指示電影,那麼該網站的作品,它包含的表。 現在我們就來檢查,如果特殊字符腳本過濾器,尤其是報價。 要做到這一點,在地址欄中添加“。” 此外,這必須在影片的標題之後進行。 該網站會給出錯誤錯誤:你在你的SQL語法錯誤; 檢查對應於你的MySQL服務器版本在1號線,其中指出,字符依然沒有被正確處理使用近'%''正確的語法手冊。 所以,你可以嘗試替換您的要求。 但是,我們必須首先計算領域的數量。 和行動=搜索 - 由2 http://testsites.com/sqli_1.php?title=Iron+Man'順序:它被用於通過該順序,這是引號之後引入。

該命令僅顯示有關膜,即,場的數目大於2的雙連字符告訴其他請求必須被丟棄的服務器的信息。 現在,我們要弄清楚,把日益增加的重要性,只要不打印錯誤。 最後,事實證明,該領域將是7。

現在是時候得到一些有用的東西出了基地。 將略微修改請求在地址欄中,將它帶到一種形式:http://testsites.com/sqli_1.php?title=Iron+Man工會選擇1,數據庫(),用戶(),4,密碼,6, 7從用戶 - &行動=搜索。 由於它的實施將顯示與密碼哈希值,可以很容易地轉換成使用的在線服務之一可以理解的符號串的結果。 一個編造了一點,拿起一個字段名與登錄,您可以訪問別人的條目,如網站管理員的。

該產品具有重量種噴射方式,可以用來實踐。 應該記住的是,這些技能上的真實網站網絡中的應用可能是一種刑事犯罪。

注入和PHP

作為一項規則,在PHP代碼,負責來自用戶必要的處理請求。 因此,在這個層面,你需要建立針對SQL注入的PHP辯護。

首先,讓我們給一些簡單的指導,其中有必要做這樣的基礎上。

  • 數據總是必須被放置到數據庫中之前被處理。 這可以通過使用現有的表達,或通過手動查詢組織來完成。 在這裡,也應考慮到該數字值被轉換為所需要的類型;
  • 避免提示各種控制結構。

現在介紹一下在MySQL編譯查詢,以防止SQL注入的規則。

在制訂任何表達式查詢它來將數據從SQL關鍵字分別是非常重要的。

  • SELECT * FROM表WHERE名稱=虫族。

在這種配置中,該系統可能會認為虫族 - 任何字段的名稱,所以你需要放在引號。

  • SELECT * FROM表WHERE名稱=“虫族”。

然而,有些時候,價值本身包含引號。

  • SELECT * FROM表WHERE name ='科特迪瓦'。

這裡只處理科特迪瓦的一部分,其餘部分可被視為一個團隊,這當然不是。 因此,就會發生錯誤。 然後,你需要這種篩選的數據。 要做到這一點,使用反斜杠 - \。

  • SELECT * FROM表WHERE name ='貓-D \'瓦'。

所有上述指行。 如果行動發生了一些的話,就不需要任何報價或斜線。 然而,他們應該被要求強行導致所需的數據類型。

有跡象表明,字段名必須包含在反引號的建議。 該標誌是在鍵盤的左側,與波浪一起“〜”。 這是為了確保MySQL的可能準確地從您的關鍵字區分字段的名稱。

數據工作動態

很多時候,從使用的查詢數據庫,動態生成的任何數據。 例如:

  • SELECT * FROM表WHERE編號='$號“。

這裡,變量$號碼作為確定字段的值通過。 會發生什麼,如果它得到“科特迪瓦”? 錯誤。

為了避免這種麻煩,當然,你可以包括“魔術引號”設置。 但現在的數據都將被屏蔽在必要和沒有必要的。 此外,如果代碼是手寫,你可以花多一點時間來創建開裂系統本身抵抗力。

對於獨立添加斜線都可以使用mysql_real_escape_string。

$總數= mysql_real_escape_string($號);

$ =年mysql_real_escape_string($年);

$查詢=“INSERT INTO表(數,年份,班級)VALUES('$號','$年”,11)“。

雖然代碼和體積增大,但可能它會工作更安全。

佔位符

佔位符 - 一種標誌物用於該系統識別出這是你需要替換一個特殊功能的地方。 例如:

$沙爹= $ mysqli->準備(“SELECT區,距離數,其中名稱=?”);

$ Sate-> bind_param(“S”,$號);

$ Sate->執行();

這部分代碼需要的訓練請求模板,然後結合可變數目,並執行它。 這種方法允許你將查詢處理和其執行情況。 因此,它可以從使用惡意代碼保存在SQL的。

攻擊者可能

保護系統 - 一個非常重要的因素,這是不能被忽略。 當然,簡單的名片網站會更容易恢復。 如果它是一個大的門戶網站,服務,論壇? 後果是什麼,如果你不考慮安全性?

首先,黑客可以打破這兩個基地的完整性和徹底刪除。 而如果網站管理員或託管商不進行備份,你將有艱難的時刻。 首先,一個入侵者,破解一個單一的網站,可以去其他張貼在同一台服務器。

其次是遊客的個人信息被盜。 如何使用 - 只有通過黑客的想像力是一切限制。 但在任何情況下,後果會不會很愉快。 特別是如果包含財務信息。

此外,攻擊者可以自己合併數據庫,然後勒索錢財其返回。

代表網站管理員的誤傳用戶,他們不是人,也可以盡可能的欺詐事實的消極後果。

結論

提供的信息僅供參考本文中的所有信息。 只使用它需要測試自己的項目,當它檢測到的漏洞和解決這些問題。

對於如何進行SQL注入技術進行更深入的研究,有必要先從SQL語言的實際研究能力和功能。 由於編譯查詢,關鍵字,數據類型,以及使用的這一切。

也離不開理解PHP和HTML元素功能的操作。 的主要用途為注射脆弱點 - 的地址線,以及各種搜索字段。 學習PHP功能,實現和功能的方法找出如何避免錯誤。

許多現成的軟件工具的存在允許在網站上已知的漏洞進行了深入分析。 其中最暢銷的產品 - 卡利Linux操作系統。 基於Linux的操作系統,它包含了大量的工具和程序,可以進行現場實力綜合分析此圖像。

你需要知道如何破解網站是什麼? 這很簡單 - 這是必要了解你的項目或網站的潛在漏洞。 尤其是如果它是一個在線商店與網上支付,其中支付用戶數據可以被攻擊者破壞。

對於現有信息安全人員的專業研究將能夠檢查出網站的各種標準和深度。 從一個簡單的HTML的注射和社會工程學和釣魚開始。

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 zhtw.unansea.com. Theme powered by WordPress.