什麼是SQL注入(SQLi)

什麼是SQL注入?

SQL注入(SQLi)通常被認爲是一種注入***,其中***者可以執行惡意SQL語句。它控制Web應用程序的數據庫服務器。由於SQL注入無助可能會影響使用基於SQL的數據庫的任何站點或Web應用程序。弱點是最成熟,最普遍和最危險的Web應用程序漏洞之一。

通過使用SQL注入無助,在給定正確條件的情況下,***者可以使用它來回避Web應用程序的驗證和批准組件並恢復整個數據庫的實質內容。SQL注入同樣可以用於包含,更改和刪除數據庫中的記錄,從而影響信息正直性。
在這種程度上,SQL注入可以爲***者提供未經批准的訪問精細信息的權限,包括客戶信息,可識別數據(PII),交換謎團,受保護創新和其他敏感數據。

SQL注入功能

記住針對數據庫服務器運行惡意SQL查詢的最終目標,***者應該首先在Web應用程序中發現包含在SQL問題中的貢獻。
一起發生SQL注入***,無助站點需要直接在SQL解釋中包含客戶端貢獻。然後,***者可以嵌入有效負載,該有效負載將作爲SQL查詢的一個組件併入,並繼續針對數據庫服務器運行。
隨附的服務器端僞代碼用於驗證Web應用程序的客戶端。

#定義POST因子

ü Ñ 一米ë  = - [R Ë q Ü Ë 小號噸。P O S T [ ' u s e r n a m e ' ]
p 一個小號小號瓦特d  = - [R Ë q Ü Ë 小號噸。P O S T [ ' p a s s w o r d ' ]

#SQL問題對SQLi無能爲力

sql = “SELECT id FROM clients WHERE username ='” + uname + “'AND password ='” + passwd + “'”

#執行SQL說明

數據庫.execute(sql)

以上內容是使用用戶名確認客戶端的基本情況。此外,對於具有名爲clients的表的數據庫以及用戶名和關鍵字部分的祕密詞。
SQL注入有效負載的基本情況可能就像將關鍵字字段設置爲密鑰'OR 1 = 1一樣簡單。
這將導致伴隨的SQL問題繼續針對數據庫服務器運行。
SELECT id FROM clients WHERE username ='username'AND password ='password'OR 1 = 1' 

***者同樣可以註釋掉SQL解釋的剩餘部分,以進一步控制SQL查詢的執行。
- MySQL,MSSQL,Oracle,PostgreSQL,SQLite

'或' 1 '=' 1 ' -
'或' 1 '=' 1 '/ *

- MySQL

'或' 1 '=' 1 '#

- 訪問(使用無效字符)

'或' 1 '=' 1 '%00
'或' 1 '=' 1 '%16

一旦問題執行,結果i-訪問(使用無效字符)將返回到要處理的應用程序,從而產生確認迴避。如果可以設想驗證迴避,應用程序將無疑地將***者從問題結果中記錄到主記錄中 - 數據庫中的主記錄是監管客戶端的大部分。

***者最糟糕的是SQL可以做什麼?

SQL是一種編程方言,用於監視放在RDBMS中的信息,以這種方式,SQL可用於獲取,更改和刪除信息。此外,在特定情況下,RDBMS同樣可以從SQL公告中對工作框架進行收費。
記住上面的內容,在考慮附帶的情況下,看看有效的SQL注入***對***者來說有多賺錢的要求不高。
***者可以使用SQL注入來回避確認甚至模仿特定客戶端。

One of SQL’s essential capacities is to choose information in light of an inquiry and yield the consequence of that question. A SQL Injection weakness could permit the entire exposure of information dwelling on a database server. 
Since web applications use SQL to modify information inside a database, an attacker could use SQL Injection to adjust information put away in a database. Modifying information influences information honesty and could cause denial issues. For example, issues, for example, voiding exchanges, adjusting balances and different records. 
SQL用於擦除數據庫中的記錄。***者可以使用SQL注入漏洞來清除數據庫中的信息。無論我們是否使用合適的強化方法,信息的擦除都可能影響應用程序的可訪問性,直到重新建立數據庫爲止。
一些數據庫服務器設計(有目的或其他)允許在數據庫服務器上自由執行工作框架訂單。在正確的條件下,***者可以使用SQL注入作爲***防火牆後面的內向系統的基礎向量。

SQL注入***的剖析

SQL注入只需要存在兩個條件 - 一個利用SQL的社交數據庫,以及一個可以直接用作SQL問題一部分的客戶端可控信息。
在下面的情況下,它將接受***者可能通過濫用Web應用程序中的SQL注入無防禦性展示來從數據庫中泄漏信息。
提供具有不恰當貢獻的SQL清晰度,例如在SQL查詢期望數字時給出字符串,或者在SQL語句中故意嵌入標點符號錯誤會使數據庫服務器拋出錯誤。
在進步中,失誤對工程師非常有幫助,但如果在現場網站上授權,他們可以向***者發現大量數據。SQL錯誤具有圖形趨勢,即***者可以獲取有關數據庫結構的數據。有時甚至只是通過將數據與錯誤消息分開來指定整個數據庫 - 這個系統基於SQL注入被稱爲錯誤。在這種程度上,數據庫失誤應該在現場網站上失效,或者登錄到訪問受限的記錄。

SQL注入示例

一個。在ASP.NET中選擇語句

灣 在ASP.NET中插入聲明

C。在PHP SQL中插入聲明

$ stmt  =  $ dbh - > prepare(“INSERT INTO Customers(客戶名稱,地址,城市)
VALUES(:nam,:add,:cit)“);
$ stmt - > bindParam(':nam',$ txtNam);
$ stmt - > bindParam(':add',$ txtAdd);
$ stmt - > bindParam(':cit',$ txtCit);
$ stmt - > execute();

結論

在這個SQL注入教程中,我們瞭解了SQL中的注入。此外,我們討論了它的例子,代碼,工作和解剖。除此之外,我們還看到了SQL PHP和SQL***者可以做的事情。不過,如果有任何疑問或疑問,請在評論部分詢問。 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章