當前位置:首頁 » 編程語言 » sql漏洞檢測

sql漏洞檢測

發布時間: 2022-07-21 06:58:16

⑴ 如何判斷資料庫sql注入漏洞

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注入漏洞檢測對於字元串型的判斷方法

你說的這兩種是一樣的,就看第一種就行。我給你逐步解釋一下

  1. 第一步在url後面添加了『後sql語句可以正常運行說明asp代碼沒有設置屏蔽』的機制;

  2. 第二步在url最後添加了'and'1'='1後select語句就編程

    select * from 表名 where 欄位='YY'and'1'='1'

    如果這樣也能正常運行則證明asp代碼沒有屏蔽條件插入的機制;

    第二步和第一步其實沒有本質的區別,只是進一步確認;

  3. 第三部url後面追加的編程了1=2,同第二部一個原理,只不過這次測試的是asp代碼沒有屏蔽掉資料庫報錯信息,而黑客可以通過這些信息得到很多系統信息以方便下一步的動作。

綜上三步,當然可以知道這里可以作為入住點。LZ應該能明白了吧

⑶ 怎麼檢測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注入漏洞有哪些

SQL注入攻擊是當今最危險、最普遍的基於Web的攻擊之一。所謂注入攻擊,是攻擊者把SQL命令插入到Web表單的輸入域頁面請求的查詢字元串中,如果要對一個網站進行SQL注入攻擊,首先需要找到存在SQL注入漏洞的地方,也是尋找所謂的注入點。SQL注入點一般存在於登錄頁面、查找頁面或添加頁面等用戶可以查找或修改數據的地方。

SQL注入漏洞有哪些

最常用的尋找SQL注入點的方法,是在網站中尋找如下形式的頁面鏈接:http://www.xxx.com/xxx.asp?id=YY,其中「YY」可能是數字,也有可能是字元串,分別被稱為整數類型數據或者字元型數據。在本章中我們主要針對整數型數據進行SQL注入講解。

通常可以使用以下兩種方法進行檢測,判斷該頁面鏈接是否存在SQL注入漏洞。

加引號」法

在瀏覽器地址欄中的頁面鏈接地址後面增加一個單引號,如下所示:http://www.xxx.com/xxx.asp?id=YY』,然後訪問該鏈接地址,瀏覽器可能會返回類似於下面的錯誤提示信息:Microsoft JET Database Engine 錯誤』80040e14』,字元串的語法錯誤在查詢表達式』ID=YY』中。

如圖所示,頁面中如果返回了類似的錯誤信息,說明該網站可能存在SQL注入攻擊的漏洞。

如果沒有注入點的存在,也很容易判斷。

述兩種鏈接一般都會有程序定義的錯誤提示,或提示類型轉換時出錯。

再次提醒:可能的SQL注入點一般存在於登錄頁面、查找頁面或添加頁面等用戶可以查找或修改數據的地方

⑸ 如何檢測SQL注入和CSS攻擊漏洞

對於他們的攻擊,主要是通過使用正則表達式來做輸入檢測:

  1. 檢測SQL meta-characters的正則表達式 :/(\%27)|(』)|(--)|(\%23)|(#)/ix

    1. 解釋:我 們首先檢查單引號等值的hex,單引號本身或者雙重擴折號。

  2. 修正檢測SQL meta-characters的正則表達式: /((\%3D)|(=))[^ ]*((\%27)|(』)|(--)|(\%3B)|(:))/i

    1. 解釋: 這個規則首先留意 = 號或它的hex值(%3D),然後考慮零個或多個除換行符以外的任意字元,最後檢測單引號,雙重破折號或分號。

  3. 典型的 SQL 注入攻擊的正則表達式: /w*((\%27)|(』))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix

    解釋:

    1. w* - 零個或多個字元或者下劃線。

    2. (\%27)|』 - 單引號或它的hex等值。

    3. (\%6 F)|o|(\%4 F))((\%72)|r|-(\%52) -『or』的大小寫以及它的hex等值

  4. 檢測SQL注入,UNION查詢關鍵字的正則表達式: /((\%27)|(』))union/ix

    1. (\%27)|(』) - 單引號和它的hex等值

    2. union - union關鍵字

    3. 可以同樣為其他SQL查詢定製表達式,如 >select, insert, update, delete, drop, 等等.

  5. 檢測MS SQL Server SQL注入攻擊的正則表達式: /exec(s|+)+(s|x)pw+/ix

    1. exec - 請求執行儲存或擴展儲存過程的關鍵字

    2. (s|+)+ - 一個或多個的空白或它們的http等值編碼

    3. (s|x) p- 『sp』或『xp』字母用來辨認儲存或擴展儲存過程

    4. w+ - 一個或多個字元或下劃線來匹配過程的名稱


CSS的檢測也主要是正則表達式:

  • 一般 CSS 攻擊的正則表達式: /((\%3C)|<)((\%2F)|/)*[a-z0-9\%]+((\%3E)|>)/ix

    • 解釋:

    • ((\%3C)|<) -檢查<和它hex等值

    • ((\%2F)|/)*-結束標簽/或它的 hex等值

    • [a-z0-9\%]+ -檢查標簽里的字母或它hex等值

    • ((\%3E)|>) -檢查>或它的hex等值

  • "<img src" CSS 攻擊正則表達式: /((\%3C)|<)((\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47))[^ ]+((\%3E)|>)/I

    • 解釋:

    • (\%3 C)|<) -<或它的hex等值

    • (\%69)|i|(\%49))((\%6D)|m|(\%4D))((\%67)|g|(\%47) -』img』字母或它的大小寫hex等值的變化組合

    • [^ ]+ -除了換行符以外的任何跟隨<img的字元

    • (\%3E)|>) ->或它的hex等值

  • CSS 攻擊的極端的正則表達式 : /((\%3C)|<)[^ ]+((\%3E)|>)/I

    • 解釋:

    • 這個規則簡單尋找<+除換行符外的任何字元+>。由於你的web伺服器和web應用程序的構架,這個規則可能產生一些錯誤。但它能保證捉住任何CCS或者類似CSS的攻擊。

⑹ SQL注入攻擊原理和漏洞檢測技術

SQL注入指的是當用戶提交給伺服器的數據不在程序員的預料范圍內時,伺服器返回了一些敏感信息。通常這個是參數過濾不嚴格造成的,是程序員的責任。 舉個例子吧 比如有這個頁面 http://www.xxx.com/showdetail.asp?id=1 這個地址後有個問號,後面有個id=1這就是用戶提交給伺服器的參數 假如給後面添加個 ',這個是非法參數地址變成 http://www.xxx.com/showdetail.asp?id=1 '然後沒有過濾掉'的伺服器會給我們返回如下信息 Microsoft JET Database Engine 錯誤 '80040e14' 字元串的語法錯誤 在查詢表達式 'ID=1'' 中。 /showdetail.asp,行11 這些都是有用的信息,這意味著sql注入攻擊的原理就是利用非法參數獲得敏感信息,收集整理,分析出管理賬號密碼 那麼如何檢測網頁能否注入呢 光一個'是不夠的 正確的應該是這樣 1, http://www.xxx.com/showdetail.asp?id=1 頁面正常顯示 2, http://www.xxx.com/showdetail.asp?id=1 and 1=1 頁面顯示正常 3, http://www.xxx.com/showdetail.asp?id=1 and 1=2 頁面返回錯誤信息時 如果滿足以上三條,基本上就可一注入攻擊了 猜解管理賬號密碼可以手動,但是比較麻煩,得有sql語法知識和經驗,算是窮舉+推測的,不常用 我推薦直接使用程序猜解,網路搜搜到處有

⑺ 簡單分析什麼是SQL注入漏洞

SQL是操作資料庫數據的結構化查詢語言,網頁的應用數據和後台資料庫中的數據進行交互時會採用SQL。
SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL命令。它是利用現有應用程序,將惡意的SQL命令注入到後台資料庫引擎執行的能力,它可以通過在Web表單中輸入SQL語句得到一個存在安全漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL語句。

⑻ 什麼是SQL漏洞

相當大一部分程序員在編寫代碼的時候,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。如這是一個正常的網址http://localhost/lawjia/show.asp?ID=444,將這個網址提交到伺服器後,伺服器將進行類似Select * from 表名 where 欄位="&ID的查詢(ID即客戶端提交的參數,本例是即444),再將查詢結果返回給客戶端,如果這里客戶端故意提交這么一個網址:

http://localhost/lawjia/show.asp?ID=444 and user>0,這時,伺服器運行Select * from 表名 where 欄位=444 and user>0這樣的查詢,當然,這個語句是運行不下去的,肯定出錯,錯誤信息如下:

·錯誤類型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]將 nvarchar 值 'sonybb' 轉換為數據類型為 int 的列時發生語法錯誤。
/lawjia/show.asp, 第 47 行

但是別有用心的人從這個出錯信息中,可以獲得以下信息:該站使用MS_SQL資料庫,用ODBC連接,連接帳號名為:sonybb。所謂SQL注入(SQL Injection),就是利用程序員對用戶輸入數據的合法性檢測不嚴或不檢測的特點,故意從客戶端提交特殊的代碼,從而收集程序及伺服器的信息,從而獲取想得到的資料。通常別有用心者的目標是獲取網站管理員的帳號和密碼。比如當某個人知道網站管理員帳號存在表login中,管理員帳號名為admin,他想知道管理員密碼,這里他從客戶端接著提交這樣一個網址:
http://localhost/lawjia/show.asp?ID=444 and (Select password from login where user_name='admin')>0,返回的出錯信息如下:

·錯誤類型:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][ODBC SQL Server Driver][SQL Server]將 varchar 值 '!@#*&admin' 轉換為數據類型為 int 的列時發生語法錯誤。
/lawjia/show.asp, 第 47 行

你知道嗎?上面標紅的部分就是管理員帳號admin的密碼!雖然很復雜,讓人看幾遍也記不住的,但它就這樣顯示在你面前了,這時您就可以用這個帳號和密碼接管人家的網站了!這時你可能還會說,如果他不是事先知道管理員帳號存在表login中,而且知道管理員帳號為admin,那他就不可能獲得管理員密碼。你錯了,只要人家願意多花時間嘗試,他將可以獲得資料庫連接帳號許可權內所能獲得的所有信息!具體過程請參看網上的這篇文章:SQL注入漏洞全接觸。

當然這個過程是很煩瑣的而且要花費很多的時間,如果只能以這種手動方式進行SQL注入入侵的話,那麼許多存在SQL注入漏洞的ASP網站會安全很多了,不是漏洞不存在了,而是利用這個漏洞入侵的成本太高了。但是如果利用專門的黑客工具來入侵的話,那情況就大大不同了。手動方式進行SQL注入入侵至少需要半天或一天乃至很多天的時間,而利用專門的工具來入侵就只需要幾分鍾時間了(視網速快慢決定),再利用獲得的管理帳號和密碼,上傳一個從網上下載的ASP後門程序,就輕易獲得整個網站的管理許可權了,甚至整個伺服器的管理許可權。最有名的一種SQL注入入侵工具是NBSI 2.0,現在已經出到2.0版本了,不過,人家正式名稱不叫SQL注入入侵工具,而叫做網站安全漏洞檢測工具。有了這個所謂的檢測工具,使得入侵存在SQL注入漏洞的ASP網站成了小兒科的游戲,那些既不懂ASP又不懂SQL、年紀小小的男性青年常常得以在一天之內入侵十多個ASP網站,他們以此獲得內心的極大滿足。他們似乎也非常講究職業道德,往往並不破壞網站數據和系統,常見的破壞方式大都僅僅是改換掉網站的主頁,留下"善意的警告",如:你的網站存在SQL注入漏洞,請管理員做好防範措施!並聲明"我沒有破壞數據和系統",有的還要借機發布一下他的倡導:"國內網站大家不要入侵,有本事入侵小日本的!",最後,簽上他的鼎鼎大名是必不可少的程序。

如此大的成就多數情況下僅需動動滑鼠就做到了。打開最新版的NBSI 2.0,如圖1所示:輸入地址到A區,注意網址必須是帶傳遞參數的那種,點擊右邊的檢測按鈕,即出來B區信息,顯示當前用戶為sonybb的許可權為PUBLIC,當前庫為lawjia。有點可惜啊,如果是SA許可權的話,就可以跨庫注入了。不過,這個許可權也足夠獲取該網站管理員帳號和密碼了。點C區下的自動猜解按鈕,即出來當前庫lawjia中的各種表,哇,login表中一定是存管理員帳號和密碼的吧?選中它吧,接著點擊D區下的自動猜解按鈕,立即出來login表裡的列名稱,果然是存放用戶名和密碼的啊,太棒了!趕快打上勾,迫不急待的點擊E區下的自動猜解按鈕。激動人心的時刻就要到來啦,只見唰唰地幾下,帳號與密碼全部出來了。剩下的事就是辨別哪一個帳號是管理員了。

熱點內容
掃行程碼為什麼需要支付密碼 發布:2025-01-31 22:47:08 瀏覽:738
什麼樣的配置能玩地平線4 發布:2025-01-31 22:44:05 瀏覽:241
python正則表達式符號 發布:2025-01-31 22:43:50 瀏覽:391
androidmime 發布:2025-01-31 22:34:44 瀏覽:782
ftp和http的中文含義是 發布:2025-01-31 22:33:48 瀏覽:402
sqlite3存儲圖片 發布:2025-01-31 22:27:14 瀏覽:162
sqlserverphp 發布:2025-01-31 22:22:55 瀏覽:877
曲馬多存儲 發布:2025-01-31 22:22:52 瀏覽:538
緩存兒歌 發布:2025-01-31 22:21:26 瀏覽:528
學java有發展嗎 發布:2025-01-31 21:44:45 瀏覽:569