什麼是SQL隱碼攻擊(SQLi)

Tybyq發表於2018-11-29

什麼是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攻擊者可以做的事情。 不過,如果有任何疑問或疑問,請在評論部分詢問。 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31557424/viewspace-2222154/,如需轉載,請註明出處,否則將追究法律責任。

相關文章