要描述:
3 G$ T3 v3 I: n- K6 l9 T" P3 c% O) h# s$ H! E' O
SDCMS后台绕过直接进入:测试版本2.0 beta2 其他版本未测试! |% o; a% B3 L( v1 n0 `7 r
详细说明:7 W, ~) K# X* ?: ]7 {
Islogin //判断登录的方法
6 K9 L+ ?# e" w5 y* C6 g* m/ ]' x: c
3 g1 G$ C! Z4 u: A8 g e5 qsub islogin()3 }/ V$ C# F( z- N
; J4 a4 u8 ?: W+ @9 a
if sdcms.strlen(adminid)=0 or sdcms.strlen(adminname)=0 then + ]8 S" J! W# v( x* @+ |! J" R' I" C. w C
7 s, _ V4 E8 \
dim t0,t1,t2
+ f; x( f3 _$ e6 B
+ Y9 d- t6 c- {; V) Wt0=sdcms.getint(sdcms.loadcookie("adminid"),0) loadcookie 0 ]0 C) o4 V2 A3 p/ q) j' @
/ S" }6 E; k- M; x% _6 }( X
t1=sdcms.loadcookie("islogin")
4 j, i8 N( \; G5 Z; Y7 l + ?0 O% ]6 `- m/ I' E" [: a: }" s
t2=sdcms.loadcookie("loginkey")
. f0 k5 y/ V1 R: W3 c& @2 ^
; ]( d+ w( V$ V& }( Z7 Sif sdcms.strlen(t0)=0 or sdcms.strlen(t1)=0 or sdcms.strlen(t2)<>50 then //这里判断很坑爹 sdcms.strlen(t2)<>50 loginkey 没有任何要求 只需要输入50个即可往下执行
2 J S7 O4 ~8 c v0 J( | Q ' M/ C4 |" o7 r5 N/ J# h" g% y
//
1 c: U* S( B' J& ?) R5 R3 r+ d4 o $ ^- T' K, N5 |) {( a! ~' e; z
sdcms.go "login.asp?act=out"
# N+ f, V" y$ P) h 8 Z# g- W# A `$ D- L
exit sub) @+ `' z% Q5 W: c8 A6 J% j0 e2 R
- i5 T! K7 e4 w1 u3 }0 m/ [- H) U
else
( [$ ?1 ^6 i$ ~' H6 w9 b- J 9 I+ G8 s6 }' `5 ~
dim data
+ ?. k2 ]+ `* O( t/ P+ F/ T 1 y/ H4 I/ u3 ?4 I+ l3 }( T
data=sdcms.db.dbload(1,"adminid,adminname,adminpass,islock,groupid,g.pagelever,g.catearray,g.catelever","sd_admin u left join sd_admin_group g on u.groupid=g.id","adminid="&t0&"","") //根据管理员ID查询 ID可控
; V- W; f- {: h8 z! B3 k& T4 k; [ $ v% t: S: t/ q4 O) B9 o4 d( o) \/ A
if ubound(data)<0 then
$ b! v. [' n5 H8 J, ?# K
6 C$ s7 E) f! i+ {( L0 P. O& isdcms.go "login.asp?act=out"
# ?6 j! [. p0 D ! X' K J2 N$ O, B
exit sub* l$ a3 L4 e; f9 O/ @/ e
: R: G# e, P6 t) Q" c( Q6 yelse! O1 F4 P$ q. n
" a9 z5 \& T# E" Gif instr(data(1,0)&data(2,0),sdcms.decrypt(t1,t2))<0 or data(3,0)=0 then3 U2 ~) g7 C9 D' }( w5 }
2 y! r0 N3 _! z+ k! T8 K0 ^' E' esdcms.go "login.asp?act=out"9 P9 V: d$ w: t% D# l9 w/ h! J
7 H1 Q: W- F1 j# L! P0 I* {/ yexit sub
% W K( k4 q& n# Y! \
+ {6 @# e5 d$ _7 a& yelse
- b) t0 }7 ^ f% X1 ? n % J% r' Y+ b" [- ]9 N l
adminid=data(0,0)
$ o2 j8 Y5 G J2 _2 [1 W ; i2 k0 {( P/ y/ `$ A6 k: `
adminname=data(1,0)
- E+ w" H3 X& d6 w# ~ $ r( P1 Q0 z+ x1 ^: B
admin_page_lever=data(5,0)% ]# @) `6 t0 ~0 X: s4 P5 _
& s% ]1 f- r$ e, B
admin_cate_array=data(6,0)
! ?3 R7 J2 F/ E; R/ v4 v $ e, E9 D; \0 R* ?4 i, g
admin_cate_lever=data(7,0)& U$ i' N, ~( d" g- ?+ f1 A
/ C! I- J' X7 z% M" C; [3 b
if sdcms.strlen(admin_page_lever)=0 then admin_page_lever=09 \* I/ c4 f, R) ]3 f: s
) f y6 H# l' u- A5 t" T- E6 H/ h
if sdcms.strlen(admin_cate_array)=0 then admin_cate_array=0
7 S1 @/ n2 u% ^6 g& G) Z : l% R( X/ i' m5 a' t/ J9 w
if sdcms.strlen(admin_cate_lever)=0 then admin_cate_lever=0
9 K- |% J/ T3 {5 l; ]+ R , a1 H; ^9 o1 ]
if clng(admingroupid)<>0 then
$ z; Y" C8 H! T* s0 A. N b
6 M) u$ t7 N* z% A# aadmin_lever_where=" and menuid in("&admin_page_lever&")"! U/ }4 U4 o' Y4 d- i& H9 f
- C4 y! k) a$ x8 |2 S
end if: y( A! W& h4 r) A) L' S5 F
7 O9 F: g; j; A: H9 ?
sdcms.setsession "adminid",adminid
% a$ `1 Y5 H; ]* f% I% Z
F) @2 j; K( g2 L* p. zsdcms.setsession "adminname",adminname4 k2 U- M! u/ H8 G
9 q- l4 ]. J1 E, h2 fsdcms.setsession "admingroupid",data(4,0): c: e, a$ Y( a1 L& G
4 Z8 l5 O! P* _4 V; h6 x
end if
6 ] R2 }& S+ L- T% |4 T! { & Y, y% h3 g0 c- R- A* A( Q8 U
end if8 z- v& w' Z" y( A
% F8 ^- |- A: _- \end if8 f0 i1 p0 m9 a
! |; g+ z1 B# D' jelse7 S, j5 H& d- m
: W, B$ P* d8 j0 d8 L. wdata=sdcms.db.dbload(1,"g.pagelever,g.catearray,g.catelever","sd_admin u left join sd_admin_group g on u.groupid=g.id","adminid="&adminid&"",""); E* t" D1 M! L* }$ T p% q
% g1 x# }3 ~, F1 u" m' t
if ubound(data)<0 then5 U; C9 S9 N/ M1 C1 Y7 O. j
+ @# V4 d" [( l3 Vsdcms.go "login.asp?act=out"
( {) @" G1 [; B Z& @ S
5 k# ^% j* h/ a* sexit sub4 v; v( \1 ^5 c/ A
0 h j G& T! ~
else9 n5 g* e: Z. ~- {
' X1 ?! o/ {: A8 b2 R
admin_page_lever=data(0,0)0 G$ N7 W7 _) [* ^
+ p" S; `. |+ M# Y6 y# U/ u. F8 k5 @4 m* {
admin_cate_array=data(1,0)
6 x7 b1 L) F, O3 q3 C
2 U% h: O7 @; B1 Z/ H/ `' Vadmin_cate_lever=data(2,0)
* s: @% b8 `0 M% [9 c . q9 R! ?: E- y0 H7 @8 S
if sdcms.strlen(admin_page_lever)=0 then admin_page_lever=06 o6 g& Q5 h. F2 u
" O, w# V8 F* P& W$ tif sdcms.strlen(admin_cate_array)=0 then admin_cate_array=0" `. J+ o0 \3 e0 N/ d
7 w. i$ d0 [% p0 k l8 C- Rif sdcms.strlen(admin_cate_lever)=0 then admin_cate_lever=0+ C* A$ z5 J' t5 |
: E( d% K3 a/ ?if clng(admingroupid)<>0 then2 [7 b8 H5 Y9 f7 n1 Y
: d3 o) A4 v& T. N' gadmin_lever_where=" and menuid in("&admin_page_lever&")"! U K' U+ O, _/ G1 `. K# N
8 M7 ], a* L8 m$ m5 w) K
end if3 Y( Q9 Q' s6 x# F7 t1 R+ C0 y
; {7 _+ t9 ^1 s. D
end if
& ?' f& [% l! P( V6 | , B( x& K! w% W" X! \3 ~. g7 U* x
end if& M- F1 m" m8 b, M# W
" X2 F0 `# i/ K" N+ B( D! _end sub
" l& \$ q8 p- X- a, S- G- O漏洞证明:( @* V M/ W1 [6 f/ [
看看操作COOKIE的函数
/ w" ]8 C# M; r. F8 r. l8 v- z# m $ y4 ]3 |# ?: L$ v7 z# n# v
public function loadcookie(t0)
9 O" f- s; T* E8 b0 ?% m
+ U1 G# X0 _( o5 Aloadcookie=request.cookies(prefix&t0)8 [: V y4 e4 p/ I, e' {
4 P" p5 C7 n5 Bend function
7 R8 K2 F f9 J d4 b" q0 X: [0 n: F
. _% L% K! E4 W! C1 Epublic sub setcookie(byval t0,byval t1)
, d% W% v9 `* k* k( @( j n- o" \, e, Y- d7 W( I
response.cookies(prefix&t0)=t1
0 I5 V: t6 y4 t* B 8 V( |: w( ~, B7 b7 ~& ^( Q
end sub2 a- ^1 h+ _1 [
4 `1 v2 c, \9 t. e1 F* S$ fprefix
8 ?" C9 Y7 v& I- S' D, k 5 V' e; W8 B' Y4 G
'变量前缀,如一个空间下多次使用本程序的话,请每个程序配置不同的值
0 H& D1 C# J0 h ' h* l" D0 y# m y+ D
dim prefix8 I# a+ r1 A" G% n, Y# H2 R
" q! a( T, \& ]0 r, k% Eprefix="1Jb8Ob"( h1 c1 w: A% D# t& l4 H8 c
2 i2 c7 ~/ H( w2 ^9 C' K'这个值访问一下admin/login.asp?act=out 便可得到 在COOKIE里 ) s s& h( e; f* O* R& U6 U* H
* T; @' \6 f/ c4 I; L! asub out
7 a) h& I$ H8 d5 F
9 q5 q; ~$ m4 j" T; U& tsdcms.setsession "adminid",""
) L- E6 x# L/ L& Y) b0 y u4 g, W' v1 A5 E& t
sdcms.setsession "adminname",""9 \; U8 k, q) `& L4 S
3 y* G/ w$ c% G: X. |6 w
sdcms.setsession "admingroupid",""
; \# w9 l5 F4 b) |) ~ * f1 Q+ v, j$ n* @$ y7 w4 J/ m+ f
sdcms.setcookie "adminid",""+ [4 ^- C( y- q5 U4 l
; C1 F- h/ H3 ^3 \+ msdcms.setcookie "loginkey",""2 Q- `. [/ u5 s0 x
5 J! }2 F7 U: ]/ g# _! Q [5 ]
sdcms.setcookie "islogin",""
& y: n# Z0 e9 b$ d
/ g z; C% I0 @sdcms.go "login.asp"
$ @6 c2 F& b7 o7 c* r 0 J* R# D% x1 u
end sub% F( q" D! p {$ c
6 V4 m% g7 ~# [
- w- P% w+ m8 B/ M1 e' E9 {% q* W- `( t
利用方法:设置cookie prefixloginkey 50个字符 prefixislogin 随意 循环下prefixadminid 即可 默认1 然后访问后台,就可以了!
- v& {% ~0 ~6 j; S0 o$ x5 ~修复方案:6 P* J( `; s4 k1 H
修改函数!
$ p6 f0 z& w( z8 T, f |