[13606] 2019-01-02_菜鸟学代码审计:Xnuca2018-hardphp详细分析

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-18
2019-01-02_菜鸟学代码审计:Xnuca2018-hardphp详细分析 X n u c a 2 0 1 8 - h a r d p h p l e e s w i   F r e e B u f   2 0 1 9 - 0 1 - 0 2 0 x 0 1   g e t s h e l l d o w n w p 广 广 p h p   m v c s e s s i o n   : ) h t t p s : / / p a n . b a i d u . c o m / s / 1 9 N Z d h o V b F y 9 s h Y x L J 5 8 z n w 0 x 0 2   G e t s h e l l M V C W e b   M V C C o n t r o l l e r C o n t r o l l e r M o d e l C o n t r o l l e r V i e w V i e w ( p h p   M V C - - > h t t p : / / w w w . c n b l o g s . c o m / S t e v e n - s h i / p / 5 9 1 4 1 7 5 . h t m l ) ( ) c o n f i g . p h p   i n d e x . p h p   v i e w  
m o d e l   c o n t r o l l e r B a s e C o n t r o l l e r . p h p m a i n C o n t r o l l e r . p h p i n c l u d e M y S e s s i o n H a n d l e r . p h p S e s s i o n . p h p s e s s i o n l i b c o r e . p h p i n d e x M V C 0 x 0 3   c o r e . p h p 6 3 ~ 6 6   e s c a p e   M V C   7 8 ~ 7 9   c o n t r o l l e r _ n a m e ( ) 4 5 6 7 m a i n C o n t r o l l e r a c t i o n I n d e x 0 x 0 4   C o n t r o l l e r m a i n C o n t r o l l e r   m a i n C o n t r o l l e r . p h p   m a i n C o n t r o l l e r B a s e C o n t r o l l e r B a s e C o n t r o l l l e r s e s s i o n e s c a p e ( $ _ R E Q U E S T ) ; e s c a p e ( $ _ P O S T ) ; e s c a p e ( $ _ G E T ) ; e s c a p e ( $ _ S E R V E R ) ; / / e s c a p e 1 5 3 f u n c t i o n   e s c a p e ( & $ a r g )   {         i f ( i s _ a r r a y ( $ a r g ) )   {                 f o r e a c h   ( $ a r g   a s   & $ v a l u e )   {                         e s c a p e ( $ v a l u e ) ;                 }         }   e l s e   {                 $ a r g   =   s t r _ r e p l a c e ( [ " ' " ,   ' ' ,   ' ( ' ,   ' ) ' ] ,   [ " " ,   ' ' ,   ' ' ,   ' ' ] ,   $ a r g ) ;         } } C o n t r o l l e r M o d e l V i e w f u n c t i o n   u r l $ c o n t r o l l e r _ o b j   =   n e w   $ c o n t r o l l e r _ n a m e ( ) ;       / / m a i n C o n t r o l l e r $ c o n t r o l l e r _ o b j - > $ a c t i o n _ n a m e ( ) ;   / / a c t i o n i n d e x
m a i n C o n t r o l l e r m a i n C o n t r o l l e r B a s e C r o t r o l l e r a c t i o n L o g i n a c t i o n R e g i s t e r a c t i o n U p l o a d e r a c t i o n M e s s a g e a c t i o n P O S T a c t i o n I n d e x u r l a c t i o n L o g i n a c t i o n R e g i s t e r c l a s s   B a s e C o n t r o l l e r   e x t e n d s   C o n t r o l l e r { p u b l i c   $ l a y o u t   =   " l a y o u t . h t m l " ; f u n c t i o n   i n i t ( ) {     i n i _ s e t ( ' s e s s i o n . s a v e _ h a n d l e r ' ,   ' u s e r ' ) ;     $ h a n d l e r   =   n e w   M y S e s s i o n H a n d l e r ( ) ;     s e s s i o n _ s e t _ s a v e _ h a n d l e r ( $ h a n d l e r ,   t r u e ) ;     s e s s i o n _ s t a r t ( ) ;     h e a d e r ( " C o n t e n t - t y p e :   t e x t / h t m l ;   c h a r s e t = u t f - 8 " ) ; } / / . . f u n c t i o n   a c t i o n I n d e x ( ) {     i f ( i s s e t ( $ _ S E S S I O N [ " d a t a " ] ) ) {         / / . . .     } e l s e {         $ t h i s - > j u m p ( " / m a i n / l o g i n " ) ;         r e t u r n   ;     } } $ _ S E S S I O N [ ' d a t a ' ]
a r g a r g c o r e . p h p 1 6 3 e s c a p e     f u n c t i o n   a c t i o n R e g i s t e r ( ) {     i f ( $ _ P O S T ) {     $ u s e r n a m e   =   a r g ( ' u s e r n a m e ' ) ;     $ p a s s w o r d   =   a r g ( ' p a s s w o r d ' ) ;     i f ( e m p t y ( $ u s e r n a m e ) | | e m p t y ( $ p a s s w o r d ) ) {     e c h o   " < s c r i p t > a l e r t ( ' U s e r n a m e   o r   p a s s w o r d   i s   e r r o r . ' ) < / s c r i p t > " ;     } e l s e {     $ p a s s w o r d   =   m d 5 ( $ p a s s w o r d ) ;     $ u s e r   =   N e w   U s e r ( ) ;     $ r e s   =   $ u s e r - > q u e r y ( " S E L E C T   *   F R O M   ` { $ u s e r - > t a b l e _ n a m e } `   W H E R E   ` u s e r n a m e `   = ' { $ u s e r n a m e } ' " ) ;     i f ( ! e m p t y ( $ r e s ) ) {     e c h o   " < s c r i p t > a l e r t ( ' U s e r n a m e   i s   r e g i s t e r e d ! . ' ) < / s c r i p t > " ;     } e l s e {     $ r e s   =   $ u s e r - > c r e a t e ( [     " u s e r n a m e " = > $ u s e r n a m e ,     " p a s s w o r d " = > $ p a s s w o r d ,     " p i c t u r e " = > " / i m g / p i c . j p g " ] ) ;     i f ( ! $ r e s )   e c h o   " < s c r i p t > a l e r t ( ' s o m e t h i n g   e r r o r .   r e g i s t e r   f i a i e d ! ' ) < / s c r i p t > " ;     e l s e   $ t h i s - > j u m p ( " / m a i n / l o g i n " ) ;     }     }     } } f u n c t i o n   a r g ( $ n a m e ,   $ d e f a u l t   =   n u l l ,   $ t r i m   =   f a l s e )   {         i f   ( i s s e t ( $ _ R E Q U E S T [ $ n a m e ] ) )   {                 $ a r g   =   $ _ R E Q U E S T [ $ n a m e ] ;         }   e l s e i f   ( i s s e t ( $ _ S E R V E R [ $ n a m e ] ) )   {                 $ a r g   =   $ _ S E R V E R [ $ n a m e ] ;         }   e l s e   {                 $ a r g   =   $ d e f a u l t ;         }         i f ( $ t r i m )   {                 $ a r g   =   t r i m ( $ a r g ) ;         }         r e t u r n   $ a r g ; } t r i m
s e s s i o n i n c l u d e   s e s s i o n . p h p   S E S S I O N           d a t a   S e s s i o n f u n c t i o n   a c t i o n L o g i n ( ) {     i f ( $ _ P O S T ) {         $ u s e r n a m e   =   a r g ( ' u s e r n a m e ' ) ;         $ p a s s w o r d   =   a r g ( ' p a s s w o r d ' ) ;         $ i p   =   a r g ( ' R E M O T E _ A D D R ' ) ;         $ u s e r A g e n t   =   a r g ( ' H T T P _ U S E R _ A G E N T ' ) ;                     i f   ( e m p t y ( $ u s e r n a m e )   | |   e m p t y ( $ p a s s w o r d ) )   {                             e c h o   " < s c r i p t > a l e r t ( ' U s e r n a m e   o r   p a s s w o r d   i s   e m p t y . ' ) < / s c r i p t > " ;         } e l s e {             $ u s e r   =   N e w   U s e r ( ) ;             $ p a s s w o r d   =   m d 5 ( $ p a s s w o r d ) ;             $ r e s   =   $ u s e r - > q u e r y ( " S E L E C T   *   F R O M   ` $ u s e r - > t a b l e _ n a m e `   w h e r e   ` u s e r n a m e ` = ' { $ u s e r n a m e } '   A N D   ` p a s s w o r d ` = ' { $ p a s s w o r d } ' " ) ;             i f ( e m p t y ( $ r e s )   | |   $ r e s [ 0 ] [ ' p a s s w o r d ' ] ! = = $ p a s s w o r d ) {                 e c h o   " < s c r i p t > a l e r t ( ' U s e r n a m e   o r   p a s s w o r d   i s   e r r o r . ' ) < / s c r i p t > " ;             } e l s e {                 $ s e s s i o n   =   n e w   S e s s i o n ( $ r e s [ 0 ] [ " i d " ] , t i m e ( ) , $ i p , $ u s e r A g e n t ) ;                 $ _ S E S S I O N [ ' d a t a ' ]   =   s e r i a l i z e ( $ s e s s i o n ) ;                 $ _ S E S S I O N [ ' u s e r n a m e ' ]   =   $ u s e r n a m e ;                 $ t h i s - > j u m p ( " / m a i n / i n d e x " ) ;             }         }     } } d a t a u s e r n a m e
p h p p h p _ f l a g   e n g i n e   o f f 0 x 0 5   p h p i n c l u d e v i e w   c o r e . p h p   5 0 p u b l i c   f u n c t i o n   a c t i o n U p l o a d ( ) {     / / . . .     $ f i l e N a m e   =   $ _ F I L E S [ ' u p f i l e ' ] [ ' n a m e ' ] ;     $ f i l e E x t   =   i s s e t ( p a t h i n f o ( $ f i l e N a m e ) [ ' e x t e n s i o n ' ] ) ? p a t h i n f o ( $ f i l e N a m e ) [ ' e x t e n s i o n ' ] : " p n g " ;     $ f i l e E x t   =   a d d s l a s h e s ( $ f i l e E x t ) ;     $ f i l e n a m e   =   $ t h i s - > r a n d o m S t r ( ) . ' . ' . $ f i l e E x t ;     $ r e a l F i l e N a m e   =   A P P _ D I R . D S . " i m g " . D S . " u p l o a d " . D S . $ f i l e n a m e ;     i f ( m o v e _ u p l o a d e d _ f i l e ( $ _ F I L E S [ ' u p f i l e ' ] [ ' t m p _ n a m e ' ] , $ r e a l F i l e N a m e ) ) {     $ u s e r   =   N e w   U s e r ( ) ;     $ w e b F i l e N a m e   =   D S . " i m g " . D S . " u p l o a d " . D S . $ f i l e n a m e ;     $ r e s   =   $ u s e r - > e x e c u t e ( " U P D A T E   ` { $ u s e r - > t a b l e _ n a m e } `   s e t   ` p i c t u r e ` = ' { $ w e b F i l e N a m e } '   w h e r e   ` i d ` = ' { $ u s e r I d } ' " ) ;     i f ( $ r e s ) {     e c h o   ' < s c r i p t > a l e r t ( " U p l o a d   f i l e   s u c c e s s ! " ) < / s c r i p t > ' ;     } e l s e {                             e c h o   ' < s c r i p t > a l e r t ( " U p l o a d   f i l e   e r r o r ! " ) < / s c r i p t > ' ;     }     $ t h i s - > j u m p ( " / m a i n / i n d e x " ) ;     r e t u r n ;     } e l s e {     e c h o   ' < s c r i p t > a l e r t ( " U p l o a d   f i l e   E r r o r ! " ) < / s c r i p t > ' ;     $ t h i s - > j u m p ( " / m a i n / i n d e x " ) ;     r e t u r n   ;     } } . h t a c c e s s i n c l u d e
  p h p 5 使 p h p s h e l l S h e l l 0 x 0 6   s e s s i o n i n n e r _ a u t o l o a d n e w ,   c o r e . p h p   7 8     C o n t r o l l e r s e s s i o n s e s s i o n 使 s e s s i o n s e s s i o n s p l _ a u t o l o a d _ r e g i s t e r ( ' i n n e r _ a u t o l o a d ' ) ; f u n c t i o n   i n n e r _ a u t o l o a d ( $ c l a s s ) { G L O B A L   $ _ _ m o d u l e , $ _ _ c u s t o m ; $ c l a s s   =   s t r _ r e p l a c e ( " " , " / " , $ c l a s s ) ; f o r e a c h ( a r r a y ( ' m o d e l ' , ' i n c l u d e ' , ' c o n t r o l l e r ' . ( e m p t y ( $ _ _ m o d u l e ) ? ' ' : D S . $ _ _ m o d u l e ) , $ _ _ c u s t o m )   a s   $ d i r ) { $ f i l e   =   A P P _ D I R . D S . $ d i r . D S . $ c l a s s . ' . p h p ' ; i f ( f i l e _ e x i s t s ( $ f i l e ) ) { i n c l u d e   $ f i l e ; r e t u r n ; } } } s q l _ a u t o l o a d _ r e g i s t e r _ _ a u t o l o a d $ c o n t r o l l e r _ o b j   =   n e w   $ c o n t r o l l e r _ n a m e ( ) ; $ c o n t r o l l e r _ n a m e ( )   =   $ _ _ c o n t r o l l e r . ' C o n t r o l l e r ' ; $ s e s s i o n   =   n e w   S e s s i o n ( $ r e s [ 0 ] [ " i d " ] , t i m e ( ) , $ i p , $ u s e r A g e n t ) ; $ _ S E S S I O N [ ' d a t a ' ]   =   s e r i a l i z e ( $ s e s s i o n ) ;
c o r e . p h p m a i n / i n d e x m a i n C o n t r o l l e r a c t i o n I n d e x B a s e C o n t r o l l e r   S e s s i o n H a n d l e r   使   s e s s i o n     s e s s i o n _ s t a r t ( )   s e s s i o n M y S e s s i o n H a n d l e r o p e n ( ) r e a d ( ) s e s s i o n s e s s i o n   a c t i o n L o g i n   s e s s i o n w r i t e ( ) s e s s i o n
S e s s i o n i p u s e r a g e n t u s e r I D l o g i n t i m e a c t i o n I n d e x d a t a c l a s s   S e s s i o n {       p r i v a t e   $ i p   ;       p r i v a t e   $ u s e r A g e n t ;       p r i v a t e   $ u s e r I d ;       p r i v a t e   $ l o g i n T i m e   ;       p u b l i c   s t a t i c   $ t i m e F o r m a t   =   " H : i : s " ;       f u n c t i o n   _ _ c o n s t r u c t ( $ u s e r I d , $ l o g i n T i m e , $ i p = " 0 . 0 . 0 . 0 " , $ u s e r A g e n t = " " ) {               $ t h i s - > u s e r I d   =   $ u s e r I d ;               $ t h i s - > i p   =   $ i p ;               $ t h i s - > l o g i n T i m e   =   $ l o g i n T i m e ;               $ t h i s - > u s e r A g e n t   =   $ u s e r A g e n t ;       }       p u b l i c   f u n c t i o n   g e t U s e r I n f o ( ) {               r e t u r n   a r r a y ( i n t v a l ( $ t h i s - > u s e r I d ) , d a t e ( s e l f : : $ t i m e F o r m a t , $ t h i s - > l o g i n T i m e ) ) ;       }       p u b l i c   f u n c t i o n     i s A c c o u n t S e c ( $ i p = " 0 . 0 . 0 . 0 " , $ u s e r A g e n t = " " ) {               r e t u r n   ( $ t h i s - > i p   = = =   $ i p   & &   $ t h i s - > u s e r A g e n t   = = =   $ u s e r A g e n t ) ;       }       s t a t i c   f u n c t i o n     g e t T i m e ( $ t i m e s t a m p ) {               r e t u r n   d a t e ( s e l f : : $ t i m e F o r m a t , $ t i m e s t a m p ) ;       } } $ _ S E S S I O N [ ' d a t a ' ]
便 s e s s i o n s e s s i o n $ _ S E S S I O N [ ' d a t a ' ] s e s s i o n M y S e s s i o n H a n d l e r 使 s e s s i o n s e s s i o n _ s t a r t ( ) o p e n r e a d s e s s i o n s e s s i o n s e s s i o n M y S e s s i o n H a n d l e r . p h p $ s e s s i o n   =   u n s e r i a l i z e ( $ _ S E S S I O N [ " d a t a " ] , [ " a l l o w e d _ c l a s s e s "   = >   [ " S e s s i o n " ] ] ) ; / / , ,   _ _ P H P _ I n c o m p l e t e _ C l a s s s e s s i o n $ i p   =   a r g ( " R E M O T E _ A D D R " ) ; $ u s e r A g e n t   =   a r g ( " H T T P _ U S E R _ A G E N T " ) ; $ t h i s - > n o w   =   $ s e s s i o n : : g e t T i m e ( t i m e ( ) ) ; i f ( $ s e s s i o n - > i s A c c o u n t S e c ( $ i p , $ u s e r A g e n t ) ) { $ u s e r i n f o   =   $ s e s s i o n - > g e t U s e r I n f o ( ) ; $ t h i s - > u s e r n a m e   =     $ _ S E S S I O N [ ' u s e r n a m e ' ] ; $ t h i s - > l o g i n T i m e   =   $ u s e r i n f o [ 1 ] ; $ u s e r I d   =   $ u s e r i n f o [ 0 ] ; $ u s e r   =   n e w   U s e r ( ) ; $ r e s   =   $ u s e r - > q u e r y ( " S E L E C T   p i c t u r e   F R O M   ` { $ u s e r - > t a b l e _ n a m e } `   w h e r e   ` i d ` = ' { $ u s e r I d } ' " ) ; i f ( ! e m p t y ( $ r e s ) ) { $ t h i s - > p i c S r c   =   $ r e s [ 0 ] [ ' p i c t u r e ' ] ; } e l s e { $ t h i s - > p i c S r c   =   " / i m g / p i c . j p g " ; } } e l s e { e c h o   " < s c r i p t > a l e r t ( ' y o u r   c o o k i e   m y   b e   s t e a l e d   b y   h a c k e r ! ' ) ; < / s c r i p t > " ; s e s s i o n _ d e s t r o y ( ) ; $ t h i s - > j u m p ( " / m a i n / l o g i n " ) ; } s e s s i o n _ s e t _ s a v e _ h a n d l e r S e s s i o n H a n d l e r I n t e r f a c e
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则