[1118] 2020-09-15_ThinkPHP3.xkey可控注入漏洞

文档创建者:s7ckTeam
浏览次数:1
最后更新:2025-01-16
2020-09-15_ThinkPHP3.xkey可控注入漏洞 T h i n k P H P 3 . x   k e y C h a B u g   2 0 2 0 - 0 9 - 1 5   p a r s e W h e r e :   . 1 .   p r o t e c t e d   f u n c t i o n   p a r s e W h e r e ( $ w h e r e )   { 2 .           $ w h e r e S t r   =   ' ' ; 3 .           i f ( i s _ s t r i n g ( $ w h e r e ) )   { 4 .                   / /   使 5 .                   $ w h e r e S t r   =   $ w h e r e ; 6 .           } e l s e {   / /   使 7 .                   $ o p e r a t e     =   i s s e t ( $ w h e r e [ ' _ l o g i c ' ] ) ? s t r t o u p p e r ( $ w h e r e [ ' _ l o g i c ' ] ) : ' ' ; 8 .                   i f ( i n _ a r r a y ( $ o p e r a t e , a r r a y ( ' A N D ' , ' O R ' , ' X O R ' ) ) ) { 9 .                           / /       O R   X O R   A N D   N O T 1 0 .                           $ o p e r a t e         =       '   ' . $ o p e r a t e . '   ' ; 1 1 .                           u n s e t ( $ w h e r e [ ' _ l o g i c ' ] ) ; 1 2 .                   } e l s e { 1 3 .                           / /     A N D   1 4 .                           $ o p e r a t e         =       '   A N D   ' ; 1 5 .                   } 1 6 .                   f o r e a c h   ( $ w h e r e   a s   $ k e y = > $ v a l ) { 1 7 .                           i f ( i s _ n u m e r i c ( $ k e y ) ) { 1 8 .                                   $ k e y     =   ' _ c o m p l e x ' ; 1 9 .                           } 2 0 .                           i f ( 0 = = = s t r p o s ( $ k e y , ' _ ' ) )   { 2 1 .                                   / /   2 2 .                                   $ w h e r e S t r       . =   $ t h i s - > p a r s e T h i n k W h e r e ( $ k e y , $ v a l ) ; 2 3 .                           } e l s e {
2 4 .                                   $ m u l t i     =   i s _ a r r a y ( $ v a l )   & &     i s s e t ( $ v a l [ ' _ m u l t i ' ] ) ; 2 5 .                                   $ k e y         =   t r i m ( $ k e y ) ; 2 6 .                                   i f ( s t r p o s ( $ k e y , ' | ' ) )   {   / /     n a m e | t i t l e | n i c k n a m e   2 7 .                                           $ a r r a y   =     e x p l o d e ( ' | ' , $ k e y ) ; 2 8 .                                           $ s t r       =     a r r a y ( ) ; 2 9 .                                           f o r e a c h   ( $ a r r a y   a s   $ m = > $ k ) { 3 0 .                                                   $ v   =     $ m u l t i ? $ v a l [ $ m ] : $ v a l ; 3 1 .                                                   $ s t r [ ]       =   $ t h i s - > p a r s e W h e r e I t e m ( $ t h i s - > p a r s e K e y ( $ k ) , $ v ) ; 3 2 .                                           } 3 3 .                                           $ w h e r e S t r   . =   ' (   ' . i m p l o d e ( '   O R   ' , $ s t r ) . '   ) ' ; 3 4 .                                   } e l s e i f ( s t r p o s ( $ k e y , ' & ' ) ) { 3 5 .                                           $ a r r a y   =     e x p l o d e ( ' & ' , $ k e y ) ; 3 6 .                                           $ s t r       =     a r r a y ( ) ; 3 7 .                                           f o r e a c h   ( $ a r r a y   a s   $ m = > $ k ) { 3 8 .                                                   $ v   =     $ m u l t i ? $ v a l [ $ m ] : $ v a l ; 3 9 .                                                   $ s t r [ ]       =   ' ( ' . $ t h i s - > p a r s e W h e r e I t e m ( $ t h i s - > p a r s e K e y ( $ k ) , $ v ) . ' ) ' ; 4 0 .                                           } 4 1 .                                           $ w h e r e S t r   . =   ' (   ' . i m p l o d e ( '   A N D   ' , $ s t r ) . '   ) ' ; 4 2 .                                   } e l s e { 4 3 .                                           $ w h e r e S t r   . =   $ t h i s - > p a r s e W h e r e I t e m ( $ t h i s - > p a r s e K e y ( $ k e y ) , $ v a l ) ; 4 4 .                                   } 4 5 .                           } 4 6 .                           $ w h e r e S t r   . =   $ o p e r a t e ; 4 7 .                   } 4 8 .                   $ w h e r e S t r   =   s u b s t r ( $ w h e r e S t r , 0 , - s t r l e n ( $ o p e r a t e ) ) ; 4 9 .           } 5 0 .           r e t u r n   e m p t y ( $ w h e r e S t r ) ? ' ' : '   W H E R E   ' . $ w h e r e S t r ; 5 1 .   } 1 .   i f ( 0 = = = s t r p o s ( $ k e y , ' _ ' ) )   { 2 .           $ w h e r e S t r       . =   $ t h i s - > p a r s e T h i n k W h e r e ( $ k e y , $ v a l ) ; 3 .   }
k e y p a r s e T h i n k W h e r e : $ k e y _ s t r i n g v a l u e w h e r e S t r c a s e 1 .   p r o t e c t e d   f u n c t i o n   p a r s e T h i n k W h e r e ( $ k e y , $ v a l )   { 2 .           $ w h e r e S t r       =   ' ' ; 3 .           s w i t c h ( $ k e y )   { 4 .                   c a s e   ' _ s t r i n g ' : 5 .                           / /   6 .                           $ w h e r e S t r   =   $ v a l ; 7 .                           b r e a k ; 8 .                   c a s e   ' _ c o m p l e x ' : 9 .                           / /   1 0 .                           $ w h e r e S t r   =   s u b s t r ( $ t h i s - > p a r s e W h e r e ( $ v a l ) , 6 ) ; 1 1 .                           b r e a k ; 1 2 .                   c a s e   ' _ q u e r y ' : 1 3 .                           / /   1 4 .                           p a r s e _ s t r ( $ v a l , $ w h e r e ) ; 1 5 .                           i f ( i s s e t ( $ w h e r e [ ' _ l o g i c ' ] ) )   { 1 6 .                                   $ o p       =     '   ' . s t r t o u p p e r ( $ w h e r e [ ' _ l o g i c ' ] ) . '   ' ; 1 7 .                                   u n s e t ( $ w h e r e [ ' _ l o g i c ' ] ) ; 1 8 .                           } e l s e { 1 9 .                                   $ o p       =     '   A N D   ' ; 2 0 .                           } 2 1 .                           $ a r r a y       =     a r r a y ( ) ; 2 2 .                           f o r e a c h   ( $ w h e r e   a s   $ f i e l d = > $ d a t a ) 2 3 .                                   $ a r r a y [ ]   =   $ t h i s - > p a r s e K e y ( $ f i e l d ) . '   =   ' . $ t h i s - > p a r s e V a l u e ( $ d a t a ) ; 2 4 .                           $ w h e r e S t r       =   i m p l o d e ( $ o p , $ a r r a y ) ; 2 5 .                           b r e a k ; 2 6 .           } 2 7 .           r e t u r n   ' (   ' . $ w h e r e S t r . '   ) ' ; 2 8 .   }
k e y k e y c m s T h i n k c m f d e m o P O S T : : 1 .   $ d a t a = a r r a y ( ) ; 2 .   f o r e a c h ( $ _ P O S T   a s   $ k e y   = >   $ v a l u e ) { 3 .           $ d a t a [ $ k e y ] = $ v a l u e ; 4 .   } 5 .   $ v a l u   =   $ U s e r - > w h e r e ( $ d a t a ) - > s e l e c t ( ) ; 1 .   _ s t r i n g = I d % 3 d 1 )   a n d   1 = 1   - -   - a
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则