[19535] 2019-10-08_CTF丨LinuxPwn入门教程:针对函数重定位流程的相关测试(上)

文档创建者:s7ckTeam
浏览次数:2
最后更新:2025-01-18
2019-10-08_CTF丨LinuxPwn入门教程:针对函数重定位流程的相关测试(上) C T F L i n u x   P w n i   2 0 1 9 - 1 0 - 0 8 L i n u x   P w n i P w n L i n u x   P w n i 3 8 6 / a m d 6 4 L i n u x   P w n P w n D o c k e r p y t h o n i L i n u x   P w n 1 1 1 5 g o t p l t g o t p l t r e t 2 d l - r e s o l v e ~ / X M A N   2 0 1 6 - l e v e l 3 / l e v e l 3 m a i n v u l n e r a b l e _ f u n c t i o n w r i t e c a l l   _ w r i t e c a l l   _ r e a d c a l l   _ w r i t e
F 7 E I P . p l t j m p p u s h   1 8 h ;   j m p l o c _ 8 0 4 8 3 0 0 F 7 j m p   l o c _ 8 0 4 8 3 0 0 p u s h j m p . p l t j m p l d _ 2 . 2 4 . s o l o c _ F 7 F 5 D 0 1 0 j m p   d s : o f f _ 8 0 4 a 0 0 8 F 7 F 5 D 0 1 0 j m p 0 x 0 8 0 4 a 0 0 8 0 x 0 8 0 4 a 0 0 8 j m p d s : o f f _ 8 0 4 a 0 1 8 0 x 0 8 0 4 a 0 1 8 . O K
c a l l   _ w r i t e   F 7 j m p   d s : o f f _ 8 0 4 a 0 1 8 . g o t . p l t l o c _ 8 0 4 8 3 4 6 D A T A   X R E F : _ w r i t e r .   w r i t e r e a d j m p   d s : 0 f f _ 8 0 4 a 0 0 8 0 x 0 8 0 4 a 0 0 8 l o c _ F 7 F 5 D 0 1 0 e i p F 8 r e t n   0 C h w r i t e c a l l   w r i t e
F 9 c a l l   _ r e a d a d d r 1 p u s h   n u m c a l l   _ r e a d p u s h 0 c a l l   _ w r i t e F 7 j m p   d s : 0 f f _ 8 0 4 a 0 1 8 p u s h   1 8 h . g o t . p l t w r i t e
l i b c . s o 0 x 1 0 0 0 A l i b c . s o l i b a , s o ,   l i b b . s o ,   l i b c . s o l i b y . s o ,   l i b z . s o B 0 x 1 0 0 0 l i b a . s o c a l l   r e a d r e a d r e a d C P U r e a d g o t G l o b a l   O f f s e t   T a b l e p l t P r o c e d u r e   L i n k a g e   T a b l e g o t p l t c a l l E I P p l t j m p j m p g o t j m p p l t w r i t e 1 8 h , r e a d 0 p u s h   g o t [ 1 ] g o t [ 2 ] g o t c a l l 使 E I P p l t j m p g o t g o t p l t r e t 2 d l - r e s o l v e 使 g o t h t t p s : / / f t p . g n u . o r g / g n u / g l i b c / g l i b c g l i b c - 2 . 2 7 l d _ 2 . 2 4 . s o g l i b c / s y s d e p s / i 3 8 6 / d l - t r a m p o l i n e . S 6 4 i 3 8 6 x 8 6 _ 6 4
G N U I D A _ d l _ f i x u p g l i b c / e l f / d l - r u n t i m e . c                 . t e x t                                 . g l o b l   _ d l _ r u n t i m e _ r e s o l v e                                 . t y p e   _ d l _ r u n t i m e _ r e s o l v e ,   @ f u n c t i o n                                 c f i _ s t a r t p r o c                                 . a l i g n   1 6                 _ d l _ r u n t i m e _ r e s o l v e :                                 c f i _ a d j u s t _ c f a _ o f f s e t   ( 8 )                                 p u s h l   % e a x                                 #   P r e s e r v e   r e g i s t e r s   o t h e r w i s e   c l o b b e r e d .                                 c f i _ a d j u s t _ c f a _ o f f s e t   ( 4 )                                 p u s h l   % e c x                                 c f i _ a d j u s t _ c f a _ o f f s e t   ( 4 )                                 p u s h l   % e d x                                 c f i _ a d j u s t _ c f a _ o f f s e t   ( 4 )                                 m o v l   1 6 ( % e s p ) ,   % e d x                 #   C o p y   a r g s   p u s h e d   b y   P L T   i n   r e g i s t e r .     N o t e                                 m o v l   1 2 ( % e s p ) ,   % e a x                 #   t h a t   ` f i x u p '   t a k e s   i t s   p a r a m e t e r s   i n   r e g s .                                 c a l l   _ d l _ f i x u p                                 #   C a l l   r e s o l v e r .                                 p o p l   % e d x                                 #   G e t   r e g i s t e r   c o n t e n t   b a c k .                                 c f i _ a d j u s t _ c f a _ o f f s e t   ( - 4 )                                 m o v l   ( % e s p ) ,   % e c x                                 m o v l   % e a x ,   ( % e s p )                 #   S t o r e   t h e   f u n c t i o n   a d d r e s s .                                 m o v l   4 ( % e s p ) ,   % e a x                                 r e t   $ 1 2                                                 #   J u m p   t o   f u n c t i o n   a d d r e s s .                                 c f i _ e n d p r o c                                 . s i z 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
_ d l _ f i x u p l i n k _ m a p l p u s h g o t [ 1 ] r e l o c _ a r g p u s h l i n k _ m a p   * r e l o c _ a r g r e l o c _ a r g r e l o c _ a r g D _ P T R g l i b c / s y s d e p s / g e n e r i c / l d s o d e f s . h l i n k _ m a p s y m t a b ,   s t r t a b r e l o c _ o f f s e t P L T R E L r e l o c s y m t a b s y m r e l _ a d d r . g l i b c / e l f / e l f . h 3 2 _ d l _ f i x u p   ( #   i f d e f   E L F _ M A C H I N E _ R U N T I M E _ F I X U P _ A R G S                       E L F _ M A C H I N E _ R U N T I M E _ F I X U P _ A R G S , #   e n d i f                       s t r u c t   l i n k _ m a p   * _ _ u n b o u n d e d   l ,   E l f W ( W o r d )   r e l o c _ a r g ) # i f n d e f   r e l o c _ o f f s e t #   d e f i n e   r e l o c _ o f f s e t   r e l o c _ a r g #   d e f i n e   r e l o c _ i n d e x     r e l o c _ a r g   /   s i z e o f   ( P L T R E L ) # e n d i f r e l o c _ o f f s e t     c o n s t   E l f W ( S y m )   * c o n s t   s y m t a b         =   ( c o n s t   v o i d   * )   D _ P T R   ( l ,   l _ i n f o [ D T _ S Y M T A B ] ) ;     c o n s t   c h a r   * s t r t a b   =   ( c o n s t   v o i d   * )   D _ P T R   ( l ,   l _ i n f o [ D T _ S T R T A B ] ) ;     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 ) ;     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 ) ] ;     c o n s t   E l f W ( S y m )   * r e f s y m   =   s y m ;     v o i d   * c o n s t   r e l _ a d d r   =   ( v o i d   * ) ( l - > l _ a d d r   +   r e l o c - > r _ o f f s e t ) ;     l o o k u p _ t   r e s u l t ;     D L _ F I X U P _ V A L U E _ T Y P E   v a l u e ; t y p e d e f   s t r u c t {     E l f 3 2 _ A d d r                 r _ o f f s e t ;                                 / *   A d d r e s s   * /     E l f 3 2 _ W o r d                 r _ i n f o ;                                                 / *   R e l o c a t i o n   t y p e   a n d   s y m b o l   i n d e x   * / }   E l f 3 2 _ R e l ;
r _ o f f s e t r e l _ a d d r _ d l _ f i x u p r e t u r n e l f _ m a c h i n e _ f i x u p _ p l t r _ o f f s e t g o t r _ i n f o s y m s y m _ d l _ l o o k u p _ s y m b o l _ x D L _ F I X U P _ M A K E _ V A L U E r e l o c - > r _ i n f o E L F W 3 2 6 4 R _ T Y P E R _ S Y M 使 r e l o c - > r _ i n f o v e r s i o n r e l o c - > r _ i n f o 2 4 n d x v e r s i o n   =   & l - > l _ v e r s i o n s [ n d x ] 使 s y m   s y m 使 E L F W ( R _ S Y M ) ( r e l o c - > r _ i n f o ) E l f w ( S y m ) E l f 3 2 _ S y m g l i b c / e l f / e l f . h   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 ) ; # d e f i n e   E L F 3 2 _ R _ S Y M ( i )   ( ( i ) > > 8 ) # d e f i n e   E L F 3 2 _ R _ T Y P E ( i )   ( ( u n s i g n e d   c h a r ) ( i ) ) # d e f i n e   E L F 3 2 _ R _ I N F O ( s ,   t )   ( ( ( s ) < < 8 )   +   ( u n s i g n e d   c h a r ) ( t ) ) 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 7 .             i f   ( l - > l _ i n f o [ V E R S Y M I D X   ( D T _ V E R S Y M ) ]   ! =   N U L L )                 {                     c o n s t   E l f W ( H a l f )   * v e r n u m   =                         ( c o n s t   v o i d   * )   D _ P T R   ( l ,   l _ i n f o [ V E R S Y M I D X   ( D T _ V E R S Y M ) ] ) ;                     E l f W ( H a l f )   n d x   =   v e r n u m [ E L F W ( R _ S Y M )   ( r e l o c - > r _ i n f o ) ]   &   0 x 7 f f f ;                     v e r s i o n   =   & l - > l _ v e r s i o n s [ n d x ] ;                     i f   ( v e r s i o n - > h a s h   = =   0 )                         v e r s i o n   =   N U L L ;                 } 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 ) ] ;
s t _ o t h e r s t _ n a m e i f _ d l _ l o o k u p _ s y m b o l _ x E L F W ( S T _ V I S I B I L I T Y ) d e f i n e   E L F 3 2 _ S T _ V I S I B I L I T Y ( o )                 ( ( o )   &   0 x 0 3 ) g l i b c / e l f / e l f . h s y m - > s t _ o t h e r 0 _ 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 s y m s t r t a b s t r t a b s t r t a b E L F . s y m t a b . d e b u g r e a d e l f 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   * /     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 ;     i f   ( _ _ b u i l t i n _ e x p e c t   ( E L F W ( S T _ V I S I B I L I T Y )   ( s y m - > s t _ o t h e r ) ,   0 )   = =   0 )         {                         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 a d w r i t e _ _ l i b c _ s t a r t _ m a i n _ d l _ l o o k u p _ s y m b o l _ x r e l o c _ a r g _ d l _ l o o k u p _ s y m b o l _ x   ( c o n s t   c h a r   * u n d e f _ n a m e ,   s t r u c t   l i n k _ m a p   * u n d e f _ m a p ,                                           c o n s t   E l f W ( S y m )   * * r e f ,                                           s t r u c t   r _ s c o p e _ e l e m   * s y m b o l _ s c o p e [ ] ,                                           c o n s t   s t r u c t   r _ f o u n d _ v e r s i o n   * v e r s i o n ,                                           i n t   t y p e _ c l a s s ,   i n t   f l a g s ,   s t r u c t   l i n k _ m a p   * s k i p _ m a p ) {     c o n s t   u i n t _ f a s t 3 2 _ t   n e w _ h a s h   =   d l _ n e w _ h a s h   ( u n d e f _ n a m e ) ;     u n s i g n e d   l o n g   i n t   o l d _ h a s h   =   0 x f f f f f f f f ;     s t r u c t   s y m _ v a l   c u r r e n t _ v a l u e   =   {   N U L L ,   N U L L   } ;     . . . . . . . . . . . . .     / *   S e a r c h   t h e   r e l e v a n t   l o a d e d   o b j e c t s   f o r   a   d e f i n i t i o n .     * /     f o r   ( s i z e _ t   s t a r t   =   i ;   * s c o p e   ! =   N U L L ;   s t a r t   =   0 ,   + + s c o p e )
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则