SQL注入一般會在http://xxx.xxx.xxx/abc.asp?id=XX這樣等帶有參數的ASP動態網頁中,有些動態網頁中可能只有一個參數,有些可能有n個參數;有些參數是整型,有些參數是字元串型。只要是帶有參數的動態網頁訪問了資料庫就有可能存在SQL注入。
我們首選要修改瀏覽器的設置,以便更好的了解動態網頁參數里包含的信息。以IE瀏覽器為例,把IE菜單-工具-Internet選項-高級-顯示友好HTTP錯誤信息前面的勾去掉。
下面以http://xxx.xxx.xxx/abc.asp?p=YY為例進行分析,「YY」可能是整型,也有可能是字元串。
1、整型參數的判斷
當輸入的參數YY為整型時,通常abc.asp中SQL語句原貌大致如下:
select * from 表名 where 欄位=YY,所以可以用以下步驟測試SQL注入是否存在。
(1)http://xxx.xxx.xxx/abc.asp?p=YY and 1=2, abc.asp運行異常;
(2)http://xxx.xxx.xxx/abc.asp?p=YY』(附加一個單引號),此時abc.ASP中的SQL語句變成了select * from 表名 where 欄位=YY』,abc.asp運行異常;
(3)http://xxx.xxx.xxx/abc.asp?p=YY and 1=1, abc.asp運行正常,而且與http://xxx.xxx.xxx/abc.asp?p=YY運行結果相同;
如果這三個方面全部滿足,abc.asp中一定存在SQL注入漏洞!
2、字元串型參數的判斷
當輸入的參數YY為字元串時,通常abc.asp中SQL語句原貌大致如下:
select * from 表名 where 欄位=』YY』,所以可以用以下步驟測試SQL注入是否存在。
(1)http://xxx.xxx.xxx/abc.asp?p=YY&nb … 39;1』=』2′, abc.asp運行異常;
(2)http://xxx.xxx.xxx/abc.asp?p=YY&nb … 39;1』=』1′, abc.asp運行正常,而且與http://xxx.xxx.xxx/abc.asp?p=YY運行結果相同;
(3)http://xxx.xxx.xxx/abc.asp?p=YY』(附加一個單引號),此時abc.ASP中的SQL語句變成了select * from 表名 where 欄位=YY』,abc.asp運行異常;
如果這三個方面全部滿足,abc.asp中一定存在SQL注入漏洞!
3、字元被過濾的判斷
有安全意識的ASP程序員會過濾掉單引號等字元,以防止SQL注入。這種情況可以用下面幾種方法嘗試。
(1)ASCII方法:所有的輸入部分或全部字元的ASCII代碼,如U = CRH(85),一個= CRH(97),等等。
(2)UNICODE方法:在IIS UNICODE字元集實現國際化,我們可以在輸入字元串即輸入UNICODE字元串。如+ = % 2 b,空格= % 20,等;
(1)混合設置方法:大小是大小寫不敏感的,因為根據當時和過濾器的程序員通常要麼過濾所有大寫字母的字元串,或過濾所有小寫的字元串,大小寫混合往往會被忽略。如用SelecT代替select,SELECT等。
② 如何檢測sql注入
不要拼接SQL語句,即防止傳入參數問題,
舉例:
select * from a where password = ' 變數 ';
假如傳入的變數是: ' or 1=1 or 1=',那麼最後這個語句就是:
select * from a where password = '' ' or 1=1 or 1='';
你說會得到什麼結果
如果你使用ADO,則盡量使用parameter方式傳入參數,不要自己拼接sql語句,要拼接的話,確保傳入參數不是可以破壞原sql語句的變數
③ 如何判斷是否存在SQL注入以及注入類型
許多網站程序在編寫時,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段資料庫查詢代碼,根據程序返回的結果,獲得某些想得知的數據,這就是所謂的SQL Injection,即SQL注入。如何判斷網站是否存在POST注入呢!請看以下步驟操作做。
POST注入操作介紹:
1.POST注入一般發生在表單數據傳輸時、抓取POST提交的數據進行SQL語句測試
POST注入操作流程:
比如抓取的POST數據為:userName=admin&password=admin
測試諸如語句填寫:userName=admin&password='admin 1=1--
像這樣userName 參數後面加一些SQL語句(注入測試語句)進行POST數據注入測試即可。
④ SQL注入是什麼意思
SQL注入屬於注入式攻擊,這種攻擊是因為在項目中沒有將代碼與數據隔離,在讀取數據的時候,錯誤地將數據作為代碼的一部分執行而導致的。
如何處理SQL注入情況?三個方面:
1、過濾用戶輸入參數中的特殊字元,降低風險;
2、禁止通過字元串拼接sql語句,嚴格使用參數綁定來傳入參數;
3、合理使用資料庫框架提供的機制。
⑤ 怎麼檢測sql server注入漏洞
許多網站程序在編寫時,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段資料庫查詢代碼(一般是在瀏覽器地址欄進行,通過正常的www埠訪問),根據程序返回的結果,獲得某些想得知的數據,這就是所謂的SQL Injection,即SQL注入。
網站的惡夢——SQL注入
SQL注入通過網頁對網站資料庫進行修改。它能夠直接在資料庫中添加具有管理員許可權的用戶,從而最終獲得系統管理員許可權。黑客可以利用獲得的管理員許可權任意獲得網站上的文件或者在網頁上加掛木馬和各種惡意程序,對網站和訪問該網站的網友都帶來巨大危害。
防禦SQL注入有妙法
第一步:很多新手從網上下載SQL通用防注入系統的程序,在需要防範注入的頁面頭部用來防止別人進行手動注入測試。
可是如果通過SQL注入分析器就可輕松跳過防注入系統並自動分析其注入點。然後只需要幾分鍾,你的管理員賬號及密碼就會被分析出來。
第二步:對於注入分析器的防範,通過實驗,發現了一種簡單有效的防範方法。首先我們要知道SQL注入分析器是如何工作的。在操作過程中,發現軟體並不是沖著「admin」管理員賬號去的,而是沖著許可權(如flag=1)去的。這樣一來,無論你的管理員賬號怎麼變都無法逃過檢測。
第三步:既然無法逃過檢測,那我們就做兩個賬號,一個是普通的管理員賬號,一個是防止注入的賬號,如果找一個許可權最大的賬號製造假象,吸引軟體的檢測,而這個賬號里的內容是大於千字以上的中文字元,就會迫使軟體對這個賬號進行分析的時候進入全負荷狀態甚至資源耗盡而死機。下面我們就來修改資料庫吧。
1.對表結構進行修改。將管理員的賬號欄位的數據類型進行修改,文本型改成最大欄位255(其實也夠了,如果還想做得再大點,可以選擇備注型),密碼的欄位也進行相同設置。
2.對表進行修改。設置管理員許可權的賬號放在ID1,並輸入大量中文字元(最好大於100個字)。
3.把真正的管理員密碼放在ID2後的任何一個位置(如放在ID549上)。
我們通過上面的三步完成了對資料庫的修改。
另外要明白您做的ID1賬號其實也是真正有許可權的賬號,現在計算機處理速度那麼快,要是遇上個一定要將它算出來的軟體,這也是不安全的。只要在管理員登錄的頁面文件中寫入字元限制就行了,就算對方使用這個有上千字元的賬號密碼也會被擋住的,而真正的密碼則可以不受限制。
⑥ 如何判斷SQL注入
使用參數!!比如一條查詢的sql語句原句:String sql = "select * from where name = 5";改變後:String sql = "select * from where name = @name";然後給@name賦值就可以了.
⑦ 如何判斷網站中存在sql注入漏洞
這個回答可以簡單,可以變成一本書。 簡單的回答是,使用字元串長度檢查和字元檢查; 可以在客戶端和伺服器端同時做。 如用戶名長度為6位,密碼為6位; 客戶端不允許使用內部含「 」空格,-減號,'單引號
⑧ 什麼是SQL注入
SQL注入:利用現有應用程序,將(惡意)的SQL命令注入到後台資料庫引擎執行的能力,這是SQL注入的標准釋義。
隨著B/S模式被廣泛的應用,用這種模式編寫應用程序的程序員也越來越多,但由於開發人員的水平和經驗參差不齊,相當一部分的開發人員在編寫代碼的時候,沒有對用戶的輸入數據或者是頁面中所攜帶的信息(如Cookie)進行必要的合法性判斷,導致了攻擊者可以提交一段資料庫查詢代碼,根據程序返回的結果,獲得一些他想得到的數據。
SQL注入利用的是正常的HTTP服務埠,表面上看來和正常的web訪問沒有區別,隱蔽性極強,不易被發現。
SQL注入攻擊過程分為五個步驟:
第一步:判斷Web環境是否可以SQL注入。如果URL僅是對網頁的訪問,不存在SQL注入問題,如:http://www.../162414739931.shtml就是普通的網頁訪問。只有對資料庫進行動態查詢的業務才可能存在SQL注入,如:http://www...../webhp?id=39,其中?id=39表示資料庫查詢變數,這種語句會在資料庫中執行,因此可能會給資料庫帶來威脅。
第二步:尋找SQL注入點。完成上一步的片斷後,就要尋找可利用的注入漏洞,通過輸入一些特殊語句,可以根據瀏覽器返回信息,判斷資料庫類型,從而構建資料庫查詢語句找到注入點。
第三步:猜解用戶名和密碼。資料庫中存放的表名、欄位名都是有規律可言的。通過構建特殊資料庫語句在資料庫中依次查找表名、欄位名、用戶名和密碼的長度,以及內容。這個猜測過程可以通過網上大量注入工具快速實現,並藉助破解網站輕易破譯用戶密碼。
第四步:尋找WEB管理後台入口。通常WEB後台管理的界面不面向普通用戶
開放,要尋找到後台的登陸路徑,可以利用掃描工具快速搜索到可能的登陸地址,依次進行嘗試,就可以試出管理台的入口地址。
第五步:入侵和破壞。成功登陸後台管理後,接下來就可以任意進行破壞行為,如篡改網頁、上傳木馬、修改、泄漏用戶信息等,並進一步入侵資料庫伺服器。
SQL注入攻擊的特點:
變種極多,有經驗的攻擊者會手動調整攻擊參數,致使攻擊數據的變種是不可枚舉的,這導致傳統的特徵匹配檢測方法僅能識別相當少的攻擊,難以防範。
攻擊過程簡單,目前互聯網上流行眾多的SQL注入攻擊工具,攻擊者藉助這些工具可很快對目標WEB系統實施攻擊和破壞。
危害大,由於WEB編程語言自身的缺陷以及具有安全編程能力的開發人員少之又少,大多數WEB業務系統均具有被SQL注入攻擊的可能。而攻擊者一旦攻擊成功,可以對控制整個WEB業務系統,對數據做任意的修改,破壞力達到及至。
SQL注入的危害和現狀
SQL注入的主要危害包括:
未經授權狀況下操作資料庫中的數據
惡意篡改網頁內容
私自添加系統帳號或者是資料庫使用者帳號
網頁掛木馬
如何防止SQL參數:
1,檢查上傳的數據,並過濾
2. 禁止拼接SQL字元串
3.使用SQL參數化處理
4.載入防入侵等硬體設施
⑨ 怎麼判斷一個網站是否有sql注入
許多網站程序在編寫時,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段資料庫查詢代碼,根據程序返回的結果,獲得某些想得知的數據,這就是所謂的SQL Injection,即SQL注入。如何判斷網站是否存在POST注入呢!請看以下步驟操作做。
POST注入操作介紹:
1.POST注入一般發生在表單數據傳輸時、抓取POST提交的數據進行SQL語句測試
POST注入操作流程:
比如抓取的POST數據為:userName=admin&password=admin
測試諸如語句填寫:userName=admin&password='admin 1=1--
像這樣userName 參數後面加一些SQL語句(注入測試語句)進行POST數據注入測試即可。