SQL注入攻擊的種類有哪些 SQL注入攻擊的種類和防范手段有哪些?
2.Incorrecttype handling 如果一個(gè)用戶提供的字段并非一個(gè)強(qiáng)類型,或者沒有實(shí)施類型強(qiáng)制,就會發(fā)生這種形式的攻擊。當(dāng)在一個(gè)SQL語句中使用一個(gè)數(shù)字字段時(shí),如果程序員沒有檢查用戶輸入的合法性(是否為數(shù)字型)就會發(fā)生這種攻擊。例如: statement := "SELECT * FROM data WHERE id = " a_variable ";" 從這個(gè)語句可以看出,作者希望a_variable是一個(gè)與“id”字段有關(guān)的數(shù)字。不過,如果終端用戶選擇一個(gè)字符串,就繞過了對轉(zhuǎn)義字符的需要。例如,將a_variable設(shè)置為:1;DROP TABLEusers,它會將“users”表從數(shù)據(jù)庫中刪除,SQL語句變成:SELECT * FROM DATA WHERE id = 1;DROP TABLE users;
3.數(shù)據(jù)庫服務(wù)器中的漏洞 有時(shí),數(shù)據(jù)庫服務(wù)器軟件中也存在著漏洞,如MYSQL服務(wù)器中mysql_real_escape_string()函數(shù)漏洞。這種漏洞允許一個(gè)攻擊者根據(jù)錯誤的統(tǒng)一字符編碼執(zhí)行一次成功的SQL注入式攻擊。
4.盲目SQL注入式攻擊 當(dāng)一個(gè)Web應(yīng)用程序易于遭受攻擊而其結(jié)果對攻擊者卻不見時(shí),就會發(fā)生所謂的盲目SQL注入式攻擊。有漏洞的網(wǎng)頁可能并不會顯示數(shù)據(jù),而是根據(jù) 注入到合法語句中的邏輯語句的結(jié)果顯示不同的內(nèi)容。這種攻擊相當(dāng)耗時(shí),因?yàn)楸仨殲槊恳粋€(gè)獲得的字節(jié)而精心構(gòu)造一個(gè)新的語句。但是一旦漏洞的位置和目標(biāo)信息的位置被確立以后,一種稱為Absinthe的工具就可以使這種攻擊自動化。
5.條件響應(yīng) 注意,有一種SQL注入迫使數(shù)據(jù)庫在一個(gè)普通的應(yīng)用程序屏幕上計(jì)算一個(gè)邏輯語句的值: SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd'AND 1=1 這會導(dǎo)致一個(gè)標(biāo)準(zhǔn)的面面,而語句 SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd'AND 1=2在頁面易于受到SQL注入式攻擊時(shí),它有可能給出一個(gè)不同的結(jié)果。如此這般的一次注入將會證明盲目的SQL注入是可能的,它會使攻擊者根據(jù)另外一個(gè) 表中的某字段內(nèi)容設(shè)計(jì)可以評判真?zhèn)蔚恼Z句。
6.條件性差錯 如果WHERE語句為真,這種類型的盲目SQL注入會迫使數(shù)據(jù)庫評判一個(gè)引起錯誤的語句,從而導(dǎo)致一個(gè)SQL錯誤。例如: SELECT 1/0 FROM users WHERE username='Ralph'。顯然,如果用戶Ralph存在的話,被零除將導(dǎo)致錯誤。
7.時(shí)間延誤 時(shí)間延誤是一種盲目的SQL注入,根據(jù)所注入的邏輯,它可以導(dǎo)致SQL引擎執(zhí)行一個(gè)長隊(duì)列或者是一個(gè)時(shí)間延誤語句。攻擊者可以衡量頁面加載的時(shí)間,從而決定所注入的語句是否為真。 以上僅是對SQL攻擊的粗略分類。但從技術(shù)上講,如今的SQL注入攻擊者們在如何找出有漏洞的網(wǎng)站方面更加聰明,也更加全面了。出現(xiàn)了一些新型的SQL攻擊手段。黑客們可以使用各種工具來加速漏洞的利用過程。我們不妨看看theAsprox Trojan這種木馬,它主要通過一個(gè)發(fā)布郵件的僵尸網(wǎng)絡(luò)來傳播,其整個(gè)工作過程可以這樣描述:首先,通過受到控制的主機(jī)發(fā)送的垃圾郵件將此木馬安裝到電腦上,然后,受到此木馬感染的電腦會下載一段二進(jìn)制代碼,在其啟動時(shí),它會使用搜索引擎搜索用微軟的 ASP技術(shù)建立表單的、有漏洞的網(wǎng)站。搜索的結(jié)果就成為SQL注入攻擊的靶子清單。接著,這個(gè)木馬會向這些站點(diǎn)發(fā)動SQL注入式攻擊,使有些網(wǎng)站受到控制、破壞。訪問這些受到控制和破壞的網(wǎng)站的用戶將會受到欺騙,從另外一個(gè)站點(diǎn)下載一段惡意的JavaScript代碼。最后,這段代碼將用戶指引到第三個(gè)站點(diǎn),這里有更多的惡意軟件,如竊取口令的木馬。 以前,經(jīng)常有人警告或建議Web應(yīng)用程序的程序員們對其代碼進(jìn)行測試并打補(bǔ)丁,雖然SQL注入漏洞被發(fā)現(xiàn)和利用的機(jī)率并不太高。但近來攻擊者們越來越多地發(fā)現(xiàn)并惡意地利用這些漏洞。因此,在部署其軟件之前,開發(fā)人員應(yīng)當(dāng)更加主動地測試其代碼,并在新的漏洞出現(xiàn)后立即對代碼打補(bǔ)丁。
如果你是一個(gè)開發(fā)者,那么你需要:
1.使用參數(shù)化的過濾性語句 要防御SQL注入,用戶的輸入就絕對不能直接被嵌入到SQL語句中。恰恰相反,用戶的輸入必須進(jìn)行過濾,或者使用參數(shù)化的語句。參數(shù)化的語句使用參數(shù)而不是將用戶輸入嵌入到語句中。在多數(shù)情況中,SQL語句就得以修正。然后,用戶輸入就被限于一個(gè)參數(shù)。下面是一個(gè)使用Java和JDBC API例子: PreparedStatement prep =conn.prepareStatement("SELECT * FROM USERS WHERE PASSWORD=?"); prep.setString(1, pwd); 總體上講,有兩種方法可以保證應(yīng)用程序不易受到SQL注入的攻擊,一是使用代碼復(fù)查,二是強(qiáng)迫使用參數(shù)化語句的。強(qiáng)迫使用參數(shù)化的語句意味著嵌入用戶輸入的SQL語句在運(yùn)行時(shí)將被拒絕。不過,目前支持這種特性的并不多。如H2 數(shù)據(jù)庫引擎就支持。
2.還要避免使用解釋程序,因?yàn)檫@正是黑客們借以執(zhí)行非法命令的手段。
3.防范SQL注入,還要避免出現(xiàn)一些詳細(xì)的錯誤消息,因?yàn)楹诳蛡兛梢岳眠@些消息。要使用一種標(biāo)準(zhǔn)的輸入確認(rèn)機(jī)制來驗(yàn)證所有的輸入數(shù)據(jù)的長度、類型、語句、企業(yè)規(guī)則等。
4.使用專業(yè)的漏洞掃描工具。但防御SQL注入攻擊也是不夠的。攻擊者們目前正在自動搜索攻擊目標(biāo)并實(shí)施攻擊。其技術(shù)甚至可以輕易地被應(yīng)用于其它的Web架構(gòu)中的漏洞。企業(yè)應(yīng)當(dāng)投資于一些專業(yè)的漏洞掃描工具,如大名鼎鼎的Acunetix的Web漏洞掃描程序等。一個(gè)完善的漏洞掃描程序不同于網(wǎng) 絡(luò)掃描程序,它專門查找網(wǎng)站上的SQL注入式漏洞。最新的漏洞掃描程序可以查找最新發(fā)現(xiàn)的漏洞。
5.最后一點(diǎn),企業(yè)要在Web應(yīng)用程序開發(fā)過程的所有階段實(shí)施代碼的安全檢查。首先,要在部署Web應(yīng)用之前實(shí)施安全測試,這種措施的意義比以前更大、更深遠(yuǎn)。企業(yè)還應(yīng)當(dāng)在部署之后用漏洞掃描工具和站點(diǎn)監(jiān)視工具對網(wǎng)站進(jìn)行測試。
第一種:帶內(nèi)注入
這是典型的攻擊,攻擊者可以通過相同的通信通道發(fā)起攻擊并獲得結(jié)果。通過兩種帶內(nèi)技術(shù)完成:
1、基于錯誤的SQL注入,從顯示的錯誤消息中獲取有關(guān)數(shù)據(jù)庫的信息;
2、基于聯(lián)合的SQL注入,依賴于攻擊者能夠?qū)NIONALL被盜信息的結(jié)果與合法結(jié)果連接起來。
第二種:盲注入
也稱為推理SQL注入,盲注入攻擊不會直接從目標(biāo)數(shù)據(jù)庫中顯示數(shù)據(jù);相反,攻擊者會仔細(xì)檢查行為中的間接線索。HTTP響應(yīng)中的詳細(xì)信息,某些用戶輸入的空白網(wǎng)頁以及數(shù)據(jù)庫響應(yīng)某些用戶輸入需要多長時(shí)間,這些都可以是線索,具體取決于攻擊者的目標(biāo)。
第三種:帶外注入
這種攻擊比較復(fù)雜,當(dāng)攻擊者無法在單個(gè)直接查詢-響應(yīng)攻擊中實(shí)現(xiàn)其目標(biāo)時(shí),攻擊者可能會使用此攻擊。通常,攻擊者會制作SQL語句,這些語句在呈現(xiàn)給數(shù)據(jù)庫時(shí)會觸發(fā)數(shù)據(jù)庫系統(tǒng)創(chuàng)建與攻擊者控制的外部服務(wù)器的連接。以這種方式,攻擊者可以收集數(shù)據(jù)或控制數(shù)據(jù)庫的行為。
SQL注入:利用現(xiàn)有應(yīng)用程序,將(惡意)的SQL命令注入到后臺數(shù)據(jù)庫引擎執(zhí)行的能力,這是SQL注入的標(biāo)準(zhǔn)釋義。
安全測試|常見SQL注入攻擊方式、實(shí)例及預(yù)防
例如,對于整數(shù)參數(shù),可以驗(yàn)證其不為空并為數(shù)字類型;對于字符串參數(shù),使用正則表達(dá)式進(jìn)行過濾。其次,實(shí)施輸入數(shù)據(jù)的過濾和轉(zhuǎn)義,如使用PHP中的`addslashes()`函數(shù)對特殊字符進(jìn)行轉(zhuǎn)義。此外,采用預(yù)編譯機(jī)制至關(guān)重要,它可以避免將用戶輸入直接放入SQL語句中,從而有效防止SQL注入攻擊。具體來說,預(yù)編譯的查詢...
【DVWA實(shí)戰(zhàn)篇】12分鐘學(xué)會 SQL 注入攻擊實(shí)戰(zhàn)
攻擊者可以獲取數(shù)據(jù)庫中信息,超越設(shè)計(jì)者意圖執(zhí)行的 SQL 語句,分為普通注入和盲注。普通注入直接顯示數(shù)據(jù)庫字段,盲注則通過頁面的判斷結(jié)果猜測,可能需通過返回?cái)?shù)據(jù)的延遲來判斷。注入類型 SQL 注入分為數(shù)字型注入和字符型注入,依據(jù)匹配字段的類型決定。數(shù)字型注入使用數(shù)值篩選條件,字符型注入則需要構(gòu)造單...
sql注入產(chǎn)生的危害有哪些
sql注入產(chǎn)生的危害有哪些 SQL注入是一種惡意攻擊,通過向Web應(yīng)用程序的SQL查詢中注入惡意代碼,攻擊者可以獲取數(shù)據(jù)庫中的敏感信息,或者篡改數(shù)據(jù)庫中的數(shù)據(jù),甚至禁用整個(gè)數(shù)據(jù)庫。SQL注入的危害包括:數(shù)據(jù)泄露:攻擊者可以通過注入惡意代碼獲取敏感數(shù)據(jù),如用戶名、密碼、信用卡號等。數(shù)據(jù)篡改:攻擊者可以通過...
sql注入xss
兩者的區(qū)別與關(guān)聯(lián):雖然SQL注入和XSS攻擊分別針對數(shù)據(jù)庫和Web應(yīng)用程序,但它們都與用戶輸入有關(guān),且都是由于應(yīng)用程序未能正確處理和過濾用戶輸入導(dǎo)致的。在某些情況下,一個(gè)應(yīng)用程序可能同時(shí)受到這兩種攻擊的影響。因此,對于開發(fā)者來說,對用戶輸入進(jìn)行嚴(yán)格的驗(yàn)證和過濾,使用參數(shù)化查詢和安全的編碼方式,是...
sql注入的兩種方式
SQL注入攻擊是指攻擊者利用輸入欄或其他交互式應(yīng)用程序的漏洞,在SQL語句中插入惡意代碼,從而達(dá)到攻擊的目的。在SQL注入攻擊中,最常用的閉合方式是在輸入的數(shù)據(jù)中添加單引號。因?yàn)樵赟QL語句中,字符串類型的數(shù)據(jù)需要用單引號來包裹,如果不對用戶輸入的數(shù)據(jù)進(jìn)行過濾和處理,攻擊者就可以通過在輸入中添加單...
常見的SQL注入攻擊方法\\黑客入侵方法
SQL注入是網(wǎng)絡(luò)攻擊的一種常見手法,主要是通過網(wǎng)頁平臺入侵網(wǎng)站后臺,獲取管理員賬號和密碼。在獲取后端權(quán)限后,攻擊者會進(jìn)行提權(quán)操作。SQL注入的原理在于網(wǎng)頁對特殊符號和語句的過濾機(jī)制存在漏洞,為黑客提供了可乘之機(jī)。黑客通過提交特定的SQL語句,根據(jù)網(wǎng)站的響應(yīng)情況猜測用戶名和密碼。初學(xué)者應(yīng)從使用注入...
SQL 注入類型詳解
堆疊查詢堆疊查詢允在同一數(shù)據(jù)庫語句中執(zhí)行多條語句。攻擊者可利用此特性構(gòu)造復(fù)雜的注入語句,如結(jié)合延遲注入等方法獲取數(shù)據(jù)。內(nèi)聯(lián)視圖內(nèi)聯(lián)視圖允許創(chuàng)建臨時(shí)表,對于處理特定查詢情況非常有用。攻擊者可以利用內(nèi)聯(lián)視圖構(gòu)造SQL注入攻擊,繞過某些防護(hù)措施。本文對SQL注入類型進(jìn)行了分類,并深入探討了不同注入類型的...
SQL注入的漏洞及解決方案
這種攻擊通常發(fā)生在應(yīng)用程序的數(shù)據(jù)庫層,由于程序在設(shè)計(jì)時(shí)沒有對輸入數(shù)據(jù)進(jìn)行嚴(yán)格的檢查,使得攻擊者能夠?qū)?shù)據(jù)庫誤認(rèn)為是執(zhí)行常規(guī)SQL命令,從而實(shí)現(xiàn)攻擊。通常,SQL注入攻擊的位置包括表單提交、URL參數(shù)、Cookie參數(shù)、HTTP請求標(biāo)頭和一些邊緣輸入點(diǎn)等。sql注入的危害 SQL注入的危害不僅限于數(shù)據(jù)庫層面,還可能...
什么是sql注入攻擊
SQL注入攻擊是一種針對數(shù)據(jù)庫的安全漏洞攻擊方式。SQL注入攻擊是通過Web表單提交或輸入域名、URL等地方輸入惡意SQL代碼,從而達(dá)到繞過應(yīng)用防火墻檢測,對后臺數(shù)據(jù)庫進(jìn)行非法訪問或破壞的一種攻擊方式。這種攻擊的主要目標(biāo)是獲取數(shù)據(jù)庫中的敏感信息或改變數(shù)據(jù)內(nèi)容,導(dǎo)致數(shù)據(jù)的泄露、篡改甚至被刪除。具體來說,其...
一文搞懂 XSS攻擊、SQL注入、CSRF攻擊、DDOS攻擊、DNS劫持
預(yù)防XSS攻擊的關(guān)鍵在于后端對用戶提交的數(shù)據(jù)進(jìn)行消毒處理,即過濾特殊字符,避免javascript腳本直接被執(zhí)行,同時(shí)設(shè)置HTTPOnly屬性,防止通過js腳本讀取Cookie信息。在設(shè)計(jì)web應(yīng)用時(shí),必須嚴(yán)格驗(yàn)證和清理所有輸入數(shù)據(jù),避免用戶輸入影響服務(wù)器的正常操作。SQL注入攻擊則是通過HTTP請求中注入惡意SQL命令,服務(wù)器在構(gòu)造...
相關(guān)評說:
梅里斯達(dá)斡爾族區(qū)出碴: ______ SQL注入,這個(gè)很早的事情了,流行于ASP時(shí)代,主要是由于前臺驗(yàn)證不夠,后臺又沒有過濾不安全字符.簡單的例子:分別由NameTxt,PwdTxt接受頁面輸入用戶名和密碼,然后構(gòu)造如下sql語句:select * from [User] where userName = '" + ...
梅里斯達(dá)斡爾族區(qū)出碴: ______ 1. sql注入攻擊是所有注入攻擊的統(tǒng)稱,而不是單純的只針對SQL數(shù)據(jù)庫的注射.所以樓主這個(gè)問題問的有些毛病. 2. 現(xiàn)在常用的攻擊方式(除流量外):sql injection , xss , csrf , ssi . 3. 別的攻擊方式可利用性都很低了!
梅里斯達(dá)斡爾族區(qū)出碴: ______ 這個(gè)沒辦法,SQL注入的方法是一種網(wǎng)頁上面的入侵方式.一般拿到的就是網(wǎng)站的后天管理的用戶和密碼.不過服務(wù)器的權(quán)限就是SQL之后的提權(quán)的過程了.SQL的原理就是因?yàn)榫W(wǎng)頁對于一些特殊的符號和語句的過濾出現(xiàn)問題,給黑客造成可乘之機(jī).通過提交一些語句,通過網(wǎng)站返回的情況來,最后猜出用戶名和密碼.想玩這方面的入侵.建議先從明小子和阿D的注入軟件開始用起,然后學(xué)習(xí)注入語句和匯編語言(主要是asp、php).不過現(xiàn)在好多網(wǎng)站都有防注入的過濾,小心被抓.還有就是注入之后的提升權(quán)限的過程還要多看.
梅里斯達(dá)斡爾族區(qū)出碴: ______ 請參考SQL 注入天書~ 所謂SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,比如先前的很多影視網(wǎng)站泄露VIP會員密碼大多就是通過WEB表單遞交查詢字符暴...
梅里斯達(dá)斡爾族區(qū)出碴: ______ 通常HTTP消息包括客戶機(jī)向服務(wù)器的請求消息和服務(wù)器向客戶機(jī)的響應(yīng)消息.這兩種類型的消息由一個(gè)起始行,一個(gè)或者多個(gè)頭域,一個(gè)只是頭域結(jié)束的空行和可選的消息體組成.HTTP的頭域包括通用頭,請求頭,響應(yīng)頭和實(shí)體頭四個(gè)部分.每個(gè)頭域由一個(gè)域名,冒號(:)和域值三部分組成.域名是大小寫無關(guān)的,域值前可以添加任何數(shù)量的空格符,頭域可以被擴(kuò)展為多行,在每行開始處,使用至少一個(gè)空格或制表符.
梅里斯達(dá)斡爾族區(qū)出碴: ______ 數(shù)據(jù)庫漏洞攻擊是基于數(shù)據(jù)庫自身的漏洞進(jìn)行入侵的行為,但是當(dāng)前數(shù)據(jù)庫的運(yùn)行環(huán)境必然存在大量的應(yīng)用交互工作.那么借用應(yīng)用訪問對數(shù)據(jù)庫實(shí)現(xiàn)sql注入攻擊行為,就有些防不勝防了. 數(shù)據(jù)庫防火墻產(chǎn)品通過對SQL語句進(jìn)行注入特征描述,完成對SQL注入行為的檢測和阻斷.同時(shí)數(shù)據(jù)庫防火墻系統(tǒng)提供缺省SQL注入特征庫并支持定制化添加.全面的阻斷了基于應(yīng)用訪問的攻擊行為.
梅里斯達(dá)斡爾族區(qū)出碴: ______ 所謂SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,比如先前的很多影視網(wǎng)站泄露VIP會員密碼大多就是通過WEB表單遞交查詢字符暴出的,這類表單特別容易受到SQL注入式攻擊.