[12508] 2018-03-25_小白都能看懂的JSON反序列化远程命令执行

文档创建者:s7ckTeam
浏览次数:11
最后更新:2025-01-18
2018-03-25_小白都能看懂的JSON反序列化远程命令执行 J S O N   T o p S c r e w   F r e e B u f   2 0 1 8 - 0 3 - 2 5 F a s t j s o n j s o n J a v a j s o n F a s t j s o n 广 使 广 使 W e b A n d r o i d 姿 姿 F a s t J s o n 0 x 0 1 F a s t J s o n F a s t J s o n b e a n , s e t 西 W r i t e C l a s s N a m e f a l s e j s o n W r i t e C l a s s N a m e @ t y p e , 0 x 0 2 t o J S O N S t r i n g p a r s e O b j e c t j s o n @ t y p e
0 x 0 3 c h e c k A u t o T y p e c h e c k c h e c k A u t o T y p e d e n y L i s t c h e c k A u t o T y p e e x p e c t C l a s s d e n y L i s t 西 p u b l i c   C l a s s < ? >   c h e c k A u t o T y p e ( S t r i n g t y p e N a m e ,   C l a s s < ? >   e x p e c t C l a s s )   {               i f   ( t y p e N a m e   = =   n u l l )   {                       r e t u r n   n u l l ;               }                 f i n a l   S t r i n g   c l a s s N a m e   =   t y p e N a m e . r e p l a c e ( ' $ ' ,   ' . ' ) ;                 i f   ( a u t o T y p e S u p p o r t   | |   e x p e c t C l a s s   ! =   n u l l )   {                       f o r   ( i n t   i   =   0 ;   i   <   a c c e p t L i s t . l e n g t h ;   + + i )   {                                 S t r i n g   a c c e p t   =   a c c e p t L i s t [ i ] ;                                 i f   ( c l a s s N a m e . s t a r t s W i t h ( a c c e p t ) ) {                                         r e t u r n T y p e U t i l s . l o a d C l a s s ( t y p e N a m e ,   d e f a u l t C l a s s L o a d e r ) ;                                 }                       }                         f o r   ( i n t   i   =   0 ;   i   <   d e n y L i s t . l e n g t h ;   + + i )   {                                 S t r i n g   d e n y   =   d e n y L i s t [ i ] ;                                 i f   ( c l a s s N a m e . s t a r t s W i t h ( d e n y ) ) {                                         t h r o w   n e w J S O N E x c e p t i o n ( " a u t o T y p e   i s   n o t   s u p p o r t .   "   +   t y p e N a m e ) ;                                 }                       }               }                 C l a s s < ? >   c l a z z   =   T y p e U t i l s . g e t C l a s s F r o m M a p p i n g ( t y p e N a m e ) ;               i f   ( c l a z z   = =   n u l l )   {                       c l a z z   =   d e s e r i a l i z e r s . f i n d C l a s s ( t y p e N a m e ) ;               }                 i f   ( c l a z z   ! =   n u l l )   {                       i f   ( e x p e c t C l a s s   ! =   n u l l   & &   ! e x p e c t C l a s s . i s A s s i g n a b l e F r o m ( c l a z z ) ) {                                 t h r o w   n e w J S O N E x c e p t i o n ( " t y p e   n o t   m a t c h .   "   +   t y p e N a m e   +   "   - >   "   + e x p e c t C l a s s . g e t N a m e ( ) ) ;                       }                         r e t u r n   c l a z z ;               }                 i f   ( ! a u t o T y p e S u p p o r t )   {                       f o r   ( i n t   i   =   0 ;   i   <   d e n y L i s t . l e n g t h ;   + + i )   {                               S t r i n g   d e n y   =   d e n y L i s t [ i ] ;                                 i f   ( c l a s s N a m e . s t a r t s W i t h ( d e n y ) ) {                                         t h r o w   n e w J S O N E x c e p t i o n ( " a u t o T y p e   i s   n o t   s u p p o r t .   "   +   t y p e N a m e ) ;                                 }                       }                       f o r   ( i n t   i   =   0 ;   i   <   a c c e p t L i s t . l e n g t h ;   + + i )   {                                 S t r i n g   a c c e p t   =   a c c e p t L i s t [ i ] ;                                 i f ( c l a s s N a m e . s t a r t s W i t h ( a c c e p t ) )   {                                         c l a z z   = T y p e U t i l s . l o a d C l a s s ( t y p e N a m e ,   d e f a u l t C l a s s L o a d e r ) ;                                           i f   ( e x p e c t C l a s s   ! =   n u l l & &   e x p e c t C l a s s . i s A s s i g n a b l e F r o m ( c l a z z ) )   {                                                 t h r o w   n e w J S O N E x c e p t i o n ( " t y p e   n o t   m a t c h .   "   +   t y p e N a m e   +   "   - >   "   + e x p e c t C l a s s . g e t N a m e ( ) ) ;                                         }                                         r e t u r n   c l a z z ;                                 }                       }               }                 i f   ( a u t o T y p e S u p p o r t   | |   e x p e c t C l a s s   ! =   n u l l )   {                       c l a z z   =   T y p e U t i l s . l o a d C l a s s ( t y p e N a m e ,   d e f a u l t C l a s s L o a d e r ) ;               }                 i f   ( c l a z z   ! =   n u l l )   {                         i f   ( C l a s s L o a d e r . c l a s s . i s A s s i g n a b l e F r o m ( c l a z z )   / /   c l a s s l o a d e r   i s   d a n g e r                                         | | D a t a S o u r c e . c l a s s . i s A s s i g n a b l e F r o m ( c l a z z )   / /   d a t a S o u r c e   c a n   l o a d   j d b c   d r i v e r                                         )   {                                 t h r o w   n e w J S O N E x c e p t i o n ( " a u t o T y p e   i s   n o t   s u p p o r t .   "   +   t y p e N a m e ) ;                       }                         i f   ( e x p e c t C l a s s   ! =   n u l l )   {                                 i f ( e x p e c t C l a s s . i s A s s i g n a b l e F r o m ( c l a z z ) )   {                                         r e t u r n   c l a z z ;                                 }   e l s e   {                                         t h r o w   n e w J S O N E x c e p t i o n ( " t y p e   n o t   m a t c h .   "   +   t y p e N a m e   +   "   - >   "   + e x p e c t C l a s s . g e t N a m e ( ) ) ;                                 }                       }               }                 i f   ( ! a u t o T y p e S u p p o r t )   {                       t h r o w   n e w   J S O N E x c e p t i o n ( " a u t o T y p e   i s   n o t   s u p p o r t .   "   + t y p e N a m e ) ;               }                 r e t u r n   c l a z z ;         } }
t h r o w   n e w J S O N E x c e p t i o n ( a u t o T y p e   i s   n o t   s u p p o r t .     + t y p e N a m e ) ; p o c c o m . s u n . o r g . a p a c h e . x a l a n . i n t e r n a l . x s l t c . t r a x . T e m p l a t e s I m p l c o m . s u n p o c p o c 0 x 0 5 p o c p o c j s o n j a v a b e a n
j s o n j s o n p a s s w o r d = 1 2 3 4 5 6 P a s s W o r d F a s t J s o n p o c j a v a b e a n b e a n b e a n j a v a j d k f a s t j s o n 西 p o c c o m . s u n . o r g . a p a c h e . x a l a n . i n t e r n a l . x s l t c . t r a x . T e m p l a t e s I m p l , g e t T r a n s l e t I n s t a n c e t r a n s l e t _ b y t e c o d e s t r a n s l e t _ b y t e c o d e s g e t T r a n s l e t I n s t a n c e d e f i n e T r a n s l e t C l a s s e s d e f i n e T r a n s l e t C l a s s e s _ b y t e c o d e s n e w _ c l a s s _ b y t e c o d e s _ c l a s s _ c l a s s , n e w I n s t a n c e j a v a p r i v a t e   v o i d   d e f i n e T r a n s l e t C l a s s e s ( )               t h r o w s   T r a n s f o r m e r C o n f i g u r a t i o n E x c e p t i o n   {                 i f   ( _ b y t e c o d e s   = =   n u l l )   {                       E r r o r M s g   e r r   =   n e w   E r r o r M s g ( E r r o r M s g . N O _ T R A N S L E T _ C L A S S _ E R R ) ;                       t h r o w   n e w   T r a n s f o r m e r C o n f i g u r a t i o n E x c e p t i o n ( e r r . t o S t r i n g ( ) ) ;               }                 T r a n s l e t C l a s s L o a d e r   l o a d e r   =   ( T r a n s l e t C l a s s L o a d e r )                       A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( n e w   P r i v i l e g e d A c t i o n ( )   {                                 p u b l i c   O b j e c t   r u n ( )   {                                         r e t u r n   n e w T r a n s l e t C l a s s L o a d e r ( O b j e c t F a c t o r y . f i n d C l a s s L o a d e r ( ) , _ t f a c t o r y . g e t E x t e r n a l E x t e n s i o n s M a p ( ) ) ;                                 }                       } ) ;               t r y   {                       f i n a l   i n t   c l a s s C o u n t   =   _ b y t e c o d e s . l e n g t h ;                       _ c l a s s   =   n e w   C l a s s [ c l a s s C o u n t ] ;                         i f   ( c l a s s C o u n t   >   1 )   {                                 _ a u x C l a s s e s   =   n e w   H a s h t a b l e ( ) ;                       }                       f o r   ( i n t   i   =   0 ;   i   <   c l a s s C o u n t ;   i + + )   {                                 _ c l a s s [ i ]   = l o a d e r . d e f i n e C l a s s ( _ b y t e c o d e s [ i ] ) ;                                 f i n a l   C l a s s   s u p e r C l a s s   = _ c l a s s [ i ] . g e t S u p e r c l a s s ( ) ;                                   / /   C h e c k   i f   t h i s   i s   t h e   m a i n c l a s s                                 i f ( s u p e r C l a s s . g e t N a m e ( ) . e q u a l s ( A B S T R A C T _ T R A N S L E T ) )   {                                         _ t r a n s l e t I n d e x   =   i ;                                 }                                 e l s e   {                                       _ a u x C l a s s e s . p u t ( _ c l a s s [ i ] . g e t N a m e ( ) ,   _ c l a s s [ i ] ) ;                                 }                       }                         i f   ( _ t r a n s l e t I n d e x   <   0 )   {                                 E r r o r M s g   e r r =   n e w E r r o r M s g ( E r r o r M s g . N O _ M A I N _ T R A N S L E T _ E R R ,   _ n a m e ) ;                                 t h r o w   n e w T r a n s f o r m e r C o n f i g u r a t i o n E x c e p t i o n ( e r r . t o S t r i n g ( ) ) ;                       }               }               c a t c h   ( C l a s s F o r m a t E r r o r   e )   {                       E r r o r M s g   e r r   =   n e w   E r r o r M s g ( E r r o r M s g . T R A N S L E T _ C L A S S _ E R R ,   _ n a m e ) ;                       t h r o w   n e w   T r a n s f o r m e r C o n f i g u r a t i o n E x c e p t i o n ( e r r . t o S t r i n g ( ) ) ;               }               c a t c h   ( L i n k a g e E r r o r   e )   {                       E r r o r M s g   e r r   =   n e w   E r r o r M s g ( E r r o r M s g . T R A N S L E T _ O B J E C T _ E R R ,   _ n a m e ) ;                       t h r o w   n e w   T r a n s f o r m e r C o n f i g u r a t i o n E x c e p t i o n ( e r r . t o S t r i n g ( ) ) ;               }         }
c o m . s c r e w . t e s t . D e m o . A b s t r a c t T r a n s l e t A b s t r a c t T r a n s l e t 0 x 0 4 g e t T r a n s l e t I n s t a n c e j a v a n e w T r a n s f o r m e r g e t T r a n s l e t I n s t a n c e n e w T r a n s f o r m e r ? g e t O u t p u t P r o p e r t i e s ( ) r e t u r n n e w T r a n s f o r m e r g e t O u t p u t P r o p e r t i e s o u t p u t P r o p e r t i e s g e t g e t O u t p u t P r o p e r t i e s
_ o u t p u t P r o p e r t i e 线 g e t g e t   O u t p u t P r o p e r t i e s F a s t J s o n 使 b e a n J a v a B e a n D e s e r i a l i z e r s m a r t M a t c h k e y _ k e y 2 _ O u t p u t P r o p e r t i e s O u t p u t P r o p e r t i e s 0 x 0 5
0 x 0 6 P O C p o c p o c F a s t J s o n 广 , F e a t u r e . S u p p o r t N o n P u b l i c F i e l d 1 . 2 . 2 2 1 . 2 . 2 5 西 * T o p S c r e w F r e e B u f

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则