新聞中心
隨著互聯(lián)網(wǎng)和計算機技術(shù)的快速發(fā)展,我們的生活和工作都離不開計算機。同時,計算機網(wǎng)絡(luò)也成為了信息交流和商業(yè)交易的重要平臺。網(wǎng)絡(luò)安全問題因此日益受到關(guān)注,其中SQL注入攻擊是常見而且嚴(yán)重的威脅之一。SQL注入攻擊是通過在應(yīng)用程序中注入惡意SQL語句,使攻擊者能夠訪問或變更原本用于保護(hù)數(shù)據(jù)的查詢,并能夠通過無授權(quán)查詢來獲得敏感數(shù)據(jù)。因此,注入檢測對于保障網(wǎng)站的安全很重要。

柳林網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,柳林網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為柳林近1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的柳林做網(wǎng)站的公司定做!
在進(jìn)行注入檢測時,之一步是要判斷數(shù)據(jù)庫類型。這個步驟的重要性不言而喻,因為在實際操作中大多數(shù)注入檢測的工具都只支持某一類型的數(shù)據(jù)庫。因此,檢測工具不知道應(yīng)該使用什么語句進(jìn)行注射,會導(dǎo)致檢測無法進(jìn)行。在本文中,我們將討論如何輕松判斷數(shù)據(jù)庫類型。
數(shù)據(jù)庫類型的判斷方法主要有三種:錯誤注入、閉合字符和時間延遲注射法。
錯誤注入是使用錯誤的SQL語句來發(fā)現(xiàn)網(wǎng)站使用的數(shù)據(jù)庫類型。攻擊者發(fā)送一份惡意的SQL語句,這個語句包含的錯誤與特定的數(shù)據(jù)庫相關(guān)。當(dāng)攻擊者發(fā)送錯誤的SQL語句時,網(wǎng)站會返回一個錯誤信息。通過從錯誤信息中提取特定的數(shù)據(jù)庫信息,注入者可以確定該系統(tǒng)使用的數(shù)據(jù)庫類型并選擇正確的注射方法。
閉合字符方法是通過注入閉合字符(‘或“)來判斷數(shù)據(jù)庫是MySQL還是MS-SQL等。攻擊者向網(wǎng)絡(luò)設(shè)備發(fā)送一個請求,并在該請求中注入閉合字符。如果網(wǎng)站返回一個錯誤消息提示語法錯誤,那么這個系統(tǒng)使用的就是MySQL數(shù)據(jù)庫,這個可以說明該應(yīng)用程序是使用的MySQL作為后臺數(shù)據(jù)庫。如果提示語法錯誤的字符是形如“Implicit conversion from data type datetime to int is not allowed”, 其中datetime轉(zhuǎn)換為int當(dāng)中出現(xiàn)問題,說明系統(tǒng)使用的就是MS-SQL數(shù)據(jù)庫。
時間延遲注射法是一種常見的用于判斷數(shù)據(jù)庫類型的注射技術(shù)。有時候,在注入過程中,當(dāng)遇到錯誤字符或特殊字符無法處理時,系統(tǒng)不會報錯,注入者就會用時間延遲注射法來檢查目標(biāo)平臺的類型。此方法不會造成系統(tǒng)癱瘓,也不會受到防火墻等安全設(shè)備的限制。它是一種通過注入暫停延遲,然后再根據(jù)延遲時間來判斷目標(biāo)平臺類型的技術(shù)。例如,測試現(xiàn)有平臺是否是MySQL的方法就是在查詢中插入兩組查詢:“SELECT SLEEP(5)”和“SELECT BENCHMARK(5000000,Md5(‘jxd666’))”。如果延遲5秒是因為系統(tǒng)正在處理SELECT SLEEP(5)而不是處理SELECT BENCHMARK(5000000,MD5(‘jxd666’)),那么這個目標(biāo)平臺就是MySQL。
了解如何判斷數(shù)據(jù)庫類型對于注入檢測至關(guān)重要。錯誤注入、閉合字符和時間延遲注射法是三種常用的檢測方法。我們建議網(wǎng)站開發(fā)者在開發(fā)應(yīng)用程序時應(yīng)該考慮到注入攻擊防御,加強代碼審計和身份驗證機制,以保證數(shù)據(jù)安全。
相關(guān)問題拓展閱讀:
- SQL注入攻擊的種類和防范手段有哪些?
SQL注入攻擊的種類和防范手段有哪些?
暈,這不是C#考題嗎。
SQL注入攻擊的種類
知彼知己,方可取勝。首先要清楚SQL注入攻擊有哪些種類。
1.沒有正確過濾轉(zhuǎn)義字符
在用戶的輸入沒有為轉(zhuǎn)義字符過濾時,就會發(fā)生這種形式的注入式攻擊,它會被傳遞給一個SQL語句。這樣就會導(dǎo)致應(yīng)用程序的終端用戶對數(shù)據(jù)庫上的語句實施操縱。比方說,下面的這行代碼就會演示這種漏洞:
statement := “SELECT * FROM users WHERE name = ‘” + userName + “‘; “
這種代碼的設(shè)計目的是將一個特定的用戶從其用戶表中取出,但是,如果用戶名被一個惡意的用戶用一種特定的方式偽造,這個語句所執(zhí)行的操作可能就不僅僅是代碼的作者所期望的那樣了。例如,將用戶名變量(即username)設(shè)置為:
a’ or ‘t’=’t,此時原始語句發(fā)生了變化:
SELECT * FROM users WHERE name = ‘a(chǎn)’ OR ‘t’=’t’;
如果這種代碼被用拿冊老于一個認(rèn)證過程,那么這個例子就能夠強迫選擇一個合法的用戶名,因為賦值’t’=’t永遠(yuǎn)是正確的。
在一些SQL服務(wù)器上,如在SQL Server中,任何一個SQL命令都可以通過這種方法被注入,包括執(zhí)行多個語句。下面語句中的username的值將會導(dǎo)致刪除“users”表,又可以從“data”表中選擇所有的數(shù)據(jù)(實際上就是透露了每一個用戶的信息)。
a’; DROP TABLE users; SELECT * FROM data WHERE name LIKE ‘%
這就將最終的SQL語句變成下面這個樣子:
SELECT * FROM users WHERE name = ‘a(chǎn)’; DROP TABLE users; SELECT * FROM DATA WHERE name LIKE ‘%’;
其它的SQL執(zhí)行不會將執(zhí)行同樣查詢中的多個命令作為一項安全措施。這會防止攻擊者注入完全獨立的查詢,不過卻不會阻止攻擊者修改查詢。
2.Incorrect type handling
如果一個用戶提供的字段并非一個強類型,或者沒有實施類型強制,就會發(fā)生這種形式的攻擊。當(dāng)在一個SQL語句中使用一個數(shù)字字段時,如果程序員沒有檢查用戶輸入的合法性(是否為數(shù)字型)就會發(fā)生這種攻擊。例如:
statement := “SELECT * FROM data WHERE id = ” + a_variable + “; “
從這個語句可以看出,作者希望a_variable是一個與“id”字段有關(guān)的數(shù)字。不過,如果終端用戶選擇一個字符串,就繞過了對轉(zhuǎn)義字符的需消升要。例 如,將a_variable設(shè)置為:1; DROP TABLE users,它會將“users”表從數(shù)據(jù)庫中刪除,SQL語句變成:SELECT * FROM DATA WHERE id = 1; DROP TABLE users;
3.數(shù)據(jù)庫服務(wù)器中的漏洞
有時,數(shù)據(jù)庫服務(wù)器軟件中也存在著漏洞,如MYSQL服務(wù)器中mysql_real_escape_string()函數(shù)漏洞。這種漏洞允許一個攻擊者根據(jù)錯誤的統(tǒng)一字符編碼執(zhí)行一次成功的SQL注入式攻擊。
4.盲目SQL注入式攻擊
當(dāng)一個Web應(yīng)用程序易于遭受攻擊而其結(jié)果對攻擊者卻不見時,就會發(fā)生所謂的盲目SQL注入式攻擊。有漏洞的網(wǎng)頁可能并不會顯示數(shù)據(jù),而是根據(jù)注入到合法 語句中姿襪的邏輯語句的結(jié)果顯示不同的內(nèi)容。這種攻擊相當(dāng)耗時,因為必須為每一個獲得的字節(jié)而精心構(gòu)造一個新的語句。但是一旦漏洞的位置和目標(biāo)信息的位置被確 立以后,一種稱為Absinthe的工具就可以使這種攻擊自動化。
5.條件響應(yīng)
注意,有一種SQL注入迫使數(shù)據(jù)庫在一個普通的應(yīng)用程序屏幕上計算一個邏輯語句的值:
SELECT booktitle FROM booklist WHERE bookId = ‘OOk14cd’ AND 1=1
這會導(dǎo)致一個標(biāo)準(zhǔn)的面面,而語句
SELECT booktitle FROM booklist WHERE bookId = ‘OOk14cd’ AND 1=2在頁面易于受到SQL注入式攻擊時,它有可能給出一個不同的結(jié)果。如此這般的一次注入將會證明盲目的SQL注入是可能的,它會使攻擊者根據(jù)另外一個 表中的某字段內(nèi)容設(shè)計可以評判真?zhèn)蔚恼Z句。
6.條件性差錯
如果WHERE語句為真,這種類型的盲目SQL注入會迫使數(shù)據(jù)庫評判一個引起錯誤的語句,從而導(dǎo)致一個SQL錯誤。例如:
SELECT 1/0 FROM users WHERE username=’Ralph’。顯然,如果用戶Ralph存在的話,被零除將導(dǎo)致錯誤。
7.時間延誤
時間延誤是一種盲目的SQL注入,根據(jù)所注入的邏輯,它可以導(dǎo)致SQL引擎執(zhí)行一個長隊列或者是一個時間延誤語句。攻擊者可以衡量頁面加載的時間,從而決定所注入的語句是否為真。
以上僅是對SQL攻擊的粗略分類。但從技術(shù)上講,如今的SQL注入攻擊者們在如何找出有漏洞的網(wǎng)站方面更加聰明,也更加全面了。出現(xiàn)了一些新型的SQL攻 擊手段。黑客們可以使用各種工具來加速漏洞的利用過程。我們不妨看看the Asprox Trojan這種木馬,它主要通過一個發(fā)布郵件的僵尸網(wǎng)絡(luò)來傳播,其整個工作過程可以這樣描述:首先,通過受到控制的主機發(fā)送的垃圾郵件將此木馬安裝到電 腦上,然后,受到此木馬感染的電腦會下載一段二進(jìn)制代碼,在其啟動時,它會使用搜索引擎搜索用微軟的ASP技術(shù)建立表單的、有漏洞的網(wǎng)站。搜索的結(jié)果就成 為SQL注入攻擊的靶子清單。接著,這個木馬會向這些站點發(fā)動SQL注入式攻擊,使有些網(wǎng)站受到控制、破壞。訪問這些受到控制和破壞的網(wǎng)站的用戶將會受到 欺騙,從另外一個站點下載一段惡意的JavaScript代碼。最后,這段代碼將用戶指引到第三個站點,這里有更多的惡意軟件,如竊取口令的木馬。
以前,我們經(jīng)常警告或建議Web應(yīng)用程序的程序員們對其代碼進(jìn)行測試并打補丁,雖然SQL注入漏洞被發(fā)現(xiàn)和利用的機率并不太高。但近來攻擊者們越來越多地 發(fā)現(xiàn)并惡意地利用這些漏洞。因此,在部署其軟件之前,開發(fā)人員應(yīng)當(dāng)更加主動地測試其代碼,并在新的漏洞出現(xiàn)后立即對代碼打補丁。
防御和檢查SQL注入的手段
1.使用參數(shù)化的過濾性語句
要防御SQL注入,用戶的輸入就絕對不能直接被嵌入到SQL語句中。恰恰相反,用戶的輸入必須進(jìn)行過濾,或者使用參數(shù)化的語句。參數(shù)化的語句使用參數(shù)而不 是將用戶輸入嵌入到語句中。在多數(shù)情況中,SQL語句就得以修正。然后,用戶輸入就被限于一個參數(shù)。下面是一個使用Java和JDBC API例子:
PreparedStatement prep = conn.prepareStatement(“SELECT * FROM USERS WHERE PASSWORD=?”);
prep.setString(1, pwd);
總體上講,有兩種方法可以保證應(yīng)用程序不易受到SQL注入的攻擊,一是使用代碼復(fù)查,二是強迫使用參數(shù)化語句的。強迫使用參數(shù)化的語句意味著嵌入用戶輸入的SQL語句在運行時將被拒絕。不過,目前支持這種特性的并不多。如H2 數(shù)據(jù)庫引擎就支持。
2.還要避免使用解釋程序,因為這正是黑客們借以執(zhí)行非法命令的手段。
3.防范SQL注入,還要避免出現(xiàn)一些詳細(xì)的錯誤消息,因為黑客們可以利用這些消息。要使用一種標(biāo)準(zhǔn)的輸入確認(rèn)機制來驗證所有的輸入數(shù)據(jù)的長度、類型、語句、企業(yè)規(guī)則等。
4.使用專業(yè)的漏洞掃描工具。但防御SQL注入攻擊也是不夠的。攻擊者們目前正在自動搜索攻擊目標(biāo)并實施攻擊。其技術(shù)甚至可以輕易地被應(yīng)用于其它的Web 架構(gòu)中的漏洞。企業(yè)應(yīng)當(dāng)投資于一些專業(yè)的漏洞掃描工具,如大名鼎鼎的Acunetix的Web漏洞掃描程序等。一個完善的漏洞掃描程序不同于網(wǎng)絡(luò)掃描程 序,它專門查找網(wǎng)站上的SQL注入式漏洞。最新的漏洞掃描程序可以查找最新發(fā)現(xiàn)的漏洞。
5.最后一點,企業(yè)要在Web應(yīng)用程序開發(fā)過程的所有階段實施代碼的安全檢查。首先,要在部署Web應(yīng)用之前實施安全測試,這種措施的意義比以前更大、更深遠(yuǎn)。企業(yè)還應(yīng)當(dāng)在部署之后用漏洞掃描工具和站點監(jiān)視工具對網(wǎng)站進(jìn)行測試。
Web安全拉警報已經(jīng)響起,安全形式異常嚴(yán)峻,企業(yè)絕對不應(yīng)當(dāng)草率從事。安全重于泰山!
惡意用戶在提交查詢請求的過程中將SQL語句插入到請求內(nèi)容中,同時程序本身對用戶輸入內(nèi)容過分信任而未對惡意用戶插入的SQL語句進(jìn)行過濾,導(dǎo)致SQL語句直接被服務(wù)端執(zhí)行。
SQL注入攻擊慶數(shù)分為哪幾類?
①注入點的不同分類:數(shù)字類型的注入、字符串類型的注入。
②提交方式的不同分類:GET注入、POST注入、COOKIE注入、HTTP注入。
③獲取信息方式的不同分類:基于布爾的盲注、基于時間的盲注、基于報錯的盲注。
SQL注入攻擊如何防御?
①定制黑名單:將常用的SQL注入字符寫入到黑名單中,然后通過程序蠢差圓對用戶提交的POST、GET請求以及請求中的各個字段都進(jìn)行過濾檢查,篩選威脅字符。
②限制查詢長度:由于SQL注入過程中需要構(gòu)造較長的SQL語句,因此,一些特定的程序可以使用限制用戶提交的請求內(nèi)容的長度來達(dá)到防御SQL注入的目的,但這種效果不太好。
③限制查詢類型:限制用戶請求內(nèi)容中每個字段的類型,并在用戶提交請求的時候進(jìn)行檢查,凡不符合該類型的提交方式就認(rèn)為是非法請求。
④白名單法:該方法只對部分程序有效,對一些請求內(nèi)容相對固定的程序,可以制定請求內(nèi)容的白名單,比如:某程序接受的請求只有數(shù)字,且數(shù)字為1-100,這樣可以檢查程序接受的請求內(nèi)容是否匹配,如果不匹配,則認(rèn)為是非法請求。
⑤設(shè)置數(shù)據(jù)庫權(quán)限:根據(jù)程序要求為特定的帶塌表設(shè)置特定的權(quán)限,如:某段程序?qū)δ潮碇恍杈邆鋝elect權(quán)限即可,這樣即使程序存在問題,惡意用戶也無法對表進(jìn)行update或insert等寫入操作。
⑥限制目錄權(quán)限:Web目錄應(yīng)至少遵循可寫目錄不可執(zhí)行,可執(zhí)行目錄不可寫的原則;在此基礎(chǔ)上,對各目錄進(jìn)行必要的權(quán)限細(xì)化。
上面寫的之多可真是詳細(xì),不過
SQL注入攻擊的種類和防范手段有哪些?
不就是寫數(shù)據(jù)庫執(zhí)行代碼到數(shù)據(jù)庫中,然后謹(jǐn)拍攻擊者利用各種各樣的比如COOKIE啊納晌桐什么的查看執(zhí)行信息
防范就是:編寫防止執(zhí)行性SQL腳本,對提交數(shù)據(jù)庫內(nèi)容進(jìn)行洞坦過濾操作
注入判斷數(shù)據(jù)庫類型的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于注入判斷數(shù)據(jù)庫類型,注入檢測:輕松判斷數(shù)據(jù)庫類型,SQL注入攻擊的種類和防范手段有哪些?的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站營銷推廣找創(chuàng)新互聯(lián),全國分站站群網(wǎng)站搭建更好做SEO營銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價格厚道。提供成都服務(wù)器托管租用、綿陽服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽服務(wù)器機房服務(wù)器托管租用。
當(dāng)前標(biāo)題:注入檢測:輕松判斷數(shù)據(jù)庫類型 (注入判斷數(shù)據(jù)庫類型)
轉(zhuǎn)載注明:http://m.fisionsoft.com.cn/article/cohsgps.html


咨詢
建站咨詢
